/* compile with: cc -O2 -o fatcursor -lm -li386 -static */ #include #include #include void enableperm (short bit) { unsigned long iomap[32], word, shift, mask; if (i386_get_ioperm(iomap)) errx (1, "i386_get_ioperm failed"); word = bit >> 5; shift = bit & 31; mask = 1L << shift; iomap[word] &= ~mask; if (i386_set_ioperm(iomap)) errx (1, "i386_set_ioperm failed"); } inline void outb (unsigned short port, unsigned char value) { asm ("outb %0,%1" ::"a" (value),"d" (port)); } int main(int argc, char *argv[]) { short iobase = 0x3D4; enableperm (iobase); enableperm (iobase+1); outb (iobase, 10); outb (iobase+1, 0); outb (iobase, 11); outb (iobase+1, 31); return 0; }