92d6de9307b4177c29fde5f192ffb0ea6b9bae4f
[3sys] / sys1 / kern / src / mem.c
1 #include "mem.h"
2 #include "desc.h"
3
4 void set_gdt(void *addr, uint16_t limit);
5
6 enum {
7         SEG_KCODE       = 1,
8         SEG_KDATA       = 2
9 };
10
11 #define NUM_SEG         3
12 static struct desc gdt[NUM_SEG] __attribute__((aligned(8)));
13
14 void mem_init(void)
15 {
16         desc_seg(gdt, SEG_NULL, 0, 0, 0);
17         desc_seg(gdt + SEG_KCODE, SEG_CODE, 0, 0xffffffff, 0);
18         desc_seg(gdt + SEG_KDATA, SEG_DATA, 0, 0xffffffff, 0);
19
20         set_gdt(gdt, sizeof gdt - 1);
21 }