aboutsummaryrefslogtreecommitdiff
path: root/src/gdt
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2021-03-06 16:01:29 +0200
committerAqua-sama <aqua@iserlohn-fortress.net>2021-03-06 16:01:37 +0200
commite40da55691ad2c36b349ace7cd368394976a1d6d (patch)
tree5ffe26ab4306d2f1fe6eb9ce08dc119189f92e9b /src/gdt
parentlibk: add int_t min max size constants (diff)
downloadkernel.cpp-e40da55691ad2c36b349ace7cd368394976a1d6d.tar.xz
GDT: flush segment registers on lgdt
Diffstat (limited to 'src/gdt')
-rw-r--r--src/gdt/segmentdescriptor.cc10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/gdt/segmentdescriptor.cc b/src/gdt/segmentdescriptor.cc
index baf4753..dadd65b 100644
--- a/src/gdt/segmentdescriptor.cc
+++ b/src/gdt/segmentdescriptor.cc
@@ -1,4 +1,12 @@
-#include "../gdt.h"
+#include "gdt.h"
+
+using seg = GDT::SegmentDescriptor;
+
+static_assert(sizeof(seg) == 8);
+static_assert(sizeof(seg::Access) == 1);
+static_assert((seg::Access{}) == 0x00);
+static_assert((seg::Access{.r_w = true, .exe = true, .segment = true, .present = true}) == 0x9a);
+static_assert((seg::Access{.r_w = true, .segment = true, .present = true}) == 0x92);
GDT::SegmentDescriptor::SegmentDescriptor(uint32_t base, uint32_t limit, GDT::SegmentDescriptor::Access type)
: access(type) {