diff options
Diffstat (limited to 'src/gdt.cc')
-rw-r--r-- | src/gdt.cc | 11 |
1 files changed, 8 insertions, 3 deletions
@@ -6,12 +6,17 @@ using seg = GDT::SegmentDescriptor; static_assert(sizeof(GDT::Pointer) == 6); constexpr uint32_t null_sz = 0; -constexpr uint32_t kseg_sz = 64 * 1024 * 1024 + 0xfff; + +/* TODO kcode should only contain the .text segment + * TODO kdata should contain the other segments + * */ +constexpr uint32_t kseg_start = 0; +constexpr uint32_t kseg_sz = 0xffffffff; static GDT::SegmentDescriptor segments[256]{ [GDT::null0] = seg::make<null_sz>(0, {}), - [GDT::kcode] = seg::make<kseg_sz>(0, {.r_w = true, .exe = true, .segment = true, .present = true}), - [GDT::kdata] = seg::make<kseg_sz>(0, {.r_w = true, .segment = true, .present = true}), + [GDT::kcode] = seg::make<kseg_sz>(kseg_start, {.r_w = true, .exe = true, .segment = true, .present = true}), + [GDT::kdata] = seg::make<kseg_sz>(kseg_start, {.r_w = true, .segment = true, .present = true}), }; GDT::GDT() { |