#ifndef CONSTS_H #define CONSTS_H #define NR_TASKS 0 /* Table sizes. */ #define GDT_SIZE (FIRST_LDT_INDEX + NR_TASKS) //#define IDT_SIZE (IRQ8_VECTOR + 8) /* only up to the highest vector */ /* Fixed global descriptors. 1 to 7 are prescribed by the BIOS. */ #define CS_INDEX 1 #define DS_INDEX 2 #define TSS_INDEX 3 /* Kernel TSS */ #define IDT_INDEX 4 #define FIRST_LDT_INDEX 5 #define CS_SELECTOR 0x08 /* (CS_INDEX * DESC_SIZE) */ #define DS_SELECTOR 0x10 #define TSS_SELECTOR 0x18 #define IDT_SELECTOR 0x20 /* Descriptor structure offsets. */ #define DESC_BASE 2 /* to base_low */ #define DESC_BASE_MIDDLE 4 /* to base_middle */ #define DESC_ACCESS 5 /* to access byte */ #define DESC_SIZE 8 /* sizeof (struct segdesc_s) */ /* Base and limit sizes and shifts. */ #define BASE_MIDDLE_SHIFT 16 /* shift for base --> base_middle */ /* Access-byte and type-byte bits. */ #define PRESENT 0x80 /* set for descriptor present */ #define DPL 0x60 /* descriptor privilege level mask */ #define DPL_SHIFT 5 #define SEGMENT 0x10 /* set for segment-type descriptors */ /* Access-byte bits. */ #define EXECUTABLE 0x08 /* set for executable segment */ #define CONFORMING 0x04 /* set for conforming segment if executable */ #define EXPAND_DOWN 0x04 /* set for expand-down segment if !executable*/ #define READABLE 0x02 /* set for readable segment if executable */ #define WRITEABLE 0x02 /* set for writeable segment if !executable */ #define TSS_BUSY 0x02 /* set if TSS descriptor is busy */ #define ACCESSED 0x01 /* set if segment accessed */ /* i386 paging constants */ #define VM_PRESENT 0x001 /* Page is present */ #define VM_WRITE 0x002 /* Read/write access allowed */ #define VM_USER 0x004 /* User access allowed */ #define VM_PWT 0x008 /* Write through */ #define VM_PCD 0x010 /* Cache disable */ #define VM_ACC 0x020 /* Accessed */ #define VM_ADDR_MASK 0xFFFFF000 /* physical address */ #define VM_DIR_ENTRIES 512 /* Number of entries in a page dir */ #define VM_PT_ENTRIES 512 /* Number of entries in a page table */ #define PAGE_SIZE 4096 #endif