bsd_ev56.c (1803B)
1 2 #ifdef HAVE_XORG_CONFIG_H 3 #include <xorg-config.h> 4 #endif 5 6 #include <X11/X.h> 7 #include "input.h" 8 #include "scrnintstr.h" 9 #include "compiler.h" 10 11 #include "xf86.h" 12 #include "xf86Priv.h" 13 #include "xf86_OSlib.h" 14 #include "xf86OSpriv.h" 15 16 #include <machine/bwx.h> 17 18 /* 19 * The following functions are used only on EV56 and greater CPUs, 20 * and the assembler requires going to EV56 mode in order to emit 21 * these instructions. 22 */ 23 __asm(".arch ev56"); 24 25 int readDense8(void *Base, register unsigned long Offset); 26 int readDense16(void *Base, register unsigned long Offset); 27 int readDense32(void *Base, register unsigned long Offset); 28 void 29 writeDense8(int Value, void *Base, register unsigned long Offset); 30 void 31 writeDense16(int Value, void *Base, register unsigned long Offset); 32 void 33 writeDense32(int Value, void *Base, register unsigned long Offset); 34 35 int 36 readDense8(void *Base, register unsigned long Offset) 37 { 38 mem_barrier(); 39 return (alpha_ldbu((void *) ((unsigned long) Base + (Offset)))); 40 } 41 42 int 43 readDense16(void *Base, register unsigned long Offset) 44 { 45 mem_barrier(); 46 return (alpha_ldwu((void *) ((unsigned long) Base + (Offset)))); 47 } 48 49 int 50 readDense32(void *Base, register unsigned long Offset) 51 { 52 mem_barrier(); 53 return *(volatile CARD32 *) ((unsigned long) Base + (Offset)); 54 } 55 56 void 57 writeDense8(int Value, void *Base, register unsigned long Offset) 58 { 59 write_mem_barrier(); 60 alpha_stb((void *) ((unsigned long) Base + (Offset)), Value); 61 } 62 63 void 64 writeDense16(int Value, void *Base, register unsigned long Offset) 65 { 66 write_mem_barrier(); 67 alpha_stw((void *) ((unsigned long) Base + (Offset)), Value); 68 } 69 70 void 71 writeDense32(int Value, void *Base, register unsigned long Offset) 72 { 73 write_mem_barrier(); 74 *(volatile CARD32 *) ((unsigned long) Base + (Offset)) = Value; 75 }