Commit Diff


commit - 4d7c062fbfa6373e41c75637079dd1a72c57f150
commit + 8d075ecc3061fc5fe32bba25b5d88b4b5a6d1500
blob - f1d4f0c49a7a3c8123c165c16d1de3bc11dfb79d
blob + 5ced8a140314f62156093802fbb32dc82d4dcd8a
--- build.sh
+++ build.sh
@@ -32,14 +32,12 @@ nasm -f elf64 -o io.o $KERNEL_DIR/io.s
 nasm -f elf64 -o mem.o $KERNEL_DIR/mem.s
 nasm -f elf64 -o lidt.o $KERNEL_DIR/lidt.s
 nasm -f elf64 -o switch.o $KERNEL_DIR/switch.s
-nasm -f elf64 -o lgdt.o $KERNEL_DIR/lgdt.s
 nasm -f elf64 -o sysentry.o $KERNEL_DIR/sysentry.s
 
 cc -m64 $CFLAGS -o idt.o -c $KERNEL_DIR/idt.c $INCS
 cc -m64 $CFLAGS -o kmain.o -c $KERNEL_DIR/kmain.c $INCS
 cc -m64 $CFLAGS -o kprint.o -c $KERNEL_DIR/kprint.c $INCS
 cc -m64 $CFLAGS -o kmmap.o -c $KERNEL_DIR/kmmap.c $INCS
-cc -m64 $CFLAGS -o kgdt.o -c $KERNEL_DIR/kgdt.c $INCS
 cc -m64 $CFLAGS -o kpic.o -c $KERNEL_DIR/kpic.c $INCS
 cc -m64 $CFLAGS -o kthreads.o -c $KERNEL_DIR/kthreads.c $INCS
 cc -m64 $CFLAGS -o syscalls.o -c $KERNEL_DIR/syscalls.c $INCS
@@ -48,8 +46,7 @@ ld \
 	--defsym=entry=$KERNEL_ENTRY \
 	-T $KERNEL_DIR/linker.ld $LFLAGS \
 	-o kernel.bin kmain.o io.o kprint.o kmmap.o mem.o \
-	switch.o idt.o lidt.o lgdt.o kgdt.o kpic.o \
-	syscalls.o sysentry.o kthreads.o
+	switch.o idt.o lidt.o kpic.o syscalls.o sysentry.o kthreads.o
 
 KSIZE=$(wc -c < kernel.bin)
 KSECTORS=$(( (KSIZE + SECTOR_SIZE - 1) / SECTOR_SIZE + 2)) # Extra sector
blob - 63b7b85f1c653588678667cb19e57a6d98b0c33c (mode 644)
blob + /dev/null
--- kernel/kgdt.c
+++ /dev/null
@@ -1,54 +0,0 @@
-#include "kdebug.h"
-#include "types.h"
-
-#define KERNEL_STACK_TOP 0x90000 // Defined in boot2.s
-
-struct gdt_desc {
-	u16 llimit;
-	u16 lbase;
-	u8 mbase;
-	u8 access;
-	u8 flags;
-	u8 hbase;
-} __packed;
-
-struct gdt {
-	struct gdt_desc null;
-	struct gdt_desc kernel_code;
-	struct gdt_desc kernel_data;
-} __packed;
-
-struct gdtr {
-	u16 limit;
-	u64 base;
-} __packed;
-
-void load_gdt(struct gdtr*);
-
-static struct gdt gdt;
-static struct gdtr gdtr = {
-	.limit = sizeof(gdt) - 1,
-	.base = (u64)&gdt
-};
-
-s8
-kgdt_init()
-{
-	gdt.kernel_code.llimit = 0xffff;
-	gdt.kernel_code.lbase = 0;
-	gdt.kernel_code.mbase = 0;
-	gdt.kernel_code.access = 0x9A;
-	gdt.kernel_code.flags = 0xAF;
-	gdt.kernel_code.hbase = 0;
-
-	gdt.kernel_data.llimit = 0xffff;
-	gdt.kernel_data.lbase = 0;
-	gdt.kernel_data.mbase = 0;
-	gdt.kernel_data.access = 0x92;
-	gdt.kernel_data.flags = 0xCF;
-	gdt.kernel_data.hbase = 0;
-
-	load_gdt(&gdtr); // See lgdt.s
-
-	return 0;
-}
blob - bb2f9923c7086b799d508df2928705ea6e57536a
blob + ef65b6fa97ac4add5f701b7d0dc94236667a542b
--- kernel/kmain.c
+++ kernel/kmain.c
@@ -16,13 +16,6 @@ kmain(struct kinfo *kinfo, u8 drive)
 	struct mmap *ammap;
 	kprint("Only 10 remote holes in a heck of a long time!\n");
 
-	if (kgdt_init() == -1) {
-		kprint("Failed to initialize kernel GDT!\n");
-		return;
-	}
-
-	kprint("GDT configured!\n");
-
 	if (idt_init() == -1) {
 		kprint("Failed to initialize IDT\n");
 		return;
blob - 9a60bed7857dc8a5730d6c49352efc797ae6b597
blob + 1334a6fdb5ae068fda2367bb6c91c9a8cc0bfc92
--- kernel/kmmap.h
+++ kernel/kmmap.h
@@ -16,5 +16,3 @@ struct kinfo {
 
 struct mmap* kmmap_init(struct kinfo *);
 u64 *allocate_memory(u64 bytes);
-
-s8 kgdt_init(void);
blob - 4eabc87c4c005efb8cc4af679eae19108c35cdd9 (mode 644)
blob + /dev/null
--- kernel/lgdt.s
+++ /dev/null
@@ -1,5 +0,0 @@
-global load_gdt
-
-load_gdt:
-	lgdt [rdi]
-	ret