I have the same issue.
In my case bochs crash and the message is:
00017908527e[CPU0 ] interrupt(long mode): IDT entry extended attributes DWORD4 TYPE != 0
00017908527e[CPU0 ] interrupt(long mode): IDT entry extended attributes DWORD4 TYPE != 0
00017908527e[CPU0 ] interrupt(long mode): IDT entry extended attributes DWORD4 TYPE != 0
00017908527i[CPU0 ] CPU is in long mode (active)
00017908527i[CPU0 ] CS.mode = 64 bit
00017908527i[CPU0 ] SS.mode = 64 bit
It happens olnly if after entering long mode i set rsp to a value > 1MB.
Triple fault with RSP > 1MB
Triple fault with RSP > 1MB
Last edited by Combuster on Thu Oct 01, 2015 1:50 am, edited 1 time in total.
Reason: No, it's not the same issue. Thread split.
Reason: No, it's not the same issue. Thread split.
- BASICFreak
- Member

- Posts: 284
- Joined: Fri Jan 16, 2009 8:34 pm
- Location: Louisiana, USA
Re: Strange error after moving to 64-bit
Taking over a thread? Not to mention it is (nearly) 6 years old...
Either way not enough info...
Do you have A20 enabled, if not only odd MBs are available.
Either way not enough info...
Do you have A20 enabled, if not only odd MBs are available.
BOS Source Thanks to GitHub
BOS Expanded Commentary
Both under active development!
BOS Expanded Commentary
Both under active development!
Sortie wrote:
- Don't play the role of an operating systems developer, be one.
- Be truly afraid of undefined [behavior].
- Your operating system should be itself, not fight what it is.
Re: Strange error after moving to 64-bit
Does any other memory access to >1MiB cause a crash? Do you have proper page tables for the memory you use? If you use C, the stack also must be properly aligned.spectrum wrote:It happens olnly if after entering long mode i set rsp to a value > 1MB.
"If you don't fail at least 90 percent of the time, you're not aiming high enough."
- Alan Kay
- Alan Kay
Re: Strange error after moving to 64-bit
Bochs is telling you the problem.
The fourth DWORD of each 64-bit IDT must be zero. The interrupt that is occurring has a value other than zero in that entry, making it invalid. You may get this if you are trying to use a 32-bit IDT structure in 64-bit.
Make sure you have created a whole new 64-bit IDT and reloaded it with the LIDT instruction before enabling interrupts in 64-bit mode.
You can find the 64-bit IDT structure here: Interrupt Descriptor Table
The fourth DWORD of each 64-bit IDT must be zero. The interrupt that is occurring has a value other than zero in that entry, making it invalid. You may get this if you are trying to use a 32-bit IDT structure in 64-bit.
Make sure you have created a whole new 64-bit IDT and reloaded it with the LIDT instruction before enabling interrupts in 64-bit mode.
You can find the 64-bit IDT structure here: Interrupt Descriptor Table
Project: OZone
Source: GitHub
Current Task: LIB/OBJ file support
"The more they overthink the plumbing, the easier it is to stop up the drain." - Montgomery Scott
Source: GitHub
Current Task: LIB/OBJ file support
"The more they overthink the plumbing, the easier it is to stop up the drain." - Montgomery Scott


