Lines 35-47
Link Here
|
35 |
* - Arnaldo Carvalho de Melo <acme@conectiva.com.br> |
35 |
* - Arnaldo Carvalho de Melo <acme@conectiva.com.br> |
36 |
*/ |
36 |
*/ |
37 |
|
37 |
|
38 |
#define __SLOW_DOWN_IO "\noutb %%al,$0x80" |
38 |
extern void native_io_delay(void); |
39 |
|
|
|
40 |
#ifdef REALLY_SLOW_IO |
41 |
#define __FULL_SLOW_DOWN_IO __SLOW_DOWN_IO __SLOW_DOWN_IO __SLOW_DOWN_IO __SLOW_DOWN_IO |
42 |
#else |
43 |
#define __FULL_SLOW_DOWN_IO __SLOW_DOWN_IO |
44 |
#endif |
45 |
|
39 |
|
46 |
/* |
40 |
/* |
47 |
* Talk about misusing macros.. |
41 |
* Talk about misusing macros.. |
Lines 54-60
__asm__ __volatile__ ("out" #s " %" s1 "
Link Here
|
54 |
|
48 |
|
55 |
#define __OUT(s,s1,x) \ |
49 |
#define __OUT(s,s1,x) \ |
56 |
__OUT1(s,x) __OUT2(s,s1,"w") : : "a" (value), "Nd" (port)); } \ |
50 |
__OUT1(s,x) __OUT2(s,s1,"w") : : "a" (value), "Nd" (port)); } \ |
57 |
__OUT1(s##_p,x) __OUT2(s,s1,"w") __FULL_SLOW_DOWN_IO : : "a" (value), "Nd" (port));} \ |
51 |
__OUT1(s##_p,x) __OUT2(s,s1,"w") : : "a" (value), "Nd" (port)); \ |
|
|
52 |
native_io_delay(); } \ |
58 |
|
53 |
|
59 |
#define __IN1(s) \ |
54 |
#define __IN1(s) \ |
60 |
static inline RETURN_TYPE in##s(unsigned short port) { RETURN_TYPE _v; |
55 |
static inline RETURN_TYPE in##s(unsigned short port) { RETURN_TYPE _v; |
Lines 64-70
__asm__ __volatile__ ("in" #s " %" s2 "1
Link Here
|
64 |
|
59 |
|
65 |
#define __IN(s,s1,i...) \ |
60 |
#define __IN(s,s1,i...) \ |
66 |
__IN1(s) __IN2(s,s1,"w") : "=a" (_v) : "Nd" (port) ,##i ); return _v; } \ |
61 |
__IN1(s) __IN2(s,s1,"w") : "=a" (_v) : "Nd" (port) ,##i ); return _v; } \ |
67 |
__IN1(s##_p) __IN2(s,s1,"w") __FULL_SLOW_DOWN_IO : "=a" (_v) : "Nd" (port) ,##i ); return _v; } \ |
62 |
__IN1(s##_p) __IN2(s,s1,"w") : "=a" (_v) : "Nd" (port) ,##i ); return _v; \ |
|
|
63 |
native_io_delay(); } \ |
68 |
|
64 |
|
69 |
#define __INS(s) \ |
65 |
#define __INS(s) \ |
70 |
static inline void ins##s(unsigned short port, void * addr, unsigned long count) \ |
66 |
static inline void ins##s(unsigned short port, void * addr, unsigned long count) \ |