aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaghuram Subramani <raghus2247@gmail.com>2025-05-25 18:19:54 +0530
committerRaghuram Subramani <raghus2247@gmail.com>2025-05-25 18:19:54 +0530
commita6ffcaf7136cdcfc8fafa5d86aa564275731b2a0 (patch)
treec557ff1d2bc3fcf3d6db105986fa92cd0e95044f
parent0276800c3fc3ec4b73f5b75a2dd075c8d731d070 (diff)
gdt: prefix constants with GDT_
-rw-r--r--kernel/boot/gdt/gdt.cc8
-rw-r--r--kernel/include/boot/gdt.h69
2 files changed, 40 insertions, 37 deletions
diff --git a/kernel/boot/gdt/gdt.cc b/kernel/boot/gdt/gdt.cc
index 708d399..bf53566 100644
--- a/kernel/boot/gdt/gdt.cc
+++ b/kernel/boot/gdt/gdt.cc
@@ -26,16 +26,16 @@ entry_t l_entries[] = {
GDT_ENTRY(0, 0, 0, 0),
/* Kernel Mode Code Segment */
- GDT_ENTRY(0, 0xfffff, KERNEL_CODE_SEGMENT_ACCESS_FLAGS, FLAGS),
+ GDT_ENTRY(0, 0xfffff, GDT_KERNEL_CODE_SEGMENT_ACCESS_FLAGS, GDT_FLAGS),
/* Kernel Mode Data Segment */
- GDT_ENTRY(0, 0xfffff, KERNEL_DATA_SEGMENT_ACCESS_FLAGS, FLAGS),
+ GDT_ENTRY(0, 0xfffff, GDT_KERNEL_DATA_SEGMENT_ACCESS_FLAGS, GDT_FLAGS),
/* User Mode Code Segment */
- // GDT_ENTRY(0, 0xfffff, USER_CODE_SEGMENT_ACCESS_FLAGS, FLAGS),
+ // GDT_ENTRY(0, 0xfffff, GDT_USER_CODE_SEGMENT_ACCESS_FLAGS, FLAGS),
/* User Mode Data Segment */
- // GDT_ENTRY(0, 0xfffff, USER_DATA_SEGMENT_ACCESS_FLAGS, FLAGS)
+ // GDT_ENTRY(0, 0xfffff, GDT_USER_DATA_SEGMENT_ACCESS_FLAGS, FLAGS)
/* TODO: TSS? */
/* TODO: LDT? */
diff --git a/kernel/include/boot/gdt.h b/kernel/include/boot/gdt.h
index 60baab8..49067bd 100644
--- a/kernel/include/boot/gdt.h
+++ b/kernel/include/boot/gdt.h
@@ -33,27 +33,29 @@
* 0 ACCESSED
*/
-#define PRESENT(x) (x << 7)
-#define PRIVILEGE(x) (x << 5)
-#define TYPE(x) (x << 4)
-#define EXECUTABLE(x) (x << 3)
-#define DIRECTION_CONFORMING(x) (x << 2)
-#define READABLE_WRITABLE(x) (x << 1)
-#define ACCESSED(x) x
-
-#define CODE_SEGMENT_ACCESS_FLAGS(privilege) \
- PRESENT(1) | PRIVILEGE(privilege) | TYPE(1) | EXECUTABLE(1) \
- | DIRECTION_CONFORMING(0) | READABLE_WRITABLE(1) | ACCESSED(0)
-
-#define DATA_SEGMENT_ACCESS_FLAGS(privilege) \
- PRESENT(1) | PRIVILEGE(privilege) | TYPE(1) | EXECUTABLE(0) \
- | DIRECTION_CONFORMING(0) | READABLE_WRITABLE(1) | ACCESSED(0)
-
-#define KERNEL_CODE_SEGMENT_ACCESS_FLAGS CODE_SEGMENT_ACCESS_FLAGS(0)
-#define KERNEL_DATA_SEGMENT_ACCESS_FLAGS DATA_SEGMENT_ACCESS_FLAGS(0)
-
-#define USER_CODE_SEGMENT_ACCESS_FLAGS CODE_SEGMENT_ACCESS_FLAGS(3)
-#define USER_DATA_SEGMENT_ACCESS_FLAGS DATA_SEGMENT_ACCESS_FLAGS(3)
+#define GDT_PRESENT(x) (x << 7)
+#define GDT_PRIVILEGE(x) (x << 5)
+#define GDT_TYPE(x) (x << 4)
+#define GDT_EXECUTABLE(x) (x << 3)
+#define GDT_DIRECTION_CONFORMING(x) (x << 2)
+#define GDT_READABLE_WRITABLE(x) (x << 1)
+#define GDT_ACCESSED(x) x
+
+#define GDT_CODE_SEGMENT_ACCESS_FLAGS(privilege) \
+ GDT_PRESENT(1) | GDT_PRIVILEGE(privilege) | GDT_TYPE(1) | GDT_EXECUTABLE(1) \
+ | GDT_DIRECTION_CONFORMING(0) | GDT_READABLE_WRITABLE(1) \
+ | GDT_ACCESSED(0)
+
+#define GDT_DATA_SEGMENT_ACCESS_FLAGS(privilege) \
+ GDT_PRESENT(1) | GDT_PRIVILEGE(privilege) | GDT_TYPE(1) | GDT_EXECUTABLE(0) \
+ | GDT_DIRECTION_CONFORMING(0) | GDT_READABLE_WRITABLE(1) \
+ | GDT_ACCESSED(0)
+
+#define GDT_KERNEL_CODE_SEGMENT_ACCESS_FLAGS GDT_CODE_SEGMENT_ACCESS_FLAGS(0)
+#define GDT_KERNEL_DATA_SEGMENT_ACCESS_FLAGS GDT_DATA_SEGMENT_ACCESS_FLAGS(0)
+
+#define GDT_USER_CODE_SEGMENT_ACCESS_FLAGS GDT_CODE_SEGMENT_ACCESS_FLAGS(3)
+#define GDT_USER_DATA_SEGMENT_ACCESS_FLAGS GDT_DATA_SEGMENT_ACCESS_FLAGS(3)
/* Other Flags:
* 3 GRANULARITY
@@ -62,14 +64,14 @@
* 0 RESERVED
*/
-#define GRANULARITY (1 << 3)
-#define SIZE (1 << 2)
-#define LONGMODE (0 << 1)
-#define RESERVED 0
+#define GDT_GRANULARITY (1 << 3)
+#define GDT_SIZE (1 << 2)
+#define GDT_LONGMODE (0 << 1)
+#define GDT_RESERVED 0
-#define FLAGS (GRANULARITY | SIZE | LONGMODE | RESERVED)
+#define GDT_FLAGS (GDT_GRANULARITY | GDT_SIZE | GDT_LONGMODE | GDT_RESERVED)
-#define FLAGS_LIMIT_HIGH(flags, limit_high) ((flags << 4) | limit_high)
+#define GDT_FLAGS_LIMIT_HIGH(flags, limit_high) ((flags << 4) | limit_high)
/* GDT Entry:
* BASE FLAGS LIMIT ACCESS_FLAGS BASE BASE LIMIT
@@ -78,12 +80,13 @@
#define GDT_ENTRY(base, limit, access_flags, flags) \
{ \
- (limit & 0xffff), /* limit_low */ \
- (base & 0xffff), /* base_low */ \
- ((base >> 16) & 0xff), /* base_mid */ \
- access_flags, /* access_flags */ \
- FLAGS_LIMIT_HIGH(flags, ((limit >> 16) & 0xff)), /* flags_limit_high */ \
- ((base >> 24) & 0xff) /* base_high */ \
+ (limit & 0xffff), /* limit_low */ \
+ (base & 0xffff), /* base_low */ \
+ ((base >> 16) & 0xff), /* base_mid */ \
+ access_flags, /* access_flags */ \
+ GDT_FLAGS_LIMIT_HIGH(flags, \
+ ((limit >> 16) & 0xff)), /* flags_limit_high */ \
+ ((base >> 24) & 0xff) /* base_high */ \
}
#define GDT_KERNEL_CODE_OFFSET 0x8