nuclear@1: #ifndef ASMOPS_H_ nuclear@1: #define ASMOPS_H_ nuclear@1: nuclear@10: #define enable_intr() asm volatile("sti") nuclear@10: #define disable_intr() asm volatile("cli") nuclear@10: #define halt_cpu() asm volatile("hlt") nuclear@10: nuclear@1: #define inb(dest, port) asm volatile( \ nuclear@1: "inb %1, %0\n\t" \ nuclear@2: : "=a" ((unsigned char)(dest)) \ nuclear@2: : "dN" ((unsigned short)(port))) nuclear@1: nuclear@10: #define inw(dest, port) asm volatile( \ nuclear@10: "inw %1, %0\n\t" \ nuclear@2: : "=a" ((unsigned short)(dest)) \ nuclear@2: : "dN" ((unsigned short)(port))) nuclear@1: nuclear@1: #define inl(dest, port) asm volatile( \ nuclear@1: "inl %1, %0\n\t" \ nuclear@2: : "=a" ((unsigned long)(dest)) \ nuclear@2: : "dN" ((unsigned short)(port))) nuclear@1: nuclear@1: #define outb(src, port) asm volatile( \ nuclear@1: "outb %0, %1\n\t" \ nuclear@2: :: "a" ((unsigned char)(src)), "dN" ((unsigned short)(port))) nuclear@1: nuclear@10: #define outw(src, port) asm volatile( \ nuclear@10: "outw %0, %1\n\t" \ nuclear@2: :: "a" ((unsigned short)(src)), "dN" ((unsigned short)(port))) nuclear@1: nuclear@1: #define outl(src, port) asm volatile( \ nuclear@1: "outl %0, %1\n\t" \ nuclear@2: :: "a" ((unsigned long)(src)), "dN" ((unsigned short)(port))) nuclear@1: nuclear@36: #define iodelay() outb(0, 0x80) nuclear@36: nuclear@1: #endif /* ASMOPS_H_ */