diff options
author | Clyne Sullivan <clyne@bitgloo.com> | 2024-09-29 08:47:28 -0400 |
---|---|---|
committer | Clyne Sullivan <clyne@bitgloo.com> | 2024-09-29 08:47:28 -0400 |
commit | 2d0245a85deb62cbed66c053f80f339e0d97ed70 (patch) | |
tree | 8f3a77e0d7a86bf02e97bc5625eafdfa27b10872 | |
parent | 6da213d840f07a2921091a6d2fab7efa5ec5cdfa (diff) |
user mode: fix segments
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | idt.cpp | 12 | ||||
-rw-r--r-- | idt.hpp | 1 |
3 files changed, 14 insertions, 1 deletions
@@ -39,5 +39,5 @@ clean: run: myos.iso @echo " QEMU" - @qemu-system-i386 -drive file=$<,index=2,media=cdrom -monitor stdio -no-reboot -s -S #-d int + @qemu-system-i386 -drive file=$<,index=2,media=cdrom -monitor stdio -no-reboot #-s -S #-d int @@ -62,10 +62,22 @@ struct StubEntry asm volatile(R"( pusha + mov %%ds, %%ax + push %%ax + mov $0x10, %%ax + mov %%ax, %%ds + mov %%ax, %%es + mov %%ax, %%fs + mov %%ax, %%gs push %0 cld call interruptGeneralHandler pop %%eax + pop %%ax + mov %%ax, %%ds + mov %%ax, %%es + mov %%ax, %%fs + mov %%ax, %%gs popa add $0x4, %%esp iret @@ -7,6 +7,7 @@ struct Registers { std::uint32_t inum; + std::uint32_t ds; std::uint32_t edi, esi, ebp, esp, ebx, edx, ecx, eax; std::uint32_t error; std::uint32_t eip, cs, eflags; |