#ifndef MY_KERNEL_DRIVERS_PORT_H #define MY_KERNEL_DRIVERS_PORT_H #define PORT_PIC_MASTER_COMMAND 0x20 #define PORT_PIC_MASTER_DATA 0x21 #define PORT_PIC_SLAVE_COMMAND 0xA0 #define PORT_PIC_SLAVE_DATA 0xA1 //http://www.osdever.net/FreeVGA/vga/crtcreg.htm#0A #define PORT_REG_SCREEN_CTRL 0x3d4 #define PORT_REG_SCREEN_CTRL_CURSOR_H 0x0E #define PORT_REG_SCREEN_CTRL_CURSOR_L 0x0F #define PORT_REG_SCREEN_DATA 0x3d5 // https://wiki.osdev.org/Serial_Ports #define PORT_SERIAL_0 0x3f8 #define PORT_SERIAL_1 0x2f8 #define PORT_SERIAL_2 0x3e8 #define PORT_SERIAL_3 0x2e8 #define PORT_SERIAL_DATA 0 #define PORT_SERIAL_INTERRUPT 1 #define PORT_SERIAL_DLAB_LSB 0 #define PORT_SERIAL_DLAB_MSB 1 #define PORT_SERIAL_INTERRUPT_ID_FIFO 2 #define PORT_SERIAL_LINE_CONTROL 3 #define PORT_SERIAL_MODEM_CONTROL 4 #define PORT_SERIAL_LINE_STATUS 5 #define PORT_SERIAL_MODEM_STATUS 6 #define PORT_SERIAL_SCRATCH 6 // https://wiki.osdev.org/PIT #define PORT_PIT_COMMAND 0x43 #define PORT_PIT_DATA_0 0x40 #define PORT_PIT_DATA_1 0x41 #define PORT_PIT_DATA_3 0x42 // https://wiki.osdev.org/%228042%22_PS/2_Controller #define PORT_PS2_DATA 0x60 #define PORT_PS2_STATUS 0x64 #define PORT_PS2_COMMAND 0x64 // https://wiki.osdev.org/PCI #define PORT_PCI_CONFIG_ADDRESS (0xCF8) #define PORT_PCI_CONFIG_DATA (0xCFC) unsigned char port_byte_in(unsigned short port); void port_byte_out(unsigned short port, unsigned char data); unsigned short port_word_in(unsigned short port); void port_word_out(unsigned short port, unsigned short data); unsigned int port_double_word_in(unsigned int port); void port_double_word_out(unsigned short port, unsigned int data); #endif