1
2
3
4
5
6
7
8
9
10
11
12
13
|
void init_gdt_table()
{
gdtp.size=sizeof(gdt)-1;
gdtp.offset=(uint32_t)&gdt;
init_gdt_entry(0,0,0,0,0); // null segment
init_gdt_entry(1,0xffffffff,0,0b10011010,0b11001111); // code segment
init_gdt_entry(2,0xffffffff,0,0b10010010,0b11001111); // data segment
init_gdt_entry(3,0xffffffff,0,0b11111010,0b11001111); // user mode code segment
init_gdt_entry(4,0xffffffff,0,0b11110010,0b11001111); // user mode data segment
load_gdt(&gdtp);
}
|