static struct desc gdt[NUM_SEG] __attribute__((aligned(8)));
void mem_init(void)
{
desc_seg(gdt, SEG_NULL, 0, 0, 0);
static struct desc gdt[NUM_SEG] __attribute__((aligned(8)));
void mem_init(void)
{
desc_seg(gdt, SEG_NULL, 0, 0, 0);
- desc_seg(gdt + SEG_KCODE, SEG_CODE, 0, 0xffffffff, 0);
- desc_seg(gdt + SEG_KDATA, SEG_DATA, 0, 0xffffffff, 0);
+ desc_seg(gdt + SEL_KCODE, SEG_CODE, 0, 0xffffffff, 0);
+ desc_seg(gdt + SEL_KDATA, SEG_DATA, 0, 0xffffffff, 0);
+
+ setup_selectors(selector(SEL_KCODE, 0), selector(SEL_KDATA, 0));
+}
+
+uint16_t selector(int idx, int rpl)
+{
+ return (idx << 3) | (rpl & 3);