My program code is loaded at 0xA0000000
I have confirmed that my code properly executes and is indeed loaded at 0xA0000000(I did a cli from usermode and got a general protection fault. The eip was A0000000)
(also, I have copied my test_paged_task code so that it is aligned within a page)
But now I have a very strange problem. I can relative jmp but not absolute.
(this is all in yasm)
Code: Select all
global test_paged_task
test_paged_task:
.t:
mov eax,0xA0000000
nop
nop
nop
int 80 ;this makes the bug show up in emulation(commented it works fine in emulation, but on real HW it breaks)
jmp dword eax
but here is the strange thing:
Code: Select all
global test_paged_task
test_paged_task:
.t:
mov eax,0xA0000000
nop
nop
nop
int 80
jmp dword .t
Also, the first one breaks on emulation and real hardware; the second one works on emulation and real hardware.