mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 10:04:49 +00:00
Replaced linux io calls
Removed references to linux io headers svn path=/trunk/; revision=1416
This commit is contained in:
parent
dab151f2f1
commit
1c236a2886
12 changed files with 21 additions and 391 deletions
|
@ -1,7 +1,6 @@
|
||||||
#include "../vgaddi.h"
|
#include "../vgaddi.h"
|
||||||
#include "../vgavideo/vgavideo.h"
|
#include "../vgavideo/vgavideo.h"
|
||||||
|
|
||||||
#include "../../../../ntoskrnl/include/internal/i386/io.h"
|
|
||||||
|
|
||||||
BOOL VGADDILineTo(SURFOBJ *Surface, CLIPOBJ *Clip, BRUSHOBJ *Brush,
|
BOOL VGADDILineTo(SURFOBJ *Surface, CLIPOBJ *Clip, BRUSHOBJ *Brush,
|
||||||
LONG x1, LONG y1, LONG x2, LONG y2,
|
LONG x1, LONG y1, LONG x2, LONG y2,
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
#include "../vgavideo/vgavideo.h"
|
#include "../vgavideo/vgavideo.h"
|
||||||
#include "brush.h"
|
#include "brush.h"
|
||||||
|
|
||||||
#include "../../../../ntoskrnl/include/internal/i386/io.h"
|
|
||||||
|
|
||||||
BOOL VGADDIFillSolid(SURFOBJ *Surface, RECTL Dimensions, ULONG iColor)
|
BOOL VGADDIFillSolid(SURFOBJ *Surface, RECTL Dimensions, ULONG iColor)
|
||||||
{
|
{
|
||||||
|
@ -18,16 +17,16 @@ BOOL VGADDIFillSolid(SURFOBJ *Surface, RECTL Dimensions, ULONG iColor)
|
||||||
ASSIGNVP4(x, y, vpX)
|
ASSIGNVP4(x, y, vpX)
|
||||||
get_masks(x, w);
|
get_masks(x, w);
|
||||||
byte_per_line = SCREEN_X >> 3;
|
byte_per_line = SCREEN_X >> 3;
|
||||||
outb(GRA_I, 0x05); /* write mode 2 */
|
WRITE_PORT_UCHAR((PUCHAR)GRA_I, 0x05); /* write mode 2 */
|
||||||
saved_GC_mode = inb(GRA_D);
|
saved_GC_mode = READ_PORT_UCHAR((PUCHAR)GRA_D);
|
||||||
outb(GRA_D, 0x02);
|
WRITE_PORT_UCHAR((PUCHAR)GRA_D, 0x02);
|
||||||
outb(GRA_I, 0x03); /* replace */
|
WRITE_PORT_UCHAR((PUCHAR)GRA_I, 0x03); /* replace */
|
||||||
saved_GC_fun = inb(GRA_D);
|
saved_GC_fun = READ_PORT_UCHAR((PUCHAR)GRA_D);
|
||||||
outb(GRA_D, 0x00);
|
WRITE_PORT_UCHAR((PUCHAR)GRA_D, 0x00);
|
||||||
outb(GRA_I, 0x08); /* bit mask */
|
WRITE_PORT_UCHAR((PUCHAR)GRA_I, 0x08); /* bit mask */
|
||||||
saved_GC_mask = inb(GRA_D);
|
saved_GC_mask = READ_PORT_UCHAR((PUCHAR)GRA_D);
|
||||||
if (leftMask) {
|
if (leftMask) {
|
||||||
outb(GRA_D, leftMask); /* bit mask */
|
WRITE_PORT_UCHAR((PUCHAR)GRA_D, leftMask); /* bit mask */
|
||||||
/* write to video */
|
/* write to video */
|
||||||
vp = vpX;
|
vp = vpX;
|
||||||
for (i=h; i>0; i--) {
|
for (i=h; i>0; i--) {
|
||||||
|
@ -37,7 +36,7 @@ BOOL VGADDIFillSolid(SURFOBJ *Surface, RECTL Dimensions, ULONG iColor)
|
||||||
vpX++;
|
vpX++;
|
||||||
}
|
}
|
||||||
if (byteCounter) {
|
if (byteCounter) {
|
||||||
outb(GRA_D, 0xff); /* bit mask */
|
WRITE_PORT_UCHAR((PUCHAR)GRA_D, 0xff); /* bit mask */
|
||||||
/* write to video */
|
/* write to video */
|
||||||
vp = vpX;
|
vp = vpX;
|
||||||
for (i=h; i>0; i--) {
|
for (i=h; i>0; i--) {
|
||||||
|
@ -47,7 +46,7 @@ BOOL VGADDIFillSolid(SURFOBJ *Surface, RECTL Dimensions, ULONG iColor)
|
||||||
vpX += byteCounter;
|
vpX += byteCounter;
|
||||||
}
|
}
|
||||||
if (rightMask) {
|
if (rightMask) {
|
||||||
outb(GRA_D, rightMask); /* bit mask */
|
WRITE_PORT_UCHAR((PUCHAR)GRA_D, rightMask); /* bit mask */
|
||||||
/* write to video */
|
/* write to video */
|
||||||
vp = vpX;
|
vp = vpX;
|
||||||
for (i=h; i>0; i--) {
|
for (i=h; i>0; i--) {
|
||||||
|
@ -56,11 +55,11 @@ BOOL VGADDIFillSolid(SURFOBJ *Surface, RECTL Dimensions, ULONG iColor)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* reset GC register */
|
/* reset GC register */
|
||||||
outb(GRA_D, saved_GC_mask);
|
WRITE_PORT_UCHAR((PUCHAR)GRA_D, saved_GC_mask);
|
||||||
outb(GRA_I, 0x03);
|
WRITE_PORT_UCHAR((PUCHAR)GRA_I, 0x03);
|
||||||
outb(GRA_D, saved_GC_fun);
|
WRITE_PORT_UCHAR((PUCHAR)GRA_D, saved_GC_fun);
|
||||||
outb(GRA_I, 0x05);
|
WRITE_PORT_UCHAR((PUCHAR)GRA_I, 0x05);
|
||||||
outb(GRA_D, saved_GC_mode);
|
WRITE_PORT_UCHAR((PUCHAR)GRA_D, saved_GC_mode);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -129,7 +129,7 @@ VOID vgaPreCalc()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void
|
||||||
get_masks(int x, int w)
|
get_masks(int x, int w)
|
||||||
{
|
{
|
||||||
register int tmp;
|
register int tmp;
|
||||||
|
|
|
@ -65,3 +65,4 @@ static unsigned char leftMask;
|
||||||
static int byteCounter;
|
static int byteCounter;
|
||||||
static unsigned char rightMask;
|
static unsigned char rightMask;
|
||||||
|
|
||||||
|
void get_masks(int x, int w);
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
#include <ntddk.h>
|
#include <ntddk.h>
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
#include "vgavideo.h"
|
#include "vgavideo.h"
|
||||||
#include "../../../../ntoskrnl/include/internal/i386/io.h"
|
|
||||||
|
|
||||||
void outxay(USHORT ad, UCHAR x, UCHAR y)
|
void outxay(USHORT ad, UCHAR x, UCHAR y)
|
||||||
{
|
{
|
||||||
|
|
|
@ -12,7 +12,6 @@
|
||||||
/* INCLUDES *****************************************************************/
|
/* INCLUDES *****************************************************************/
|
||||||
|
|
||||||
#include <ddk/ntddk.h>
|
#include <ddk/ntddk.h>
|
||||||
#include <internal/hal/io.h>
|
|
||||||
#include <internal/ps.h>
|
#include <internal/ps.h>
|
||||||
#include <internal/io.h>
|
#include <internal/io.h>
|
||||||
#include <internal/mm.h>
|
#include <internal/mm.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: halinit.c,v 1.15 2000/08/30 19:33:28 dwelch Exp $
|
/* $Id: halinit.c,v 1.16 2000/10/22 13:27:34 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -14,7 +14,6 @@
|
||||||
#include <ddk/ntddk.h>
|
#include <ddk/ntddk.h>
|
||||||
#include <internal/hal.h>
|
#include <internal/hal.h>
|
||||||
#include <internal/ntoskrnl.h>
|
#include <internal/ntoskrnl.h>
|
||||||
#include <internal/halio.h>
|
|
||||||
|
|
||||||
#define NDEBUG
|
#define NDEBUG
|
||||||
#include <internal/debug.h>
|
#include <internal/debug.h>
|
||||||
|
|
|
@ -1,167 +0,0 @@
|
||||||
#ifndef _ASM_IO_H
|
|
||||||
#define _ASM_IO_H
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file contains the definitions for the x86 IO instructions
|
|
||||||
* inb/inw/inl/outb/outw/outl and the "string versions" of the same
|
|
||||||
* (insb/insw/insl/outsb/outsw/outsl). You can also use "pausing"
|
|
||||||
* versions of the single-IO instructions (inb_p/inw_p/..).
|
|
||||||
*
|
|
||||||
* This file is not meant to be obfuscating: it's just complicated
|
|
||||||
* to (a) handle it all in a way that makes gcc able to optimize it
|
|
||||||
* as well as possible and (b) trying to avoid writing the same thing
|
|
||||||
* over and over again with slight variations and possibly making a
|
|
||||||
* mistake somewhere.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Thanks to James van Artsdalen for a better timing-fix than
|
|
||||||
* the two short jumps: using outb's to a nonexistent port seems
|
|
||||||
* to guarantee better timings even on fast machines.
|
|
||||||
*
|
|
||||||
* On the other hand, I'd like to be sure of a non-existent port:
|
|
||||||
* I feel a bit unsafe about using 0x80 (should be safe, though)
|
|
||||||
*
|
|
||||||
* Linus
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef SLOW_IO_BY_JUMPING
|
|
||||||
#define __SLOW_DOWN_IO __asm__ __volatile__("jmp 1f\n1:\tjmp 1f\n1:")
|
|
||||||
#else
|
|
||||||
#define __SLOW_DOWN_IO __asm__ __volatile__("outb %al,$0x80")
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef REALLY_SLOW_IO
|
|
||||||
#define SLOW_DOWN_IO { __SLOW_DOWN_IO; __SLOW_DOWN_IO; __SLOW_DOWN_IO; __SLOW_DOWN_IO; }
|
|
||||||
#else
|
|
||||||
#define SLOW_DOWN_IO __SLOW_DOWN_IO
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Talk about misusing macros..
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define __OUT1(s,x) \
|
|
||||||
extern inline void __out##s(unsigned x value, unsigned short port) {
|
|
||||||
|
|
||||||
#define __OUT2(s,s1,s2) \
|
|
||||||
__asm__ __volatile__ ("out" #s " %" s1 "0,%" s2 "1"
|
|
||||||
|
|
||||||
#define __OUT(s,s1,x) \
|
|
||||||
__OUT1(s,x) __OUT2(s,s1,"w") : : "a" (value), "d" (port)); } \
|
|
||||||
__OUT1(s##c,x) __OUT2(s,s1,"") : : "a" (value), "id" (port)); } \
|
|
||||||
__OUT1(s##_p,x) __OUT2(s,s1,"w") : : "a" (value), "d" (port)); SLOW_DOWN_IO; } \
|
|
||||||
__OUT1(s##c_p,x) __OUT2(s,s1,"") : : "a" (value), "id" (port)); SLOW_DOWN_IO; }
|
|
||||||
|
|
||||||
#define __IN1(s) \
|
|
||||||
extern inline RETURN_TYPE __in##s(unsigned short port) { RETURN_TYPE _v;
|
|
||||||
|
|
||||||
#define __IN2(s,s1,s2) \
|
|
||||||
__asm__ __volatile__ ("in" #s " %" s2 "1,%" s1 "0"
|
|
||||||
|
|
||||||
#define __IN(s,s1,i...) \
|
|
||||||
__IN1(s) __IN2(s,s1,"w") : "=a" (_v) : "d" (port) ,##i ); return _v; } \
|
|
||||||
__IN1(s##c) __IN2(s,s1,"") : "=a" (_v) : "id" (port) ,##i ); return _v; } \
|
|
||||||
__IN1(s##_p) __IN2(s,s1,"w") : "=a" (_v) : "d" (port) ,##i ); SLOW_DOWN_IO; return _v; } \
|
|
||||||
__IN1(s##c_p) __IN2(s,s1,"") : "=a" (_v) : "id" (port) ,##i ); SLOW_DOWN_IO; return _v; }
|
|
||||||
|
|
||||||
#define __INS(s) \
|
|
||||||
extern inline void ins##s(unsigned short port, void * addr, unsigned long count) \
|
|
||||||
{ __asm__ __volatile__ ("cld ; rep ; ins" #s \
|
|
||||||
: "=D" (addr), "=c" (count) : "d" (port),"0" (addr),"1" (count)); }
|
|
||||||
|
|
||||||
#define __OUTS(s) \
|
|
||||||
extern inline void outs##s(unsigned short port, const void * addr, unsigned long count) \
|
|
||||||
{ __asm__ __volatile__ ("cld ; rep ; outs" #s \
|
|
||||||
: "=S" (addr), "=c" (count) : "d" (port),"0" (addr),"1" (count)); }
|
|
||||||
|
|
||||||
#define RETURN_TYPE unsigned char
|
|
||||||
/* __IN(b,"b","0" (0)) */
|
|
||||||
__IN(b,"")
|
|
||||||
#undef RETURN_TYPE
|
|
||||||
#define RETURN_TYPE unsigned short
|
|
||||||
/* __IN(w,"w","0" (0)) */
|
|
||||||
__IN(w,"")
|
|
||||||
#undef RETURN_TYPE
|
|
||||||
#define RETURN_TYPE unsigned int
|
|
||||||
__IN(l,"")
|
|
||||||
#undef RETURN_TYPE
|
|
||||||
|
|
||||||
__OUT(b,"b",char)
|
|
||||||
__OUT(w,"w",short)
|
|
||||||
__OUT(l,,int)
|
|
||||||
|
|
||||||
__INS(b)
|
|
||||||
__INS(w)
|
|
||||||
__INS(l)
|
|
||||||
|
|
||||||
__OUTS(b)
|
|
||||||
__OUTS(w)
|
|
||||||
__OUTS(l)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Note that due to the way __builtin_constant_p() works, you
|
|
||||||
* - can't use it inside a inline function (it will never be true)
|
|
||||||
* - you don't have to worry about side effects within the __builtin..
|
|
||||||
*/
|
|
||||||
#define outb(port,val) \
|
|
||||||
((__builtin_constant_p((port)) && (port) < 256) ? \
|
|
||||||
__outbc((val),(port)) : \
|
|
||||||
__outb((val),(port)))
|
|
||||||
|
|
||||||
#define inb(port) \
|
|
||||||
((__builtin_constant_p((port)) && (port) < 256) ? \
|
|
||||||
__inbc(port) : \
|
|
||||||
__inb(port))
|
|
||||||
|
|
||||||
#define outb_p(port,val) \
|
|
||||||
((__builtin_constant_p((port)) && (port) < 256) ? \
|
|
||||||
__outbc_p((val),(port)) : \
|
|
||||||
__outb_p((val),(port)))
|
|
||||||
|
|
||||||
#define inb_p(port) \
|
|
||||||
((__builtin_constant_p((port)) && (port) < 256) ? \
|
|
||||||
__inbc_p(port) : \
|
|
||||||
__inb_p(port))
|
|
||||||
|
|
||||||
#define outw(port,val) \
|
|
||||||
((__builtin_constant_p((port)) && (port) < 256) ? \
|
|
||||||
__outwc((val),(port)) : \
|
|
||||||
__outw((val),(port)))
|
|
||||||
|
|
||||||
#define inw(port) \
|
|
||||||
((__builtin_constant_p((port)) && (port) < 256) ? \
|
|
||||||
__inwc(port) : \
|
|
||||||
__inw(port))
|
|
||||||
|
|
||||||
#define outw_p(port,val) \
|
|
||||||
((__builtin_constant_p((port)) && (port) < 256) ? \
|
|
||||||
__outwc_p((val),(port)) : \
|
|
||||||
__outw_p((val),(port)))
|
|
||||||
|
|
||||||
#define inw_p(port) \
|
|
||||||
((__builtin_constant_p((port)) && (port) < 256) ? \
|
|
||||||
__inwc_p(port) : \
|
|
||||||
__inw_p(port))
|
|
||||||
|
|
||||||
#define outl(port,val) \
|
|
||||||
((__builtin_constant_p((port)) && (port) < 256) ? \
|
|
||||||
__outlc((val),(port)) : \
|
|
||||||
__outl((val),(port)))
|
|
||||||
|
|
||||||
#define inl(port) \
|
|
||||||
((__builtin_constant_p((port)) && (port) < 256) ? \
|
|
||||||
__inlc(port) : \
|
|
||||||
__inl(port))
|
|
||||||
|
|
||||||
#define outl_p(port,val) \
|
|
||||||
((__builtin_constant_p((port)) && (port) < 256) ? \
|
|
||||||
__outlc_p((val),(port)) : \
|
|
||||||
__outl_p((val),(port)))
|
|
||||||
|
|
||||||
#define inl_p(port) \
|
|
||||||
((__builtin_constant_p((port)) && (port) < 256) ? \
|
|
||||||
__inlc_p(port) : \
|
|
||||||
__inl_p(port))
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,11 +0,0 @@
|
||||||
#ifndef __INCLUDE_INTERNAL_HALIO_H
|
|
||||||
#define __INCLUDE_INTERNAL_HALIO_H
|
|
||||||
|
|
||||||
#ifdef i386
|
|
||||||
#include <internal/i386/io.h>
|
|
||||||
#else
|
|
||||||
#error "Unknown processor"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -1,186 +0,0 @@
|
||||||
#ifndef _ASM_IO_H
|
|
||||||
#define _ASM_IO_H
|
|
||||||
|
|
||||||
#define outb(port, val) WRITE_PORT_UCHAR((PUCHAR)port, val)
|
|
||||||
#define outb_p(port, val) WRITE_PORT_UCHAR((PUCHAR)port, val)
|
|
||||||
#define outw(port, val) WRITE_PORT_USHORT((PUSHORT)port, val)
|
|
||||||
#define outw_p(port, val) WRITE_PORT_USHORT((PUSHORT)port, val)
|
|
||||||
#define outl(port, val) WRITE_PORT_ULONG((PULONG)port, val)
|
|
||||||
#define outl_p(port, val) WRITE_PORT_ULONG((PULONG)port, val)
|
|
||||||
|
|
||||||
#define inb(port) READ_PORT_UCHAR((PUCHAR)port)
|
|
||||||
#define inb_p(port) READ_PORT_UCHAR((PUCHAR)port)
|
|
||||||
#define inw(port) READ_PORT_USHORT((PUSHORT)port)
|
|
||||||
#define inw_p(port) READ_PORT_USHORT((PUSHORT)port)
|
|
||||||
#define inl(port) READ_PORT_ULONG((PULONG)port)
|
|
||||||
#define inl_p(port) READ_PORT_ULONG((PULONG)port)
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file contains the definitions for the x86 IO instructions
|
|
||||||
* inb/inw/inl/outb/outw/outl and the "string versions" of the same
|
|
||||||
* (insb/insw/insl/outsb/outsw/outsl). You can also use "pausing"
|
|
||||||
* versions of the single-IO instructions (inb_p/inw_p/..).
|
|
||||||
*
|
|
||||||
* This file is not meant to be obfuscating: it's just complicated
|
|
||||||
* to (a) handle it all in a way that makes gcc able to optimize it
|
|
||||||
* as well as possible and (b) trying to avoid writing the same thing
|
|
||||||
* over and over again with slight variations and possibly making a
|
|
||||||
* mistake somewhere.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Thanks to James van Artsdalen for a better timing-fix than
|
|
||||||
* the two short jumps: using outb's to a nonexistent port seems
|
|
||||||
* to guarantee better timings even on fast machines.
|
|
||||||
*
|
|
||||||
* On the other hand, I'd like to be sure of a non-existent port:
|
|
||||||
* I feel a bit unsafe about using 0x80 (should be safe, though)
|
|
||||||
*
|
|
||||||
* Linus
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef SLOW_IO_BY_JUMPING
|
|
||||||
#define __SLOW_DOWN_IO __asm__ __volatile__("jmp 1f\n1:\tjmp 1f\n1:")
|
|
||||||
#else
|
|
||||||
#define __SLOW_DOWN_IO __asm__ __volatile__("outb %al,$0x80")
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef REALLY_SLOW_IO
|
|
||||||
#define SLOW_DOWN_IO { __SLOW_DOWN_IO; __SLOW_DOWN_IO; __SLOW_DOWN_IO; __SLOW_DOWN_IO; }
|
|
||||||
#else
|
|
||||||
#define SLOW_DOWN_IO __SLOW_DOWN_IO
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Talk about misusing macros..
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define __OUT1(s,x) \
|
|
||||||
extern inline void __out##s(unsigned x value, unsigned short port) {
|
|
||||||
|
|
||||||
#define __OUT2(s,s1,s2) \
|
|
||||||
__asm__ __volatile__ ("out" #s " %" s1 "0,%" s2 "1"
|
|
||||||
|
|
||||||
#define __OUT(s,s1,x) \
|
|
||||||
__OUT1(s,x) __OUT2(s,s1,"w") : : "a" (value), "d" (port)); } \
|
|
||||||
__OUT1(s##c,x) __OUT2(s,s1,"") : : "a" (value), "id" (port)); } \
|
|
||||||
__OUT1(s##_p,x) __OUT2(s,s1,"w") : : "a" (value), "d" (port)); SLOW_DOWN_IO; } \
|
|
||||||
__OUT1(s##c_p,x) __OUT2(s,s1,"") : : "a" (value), "id" (port)); SLOW_DOWN_IO; }
|
|
||||||
|
|
||||||
#define __IN1(s) \
|
|
||||||
extern inline RETURN_TYPE __in##s(unsigned short port) { RETURN_TYPE _v;
|
|
||||||
|
|
||||||
#define __IN2(s,s1,s2) \
|
|
||||||
__asm__ __volatile__ ("in" #s " %" s2 "1,%" s1 "0"
|
|
||||||
|
|
||||||
#define __IN(s,s1,i...) \
|
|
||||||
__IN1(s) __IN2(s,s1,"w") : "=a" (_v) : "d" (port) ,##i ); return _v; } \
|
|
||||||
__IN1(s##c) __IN2(s,s1,"") : "=a" (_v) : "id" (port) ,##i ); return _v; } \
|
|
||||||
__IN1(s##_p) __IN2(s,s1,"w") : "=a" (_v) : "d" (port) ,##i ); SLOW_DOWN_IO; return _v; } \
|
|
||||||
__IN1(s##c_p) __IN2(s,s1,"") : "=a" (_v) : "id" (port) ,##i ); SLOW_DOWN_IO; return _v; }
|
|
||||||
|
|
||||||
#define __INS(s) \
|
|
||||||
extern inline void ins##s(unsigned short port, void * addr, unsigned long count) \
|
|
||||||
{ __asm__ __volatile__ ("cld ; rep ; ins" #s \
|
|
||||||
: "=D" (addr), "=c" (count) : "d" (port),"0" (addr),"1" (count)); }
|
|
||||||
|
|
||||||
#define __OUTS(s) \
|
|
||||||
extern inline void outs##s(unsigned short port, const void * addr, unsigned long count) \
|
|
||||||
{ __asm__ __volatile__ ("cld ; rep ; outs" #s \
|
|
||||||
: "=S" (addr), "=c" (count) : "d" (port),"0" (addr),"1" (count)); }
|
|
||||||
|
|
||||||
#define RETURN_TYPE unsigned char
|
|
||||||
/* __IN(b,"b","0" (0)) */
|
|
||||||
__IN(b,"")
|
|
||||||
#undef RETURN_TYPE
|
|
||||||
#define RETURN_TYPE unsigned short
|
|
||||||
/* __IN(w,"w","0" (0)) */
|
|
||||||
__IN(w,"")
|
|
||||||
#undef RETURN_TYPE
|
|
||||||
#define RETURN_TYPE unsigned int
|
|
||||||
__IN(l,"")
|
|
||||||
#undef RETURN_TYPE
|
|
||||||
|
|
||||||
__OUT(b,"b",char)
|
|
||||||
__OUT(w,"w",short)
|
|
||||||
__OUT(l,,int)
|
|
||||||
|
|
||||||
__INS(b)
|
|
||||||
__INS(w)
|
|
||||||
__INS(l)
|
|
||||||
|
|
||||||
__OUTS(b)
|
|
||||||
__OUTS(w)
|
|
||||||
__OUTS(l)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Note that due to the way __builtin_constant_p() works, you
|
|
||||||
* - can't use it inside a inline function (it will never be true)
|
|
||||||
* - you don't have to worry about side effects within the __builtin..
|
|
||||||
*/
|
|
||||||
#define outb(port,val) \
|
|
||||||
((__builtin_constant_p((port)) && (port) < 256) ? \
|
|
||||||
__outbc((val),(port)) : \
|
|
||||||
__outb((val),(port)))
|
|
||||||
|
|
||||||
#define inb(port) \
|
|
||||||
((__builtin_constant_p((port)) && (port) < 256) ? \
|
|
||||||
__inbc(port) : \
|
|
||||||
__inb(port))
|
|
||||||
|
|
||||||
#define outb_p(port,val) \
|
|
||||||
((__builtin_constant_p((port)) && (port) < 256) ? \
|
|
||||||
__outbc_p((val),(port)) : \
|
|
||||||
__outb_p((val),(port)))
|
|
||||||
|
|
||||||
#define inb_p(port) \
|
|
||||||
((__builtin_constant_p((port)) && (port) < 256) ? \
|
|
||||||
__inbc_p(port) : \
|
|
||||||
__inb_p(port))
|
|
||||||
|
|
||||||
#define outw(port,val) \
|
|
||||||
((__builtin_constant_p((port)) && (port) < 256) ? \
|
|
||||||
__outwc((val),(port)) : \
|
|
||||||
__outw((val),(port)))
|
|
||||||
|
|
||||||
#define inw(port) \
|
|
||||||
((__builtin_constant_p((port)) && (port) < 256) ? \
|
|
||||||
__inwc(port) : \
|
|
||||||
__inw(port))
|
|
||||||
|
|
||||||
#define outw_p(port,val) \
|
|
||||||
((__builtin_constant_p((port)) && (port) < 256) ? \
|
|
||||||
__outwc_p((val),(port)) : \
|
|
||||||
__outw_p((val),(port)))
|
|
||||||
|
|
||||||
#define inw_p(port) \
|
|
||||||
((__builtin_constant_p((port)) && (port) < 256) ? \
|
|
||||||
__inwc_p(port) : \
|
|
||||||
__inw_p(port))
|
|
||||||
|
|
||||||
#define outl(port,val) \
|
|
||||||
((__builtin_constant_p((port)) && (port) < 256) ? \
|
|
||||||
__outlc((val),(port)) : \
|
|
||||||
__outl((val),(port)))
|
|
||||||
|
|
||||||
#define inl(port) \
|
|
||||||
((__builtin_constant_p((port)) && (port) < 256) ? \
|
|
||||||
__inlc(port) : \
|
|
||||||
__inl(port))
|
|
||||||
|
|
||||||
#define outl_p(port,val) \
|
|
||||||
((__builtin_constant_p((port)) && (port) < 256) ? \
|
|
||||||
__outlc_p((val),(port)) : \
|
|
||||||
__outl_p((val),(port)))
|
|
||||||
|
|
||||||
#define inl_p(port) \
|
|
||||||
((__builtin_constant_p((port)) && (port) < 256) ? \
|
|
||||||
__inlc_p(port) : \
|
|
||||||
__inl_p(port))
|
|
||||||
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: mm.c,v 1.37 2000/08/20 17:02:08 dwelch Exp $
|
/* $Id: mm.c,v 1.38 2000/10/22 13:28:20 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top directory
|
* COPYRIGHT: See COPYING in the top directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -12,7 +12,6 @@
|
||||||
/* INCLUDES *****************************************************************/
|
/* INCLUDES *****************************************************************/
|
||||||
|
|
||||||
#include <ddk/ntddk.h>
|
#include <ddk/ntddk.h>
|
||||||
#include <internal/hal/io.h>
|
|
||||||
#include <internal/i386/segment.h>
|
#include <internal/i386/segment.h>
|
||||||
#include <internal/stddef.h>
|
#include <internal/stddef.h>
|
||||||
#include <internal/mm.h>
|
#include <internal/mm.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: mminit.c,v 1.8 2000/10/07 13:41:53 dwelch Exp $
|
/* $Id: mminit.c,v 1.9 2000/10/22 13:28:20 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top directory
|
* COPYRIGHT: See COPYING in the top directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -12,7 +12,6 @@
|
||||||
/* INCLUDES *****************************************************************/
|
/* INCLUDES *****************************************************************/
|
||||||
|
|
||||||
#include <ddk/ntddk.h>
|
#include <ddk/ntddk.h>
|
||||||
#include <internal/hal/io.h>
|
|
||||||
#include <internal/i386/segment.h>
|
#include <internal/i386/segment.h>
|
||||||
#include <internal/stddef.h>
|
#include <internal/stddef.h>
|
||||||
#include <internal/mm.h>
|
#include <internal/mm.h>
|
||||||
|
|
Loading…
Reference in a new issue