[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[qemu-xen staging-4.13] target/alpha: fix tlb_fill trap_arg2 value for instruction fetch



commit 4bfd496be385073644f639e58790b84bf5f7a5ef
Author:     Aurelien Jarno <aurelien@xxxxxxxxxxx>
AuthorDate: Thu Aug 22 10:45:14 2019 -0700
Commit:     Michael Roth <mdroth@xxxxxxxxxxxxxxxxxx>
CommitDate: Sun Oct 27 23:31:56 2019 -0500

    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@xxxxxxxxxx
    Signed-off-by: Aurelien Jarno <aurelien@xxxxxxxxxxx>
    [rth: Test MMU_DATA_LOAD and MMU_DATA_STORE instead of implying them.]
    Signed-off-by: Richard Henderson <richard.henderson@xxxxxxxxxx>
    (cherry picked from commit cb1de55a83eaca9ee32be9c959dca99e11f2fea8)
    Signed-off-by: Michael Roth <mdroth@xxxxxxxxxxxxxxxxxx>
---
 target/alpha/helper.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/target/alpha/helper.c b/target/alpha/helper.c
index 93b8e788b1..d0cc623192 100644
--- a/target/alpha/helper.c
+++ b/target/alpha/helper.c
@@ -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);
     }
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.