X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=3sys;a=blobdiff_plain;f=sys1%2Fkern%2Fsrc%2Fmem.c;fp=sys1%2Fkern%2Fsrc%2Fmem.c;h=898ef3f8a6ae31d0ff80e69cb997a268e13937ba;hp=0000000000000000000000000000000000000000;hb=0d2d1730817f3ef5fc766149f2598480094cbae8;hpb=6ccd3a47d05be145256a79a1de100f01ebd16a79 diff --git a/sys1/kern/src/mem.c b/sys1/kern/src/mem.c new file mode 100644 index 0000000..898ef3f --- /dev/null +++ b/sys1/kern/src/mem.c @@ -0,0 +1,22 @@ +#include "mem.h" +#include "desc.h" + +void set_gdt(void *addr, uint16_t limit); + +enum { + SEG_NULL = 0, + SEG_KCODE = 1, + SEG_KDATA = 2 +}; + +#define NUM_SEG 3 +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); + + set_gdt(gdt, sizeof gdt - 1); +}