6 /* inline assembly utility macros */
8 #define enable_intr() asm volatile("sti")
9 #define disable_intr() asm volatile("cli")
11 #define set_intr_state(en) \
12 do { if(en) enable_intr(); else disable_intr(); } while(0)
14 static inline int get_intr_state(void)
21 return (res >> 9) & 1; /* IF is bit 9 of eflags */
24 #define outp(port, val) \
25 asm volatile("out %%al, %%dx" :: "d"(port), "a"((unsigned char)val))
26 #define outp16(port, val) \
27 asm volatile("out %%ax, %%dx" :: "d"(port), "a"((unsigned short)val))
29 static inline uint8_t inp(int port)
32 asm volatile("in %%dx, %%al" : "=a"(res) : "d"(port));
36 static inline uint16_t inp16(int port)
39 asm volatile("in %%dx, %%ax" : "=a"(res) : "d"(port));
44 #endif /* ASMUTIL_H_ */