| 566 |
env->cr[2] = addr; |
env->cr[2] = addr; |
| 567 |
env->error_code = (is_write << PG_ERROR_W_BIT); |
env->error_code = (is_write << PG_ERROR_W_BIT); |
| 568 |
env->error_code |= PG_ERROR_U_MASK; |
env->error_code |= PG_ERROR_U_MASK; |
| 569 |
|
env->exception_index = EXCP0E_PAGE; |
| 570 |
return 1; |
return 1; |
| 571 |
} |
} |
| 572 |
|
|
| 621 |
/* test virtual address sign extension */ |
/* test virtual address sign extension */ |
| 622 |
sext = (int64_t)addr >> 47; |
sext = (int64_t)addr >> 47; |
| 623 |
if (sext != 0 && sext != -1) { |
if (sext != 0 && sext != -1) { |
| 624 |
error_code = 0; |
env->error_code = 0; |
| 625 |
goto do_fault; |
env->exception_index = EXCP0D_GPF; |
| 626 |
|
return 1; |
| 627 |
} |
} |
| 628 |
|
|
| 629 |
pml4e_addr = ((env->cr[3] & ~0xfff) + (((addr >> 39) & 0x1ff) << 3)) & |
pml4e_addr = ((env->cr[3] & ~0xfff) + (((addr >> 39) & 0x1ff) << 3)) & |
| 864 |
(env->cr[4] & CR4_PAE_MASK)) |
(env->cr[4] & CR4_PAE_MASK)) |
| 865 |
error_code |= PG_ERROR_I_D_MASK; |
error_code |= PG_ERROR_I_D_MASK; |
| 866 |
env->error_code = error_code; |
env->error_code = error_code; |
| 867 |
|
env->exception_index = EXCP0E_PAGE; |
| 868 |
return 1; |
return 1; |
| 869 |
} |
} |
| 870 |
|
|