mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 00:33:55 -06:00
generate GPF if non canonical addresses
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1681 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
56c8f68f1d
commit
54ca9095f0
3 changed files with 8 additions and 5 deletions
|
@ -566,6 +566,7 @@ int cpu_x86_handle_mmu_fault(CPUX86State *env, target_ulong addr,
|
|||
env->cr[2] = addr;
|
||||
env->error_code = (is_write << PG_ERROR_W_BIT);
|
||||
env->error_code |= PG_ERROR_U_MASK;
|
||||
env->exception_index = EXCP0E_PAGE;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -620,8 +621,9 @@ int cpu_x86_handle_mmu_fault(CPUX86State *env, target_ulong addr,
|
|||
/* test virtual address sign extension */
|
||||
sext = (int64_t)addr >> 47;
|
||||
if (sext != 0 && sext != -1) {
|
||||
error_code = 0;
|
||||
goto do_fault;
|
||||
env->error_code = 0;
|
||||
env->exception_index = EXCP0D_GPF;
|
||||
return 1;
|
||||
}
|
||||
|
||||
pml4e_addr = ((env->cr[3] & ~0xfff) + (((addr >> 39) & 0x1ff) << 3)) &
|
||||
|
@ -862,6 +864,7 @@ int cpu_x86_handle_mmu_fault(CPUX86State *env, target_ulong addr,
|
|||
(env->cr[4] & CR4_PAE_MASK))
|
||||
error_code |= PG_ERROR_I_D_MASK;
|
||||
env->error_code = error_code;
|
||||
env->exception_index = EXCP0E_PAGE;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue