mirror of
https://github.com/xemu-project/xemu.git
synced 2025-02-03 18:53:12 +00:00
target/alpha: fix tlb_fill trap_arg2 value for instruction fetch
Commit e41c94529740cc26 ("target/alpha: Convert to CPUClass::tlb_fill") slightly changed the way the trap_arg2 value is computed in case of TLB fill. The type of the variable used in the ternary operator has been changed from an int to an enum. This causes the -1 value to not be sign-extended to 64-bit in case of an instruction fetch. The trap_arg2 ends up with 0xffffffff instead of 0xffffffffffffffff. Fix that by changing the -1 into -1LL. This fixes the execution of user space processes in qemu-system-alpha. Fixes: e41c94529740cc26 Cc: qemu-stable@nongnu.org Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> [rth: Test MMU_DATA_LOAD and MMU_DATA_STORE instead of implying them.] Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
586f3dced9
commit
cb1de55a83
@ -283,7 +283,9 @@ bool alpha_cpu_tlb_fill(CPUState *cs, vaddr addr, int size,
|
||||
cs->exception_index = EXCP_MMFAULT;
|
||||
env->trap_arg0 = addr;
|
||||
env->trap_arg1 = fail;
|
||||
env->trap_arg2 = (access_type == MMU_INST_FETCH ? -1 : access_type);
|
||||
env->trap_arg2 = (access_type == MMU_DATA_LOAD ? 0ull :
|
||||
access_type == MMU_DATA_STORE ? 1ull :
|
||||
/* access_type == MMU_INST_FETCH */ -1ull);
|
||||
cpu_loop_exit_restore(cs, retaddr);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user