The following x86 instruction is causing a triple fault exception (cpu reset). Any idea why?
0042F94B F20F100520E44300 movsd xmm0,qword [dword 0x43e420]
The following code was inserted just prior to that instruction to verify that memory at 0x43e420 is accessible (it is):
0042F945 8B0520E44300 mov eax,[dword 0x43e420]
X86 is in protected mode. GDT is setup properly, the segment registers are all 0x10 except cs which is 0x8. Both GDT entries are flat and use up the entire 32-bit memory space. Alignment Check (AC) on eflags is not set.
Memory at 0x43e420 is:
0x43e420: 00 00 00 00 00 00 00 40
Bochs emulator outputs these messages once that instruction is executed:
interrupt(): gate.type(9) != {5,6,7,14,15}
interrupt(): gate descriptor is not valid sys seg (vector=0x0d)
interrupt(): gate descriptor is not valid sys seg (vector=0x08)
This is part of OS boot code; not an application under any operating system.
movsd
is a dword-sized string move. Did you perhaps meanmovq
? – 500 - Internal Server Error