aboutsummaryrefslogtreecommitdiff
path: root/src/kernel/gen_gdt.c
blob: ccfb461e97a8bb553a1c8ab239f480dc61a43ed1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "gdt.h"
#include <stdint.h>

GDT_t *table = 0x0;
extern GDTR_t gdtr;
void get_gdtr() {
    uint32_t base = 0x0000;

    *table = (GDT_t){
        // NULL
        make_descriptor(0, 0, 0),
        // Code segment, read
        make_descriptor(base, 0x8FFFF, make_code(0, 0, 1)),
        // Data segment, read write
        make_descriptor(base, 0x8FFFF, make_data(0, 0, 1)),
    };
    gdtr.size = sizeof(Segment_Descriptor_t) * 3 - 1;
    gdtr.offset = base;
}