General protection fault after reloading CS

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
LolzDEV
Posts: 1
Joined: Wed May 25, 2022 2:39 am
Location: Italy

General protection fault after reloading CS

Post by LolzDEV »

I'm following the GDT guide but according to gdb

Code: Select all

jmp 0x08:reload_cs
is causing a "General Protection Fault" (0xd), according to the wiki this exception is thrown when a code segment is used improperly but as far as I understand if the GDT is not set segmentation is not enabled. What's going on? I cannot really understand
PS: I'm using GRUB2 as bootloader with Multiboot2 specification and I'm in protected mode
Octocontrabass
Member
Member
Posts: 5563
Joined: Mon Mar 25, 2013 7:01 pm

Re: General protection fault after reloading CS

Post by Octocontrabass »

LolzDEV wrote:as far as I understand if the GDT is not set segmentation is not enabled.
Segmentation is always enabled.
LolzDEV wrote:What's going on?
The CPU is unable to use the segment descriptor corresponding to segment selector 8 as a code segment.
  • Maybe the selector is wrong, and your code segment needs a different selector.
  • Maybe you've made a mistake defining the descriptor and it's not a valid code segment.
  • Maybe you've made a mistake loading the GDTR and the CPU isn't reading your GDT.
It's hard to say for sure without more information. For example, post a link to your git repository, or provide a register dump using QEMU's "-d int" option.
Post Reply