You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
enter_unreal_mode should be the very first thing in stage2 main, because the screen write call touches some memory above 64k (movzx ebx, byte ptr ds:[ecx] with ecx=0x13ccc)
error output in bochs: 00017458470e[CPU0 ] read_virtual_checks(): read beyond limit
Rust generates some code that uses ss for accesses (mov eax, dword ptr ss:[ebp+edi*8+4], where ss is the default for ebp), and enter_unreal_mode only sets up ds. Unsure how this should be fixed properly - set ss to 32 bit as well?
error output in bochs: 00695082304e[CPU0 ] stackPrefetch(4): access [0x00013ff8] > SS.limit [0x0000ffff]
As for why this works in qemu in emulation mode: qemu is really inaccurate :(
The text was updated successfully, but these errors were encountered:
Two issues here:
enter_unreal_mode
should be the very first thing in stage2 main, because the screen write call touches some memory above 64k (movzx ebx, byte ptr ds:[ecx]
withecx=0x13ccc
)error output in bochs:
00017458470e[CPU0 ] read_virtual_checks(): read beyond limit
Rust generates some code that uses
ss
for accesses (mov eax, dword ptr ss:[ebp+edi*8+4]
, where ss is the default for ebp), and enter_unreal_mode only sets upds
. Unsure how this should be fixed properly - set ss to 32 bit as well?error output in bochs:
00695082304e[CPU0 ] stackPrefetch(4): access [0x00013ff8] > SS.limit [0x0000ffff]
As for why this works in qemu in emulation mode: qemu is really inaccurate :(
The text was updated successfully, but these errors were encountered: