Revision 54ca9095

b/cpu-exec.c
904 904
        /* we restore the process signal mask as the sigreturn should
905 905
           do it (XXX: use sigsetjmp) */
906 906
        sigprocmask(SIG_SETMASK, old_set, NULL);
907
        raise_exception_err(EXCP0E_PAGE, env->error_code);
907
        raise_exception_err(env->exception_index, env->error_code);
908 908
    } else {
909 909
        /* activate soft MMU for this block */
910 910
        env->hflags |= HF_SOFTMMU_MASK;
b/target-i386/helper.c
3478 3478
            }
3479 3479
        }
3480 3480
        if (retaddr)
3481
            raise_exception_err(EXCP0E_PAGE, env->error_code);
3481
            raise_exception_err(env->exception_index, env->error_code);
3482 3482
        else
3483
            raise_exception_err_norestore(EXCP0E_PAGE, env->error_code);
3483
            raise_exception_err_norestore(env->exception_index, env->error_code);
3484 3484
    }
3485 3485
    env = saved_env;
3486 3486
}
b/target-i386/helper2.c
566 566
    env->cr[2] = addr;
567 567
    env->error_code = (is_write << PG_ERROR_W_BIT);
568 568
    env->error_code |= PG_ERROR_U_MASK;
569
    env->exception_index = EXCP0E_PAGE;
569 570
    return 1;
570 571
}
571 572

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

  

Also available in: Unified diff