Lines 87-93
Link Here
|
87 |
|
87 |
|
88 |
# if defined(NO_INLINE) || defined(DO_PROTOTYPES) |
88 |
# if defined(NO_INLINE) || defined(DO_PROTOTYPES) |
89 |
|
89 |
|
90 |
# if !defined(__sparc__) && !defined(__arm32__) \ |
90 |
# if !defined(__arm__) |
|
|
91 |
# if !defined(__sparc__) && !defined(__arm32__) \ |
91 |
&& !(defined(__alpha__) && defined(linux)) |
92 |
&& !(defined(__alpha__) && defined(linux)) |
92 |
|
93 |
|
93 |
extern void outb(unsigned short, unsigned char); |
94 |
extern void outb(unsigned short, unsigned char); |
Lines 97-103
Link Here
|
97 |
extern unsigned int inw(unsigned short); |
98 |
extern unsigned int inw(unsigned short); |
98 |
extern unsigned int inl(unsigned short); |
99 |
extern unsigned int inl(unsigned short); |
99 |
|
100 |
|
100 |
# else /* __sparc__, __arm32__, __alpha__*/ |
101 |
# else /* __sparc__, __arm32__, __alpha__*/ |
101 |
|
102 |
|
102 |
extern void outb(unsigned long, unsigned char); |
103 |
extern void outb(unsigned long, unsigned char); |
103 |
extern void outw(unsigned long, unsigned short); |
104 |
extern void outw(unsigned long, unsigned short); |
Lines 106-112
Link Here
|
106 |
extern unsigned int inw(unsigned long); |
107 |
extern unsigned int inw(unsigned long); |
107 |
extern unsigned int inl(unsigned long); |
108 |
extern unsigned int inl(unsigned long); |
108 |
|
109 |
|
109 |
# endif /* __sparc__, __arm32__, __alpha__ */ |
110 |
# endif /* __sparc__, __arm32__, __alpha__ */ |
|
|
111 |
# endif /* __arm__ */ |
110 |
|
112 |
|
111 |
extern unsigned long ldq_u(unsigned long *); |
113 |
extern unsigned long ldq_u(unsigned long *); |
112 |
extern unsigned long ldl_u(unsigned int *); |
114 |
extern unsigned long ldl_u(unsigned int *); |
Lines 848-854
Link Here
|
848 |
# define mem_barrier() /* XXX: nop for now */ |
850 |
# define mem_barrier() /* XXX: nop for now */ |
849 |
# define write_mem_barrier() /* XXX: nop for now */ |
851 |
# define write_mem_barrier() /* XXX: nop for now */ |
850 |
|
852 |
|
851 |
# elif defined(__mips__) || defined(__arm32__) |
853 |
# elif defined(__mips__) || (defined(__arm32__) && !defined(__linux__)) |
852 |
#ifdef __arm32__ |
854 |
#ifdef __arm32__ |
853 |
#define PORT_SIZE long |
855 |
#define PORT_SIZE long |
854 |
#else |
856 |
#else |
Lines 1244-1249
Link Here
|
1244 |
# define mem_barrier() eieio() |
1246 |
# define mem_barrier() eieio() |
1245 |
# define write_mem_barrier() eieio() |
1247 |
# define write_mem_barrier() eieio() |
1246 |
|
1248 |
|
|
|
1249 |
#elif defined(__arm__) && defined(__linux__) |
1250 |
|
1251 |
#define ldq_u(p) (*((unsigned long *)(p))) |
1252 |
#define ldl_u(p) (*((unsigned int *)(p))) |
1253 |
#define ldw_u(p) (*((unsigned short *)(p))) |
1254 |
#define stq_u(v,p) (*(unsigned long *)(p)) = (v) |
1255 |
#define stl_u(v,p) (*(unsigned int *)(p)) = (v) |
1256 |
#define stw_u(v,p) (*(unsigned short *)(p)) = (v) |
1257 |
#define mem_barrier() /* NOP */ |
1258 |
#define write_mem_barrier() /* NOP */ |
1259 |
|
1260 |
/* for Linux on ARM, we use the LIBC inx/outx routines */ |
1261 |
/* note that the appropriate setup via "ioperm" needs to be done */ |
1262 |
/* *before* any inx/outx is done. */ |
1263 |
|
1264 |
#include <sys/io.h> |
1265 |
|
1266 |
static __inline__ void |
1267 |
xf_outb(unsigned short port, unsigned char val) |
1268 |
{ |
1269 |
outb(val, port); |
1270 |
} |
1271 |
|
1272 |
static __inline__ void |
1273 |
xf_outw(unsigned short port, unsigned short val) |
1274 |
{ |
1275 |
outw(val, port); |
1276 |
} |
1277 |
|
1278 |
static __inline__ void |
1279 |
xf_outl(unsigned short port, unsigned int val) |
1280 |
{ |
1281 |
outl(val, port); |
1282 |
} |
1283 |
|
1284 |
#define outb xf_outb |
1285 |
#define outw xf_outw |
1286 |
#define outl xf_outl |
1287 |
|
1288 |
#define arm_flush_cache(addr) \ |
1289 |
do { \ |
1290 |
register unsigned long _beg __asm ("a1") = (unsigned long) (addr); \ |
1291 |
register unsigned long _end __asm ("a2") = (unsigned long) (addr) + 4;\ |
1292 |
register unsigned long _flg __asm ("a3") = 0; \ |
1293 |
__asm __volatile ("swi 0x9f0002 @ sys_cacheflush" \ |
1294 |
: "=r" (_beg) \ |
1295 |
: "0" (_beg), "r" (_end), "r" (_flg)); \ |
1296 |
} while (0) |
1297 |
|
1247 |
# else /* ix86 */ |
1298 |
# else /* ix86 */ |
1248 |
|
1299 |
|
1249 |
# define ldq_u(p) (*((unsigned long *)(p))) |
1300 |
# define ldq_u(p) (*((unsigned long *)(p))) |