21 lines
520 B
C
21 lines
520 B
C
#include "gdt.h"
|
|
|
|
static const gdt_entry_t gdt_entries[] = {
|
|
/* Null descriptor */
|
|
0u,
|
|
/* Code segment for kernel */
|
|
gdt_build_entry(0u, 0xFFFFFu, 1u, 0u, 1u, 1u, 0u, 1u, 0u, 1u, 1u, 0u),
|
|
/* Data segment for kernel */
|
|
gdt_build_entry(0u, 0xFFFFFu, 1u, 0u, 1u, 0u, 0u, 1u, 0u, 1u, 1u, 0u),
|
|
};
|
|
|
|
gdtr_t gdtr;
|
|
|
|
void gdt_init(void)
|
|
{
|
|
gdtr.size = sizeof(gdt_entries);
|
|
gdtr.offset_lower = (uintptr_t)gdt_entries & 0xFFFFu;
|
|
gdtr.offset_upper = (uintptr_t)gdt_entries >> 16u;
|
|
gdt_set();
|
|
}
|