diff options
Diffstat (limited to 'hw/xfree86/common/compiler.h')
-rw-r--r-- | hw/xfree86/common/compiler.h | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/hw/xfree86/common/compiler.h b/hw/xfree86/common/compiler.h index bf9fbeee2..100c61dbe 100644 --- a/hw/xfree86/common/compiler.h +++ b/hw/xfree86/common/compiler.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/compiler.h,v 3.104 2003/11/03 05:11:01 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/compiler.h,v 3.105 2003/12/18 21:56:37 dawes Exp $ */ /* * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany. * @@ -1613,7 +1613,17 @@ extern void outl(unsigned port, unsigned val); /* entry points for Mmio memory access routines */ extern int (*xf86ReadMmio8)(void *, unsigned long); extern int (*xf86ReadMmio16)(void *, unsigned long); +# ifndef STANDALONE_MMIO extern int (*xf86ReadMmio32)(void *, unsigned long); +# else +/* Some DRI 3D drivers need MMIO_IN32. */ +static __inline__ int +xf86ReadMmio32(void *Base, unsigned long Offset) +{ + __asm__ __volatile__("mb" : : : "memory"); + return *(volatile CARD32*)((unsigned long)Base+(Offset)); +} +# endif extern void (*xf86WriteMmio8)(int, void *, unsigned long); extern void (*xf86WriteMmio16)(int, void *, unsigned long); extern void (*xf86WriteMmio32)(int, void *, unsigned long); @@ -1629,7 +1639,11 @@ extern void xf86SlowBCopyToBus(unsigned char *, unsigned char *, int); /* Changed to kill noise generated by gcc's -Wcast-align */ # define MMIO_IN8(base, offset) (*xf86ReadMmio8)(base, offset) # define MMIO_IN16(base, offset) (*xf86ReadMmio16)(base, offset) -# define MMIO_IN32(base, offset) (*xf86ReadMmio32)(base, offset) +# ifndef STANDALONE_MMIO +# define MMIO_IN32(base, offset) (*xf86ReadMmio32)(base, offset) +# else +# define MMIO_IN32(base, offset) xf86ReadMmio32(base, offset) +# endif # if defined (JENSEN_SUPPORT) # define MMIO_OUT32(base, offset, val) \ |