#ifndef FOOLOS_X86_H #define FOOLOS_X86_H #include "lib/int/stdint.h" // todo: cli/sti?? // http://wiki.osdev.org/Interrupt_Service_Routines // Black Magic: Strongly Discouraged! #define X86_IRQ_BEGIN asm("\npusha"); #define X86_IRQ_END asm("mov $0x20, %al\nout %al, $0x20\npopa\nleave\niret"); void x86_outb(int port, uint8_t data); uint8_t x86_inb(int port); void x86_outw(int port, uint16_t data); uint16_t x86_inw(int port); void x86_outl(int port, uint32_t data); uint32_t x86_inl(int port); void x86_set_pdbr(uint32_t addr); void x86_paging_enable(); void x86_flush_tlb(uint32_t addr); #endif