From 7d869a3cb458c639932ed25af4be0b9643c15fa7 Mon Sep 17 00:00:00 2001 From: SpookyDervish Date: Thu, 29 Jan 2026 08:04:16 +1100 Subject: [PATCH] gdt working --- OVMFbin/OVMF_VARS-pure-efi.fd | Bin 131072 -> 131072 bytes kernel/Makefile | 23 ++++++++++------------- kernel/bin/CustomOS.img | Bin 48000000 -> 48000000 bytes kernel/bin/kernel.elf | Bin 18712 -> 26984 bytes kernel/lib/gdt/gdt.o | Bin 0 -> 5064 bytes kernel/lib/gdt/gdt_asm.o | Bin 0 -> 592 bytes kernel/lib/kernelUtil.o | Bin 3880 -> 4080 bytes kernel/src/gdt/gdt.asm | 23 +++++++++++++++++++++++ kernel/src/gdt/gdt.cpp | 11 +++++++++++ kernel/src/gdt/gdt.h | 29 +++++++++++++++++++++++++++++ kernel/src/kernelUtil.cpp | 6 ++++++ 11 files changed, 79 insertions(+), 13 deletions(-) create mode 100644 kernel/lib/gdt/gdt.o create mode 100644 kernel/lib/gdt/gdt_asm.o create mode 100644 kernel/src/gdt/gdt.asm create mode 100644 kernel/src/gdt/gdt.cpp create mode 100644 kernel/src/gdt/gdt.h diff --git a/OVMFbin/OVMF_VARS-pure-efi.fd b/OVMFbin/OVMF_VARS-pure-efi.fd index dccf4a9b585e8df090b40405fa2f1bbb86c90509..829b1b48f8d121b759f5f99b58567fb442f83d27 100644 GIT binary patch delta 66 zcmZo@;Am*z*ifOxcxCcIEA7b#%(hHU2stuYz$$OD)*L6stD6s6o#otYwd|PZW`k81 WTtS59rVk3N%@aOvpYWOS0T%$@OCL1= delta 439 zcmZo@;Am*z*ifOxxM=cO9qq{n%(iTf&^BV6d`nMh@){il#>Jb@>YU}Ayv;;y^8vF- zjFat*lqP@BW!YR|QN%d;oUYR31zIeV1*~!=-_TP5Ygj_6hNYxxSVpRb<)ms@L8^w8 gq-t12tcDI97sk~<#gl_KeNbR+-tcYn1gi&J0M=x$PXGV_ diff --git a/kernel/Makefile b/kernel/Makefile index 63d9893..ae40d4f 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -1,23 +1,14 @@ - OSNAME = CustomOS GNUEFI = ../gnu-efi OVMFDIR = ../OVMFbin LDS = kernel.ld CC = gcc +ASMC = nasm LD = ld CFLAGS = -ffreestanding -fshort-wchar -LDFLAGS = -T $(LDS) -static -Bsymbolic -nostdlib -OSNAME = CustomOS - -GNUEFI = ../gnu-efi -OVMFDIR = ../OVMFbin -LDS = kernel.ld -CC = gcc -LD = ld - -CFLAGS = -ffreestanding -fshort-wchar +ASMFLAGS = LDFLAGS = -T $(LDS) -static -Bsymbolic -nostdlib SRCDIR := src @@ -27,8 +18,10 @@ BOOTEFI := $(GNUEFI)/x86_64/bootloader/main.efi rwildcard=$(foreach d,$(wildcard $(1:=/*)),$(call rwildcard,$d,$2) $(filter $(subst *,%,$2),$d)) -SRC = $(call rwildcard,$(SRCDIR),*.cpp) +SRC = $(call rwildcard,$(SRCDIR),*.cpp) +ASMSRC = $(call rwildcard,$(SRCDIR),*.asm) OBJS = $(patsubst $(SRCDIR)/%.cpp, $(OBJDIR)/%.o, $(SRC)) +OBJS += $(patsubst $(SRCDIR)/%.asm, $(OBJDIR)/%_asm.o, $(ASMSRC)) DIRS = $(wildcard $(SRCDIR)/*) kernel: $(OBJS) link @@ -38,9 +31,13 @@ $(OBJDIR)/%.o: $(SRCDIR)/%.cpp @ mkdir -p $(@D) $(CC) $(CFLAGS) -c $^ -o $@ +$(OBJDIR)/%_asm.o: $(SRCDIR)/%.asm + @ echo !==== ASSEMBLING $^ + @ mkdir -p $(@D) + $(ASMC) $(ASMFLAGS) $^ -f elf64 -o $@ + link: @ echo !==== LINKING - @echo $(OBJS) $(LD) $(LDFLAGS) -o $(BUILDDIR)/kernel.elf $(OBJS) setup: diff --git a/kernel/bin/CustomOS.img b/kernel/bin/CustomOS.img index e900d934761c8b96ba44dbf10e2b172f58188670..ef6e386ad51f53c378d02005797fb105a9b264ec 100644 GIT binary patch delta 7810 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 delta 7783 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 diff --git a/kernel/bin/kernel.elf b/kernel/bin/kernel.elf index d07eeb226d91ccf158d539c8337da923f32550f2..949fb6aab50fde3b28eae6e3295245a355b2e7aa 100755 GIT binary patch delta 4670 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 NMWSf+($lpe@jrCJLL&eG diff --git a/kernel/lib/gdt/gdt.o b/kernel/lib/gdt/gdt.o new file mode 100644 index 0000000000000000000000000000000000000000..8dae9058cd9b724415a49586006f3cfd085bc31d GIT binary patch literal 5064 zcmeHLy-or_5S~N)tt7E9(E=+q(anLu!opkv2!*lI#KOV@PD~WIa7!YUuV5^#d=wwU zhp_PpbOvUCtdN-4Sj;AS-^@4j?a!C1_OX0=lJY!|;lVMCGhqR$nQVP`%za6L)i$~d=%Gt$kHdiot zlgsA){Gp%o4+iH><2Q?Q9w#}GxBZZmvH{jyE@jp z`|lx7oX>TEfc2X~Fp6HVfV{+$tyjO?zl@?qoD+Y-V3}*yyXT_2P7d1J)l&V5^;K>r k9rcNRoq75XUGJ#$&iXa(6L9ZJ&ui24AFRI=A)~AR2EhJ2)c^nh literal 0 HcmV?d00001 diff --git a/kernel/lib/gdt/gdt_asm.o b/kernel/lib/gdt/gdt_asm.o new file mode 100644 index 0000000000000000000000000000000000000000..390475fc925fa706a247ed37677ca0fdc3f0fc33 GIT binary patch literal 592 zcmb<-^>JfjWMqH=Mg}_u1P><4z~F#jLfH-stPD&@qU13_c7ZS(n)U{$Bc##91K(7s$UUJ4k`>66$G-d`QidpVFFYo3y=oc!vW<>Kxs*+IFt*g44{UBQn6bn-C|m@vh%*!yCF`fBlz^~aVsS2mPkv&GyGsbnTmYApCGP+L literal 0 HcmV?d00001 diff --git a/kernel/lib/kernelUtil.o b/kernel/lib/kernelUtil.o index 71589d4deb4351c5db8be6052d7750e13ad4224e..97509881b62d9a0c3f58325205dc273ff4b776c3 100644 GIT binary patch delta 539 zcmZ1>_d$Mw29p8LMlDq)9|Moh+8Zez-7Kma3=9k&ovuF&52PJ;efOW=qn8yZ0uuV* z(d+uoqx1L+Fu&XN1`4~I!J|8X!viQhIiE>Nz@t0#M~a8G2-v(5))$joncfREgLFFb z3A8ae^RhA3@vw7DZeyM#+06tJXJC+qPz?4!nu&ptVcBLwmV8D|ur8p`m&uH*;*9@6 zy;Su_KAkpX|t`&bVxHCRaS%e+z)}AOKPe z!pkN<xSb1nrAkPHwoPv+t=WBfSTk;k6#$K*yZd637RNr8JZ6R#a712aUK z%;byA!jofoRhVR$Cl_*yO@6@4GIBr5PZ9Qzxx7-B5Hufc(J3w?uZhSOK1$09aO|l`2kp(AdNVsjU{#x8cJ0{U)Uu<>Grx z8|ceS*89H+E3KpQ=T}D+cQQkDe5%?&!q}n~ibjKK=o=ZuuZ=fqqi^oWtC)T_W;~lE z9x{sN3JR7R83*2Y4X4qxTpFWmmH9y8$@2J?A#IOew76-zJY}5O9wjlc%X};$9Zx=n gwDpuwcS_5Hh;F|~ + +struct GDTDescriptor { + uint16_t Size; + uint64_t Offset; +}__attribute__((packed)); + +struct GDTEntry { + uint16_t Limit0; + uint16_t Base0; + uint8_t Base1; + uint8_t AccessByte; + uint8_t Limit1_Flags; + uint8_t Base2; +}__attribute__((packed)); + +struct GDT { + GDTEntry Null; // 0x00 + GDTEntry KernelCode; // 0x08 + GDTEntry KernelData; // 0x10 + GDTEntry UserNull; // 0x18 + GDTEntry UserCode; // 0x20 + GDTEntry UserData; // 0x28 +}__attribute__((packed)) __attribute__((aligned(0x1000))); + +extern GDT DefaultGDT; + +extern "C" void LoadGDT(GDTDescriptor* gdtDescriptor); \ No newline at end of file diff --git a/kernel/src/kernelUtil.cpp b/kernel/src/kernelUtil.cpp index 10347aa..76727f7 100644 --- a/kernel/src/kernelUtil.cpp +++ b/kernel/src/kernelUtil.cpp @@ -5,6 +5,7 @@ extern "C" void __stack_chk_fail(void) { } #include "kernelUtil.h" +#include "gdt/gdt.h" KernelInfo kernelInfo; PageTableManager pageTableManager = NULL; @@ -43,6 +44,11 @@ void PrepareMemory(BootInfo* bootInfo){ KernelInfo InitializeKernel(BootInfo* bootInfo){ + GDTDescriptor gdtDescriptor; + gdtDescriptor.Size = sizeof(GDT) - 1; + gdtDescriptor.Offset = (uint64_t)&DefaultGDT; + LoadGDT(&gdtDescriptor); + PrepareMemory(bootInfo); memset(bootInfo->framebuffer->BaseAddress, 0, bootInfo->framebuffer->BufferSize);