target/mips: Fix MIPS64 MFC0 UserLocal on BE host
authorJames Hogan <james.hogan@imgtec.com>
Tue, 18 Jul 2017 11:55:46 +0000 (12:55 +0100)
committerYongbok Kim <yongbok.kim@imgtec.com>
Thu, 20 Jul 2017 21:42:26 +0000 (22:42 +0100)
commite40df9a80bb7cdb0a4ca650985fa9fe572097fa7
treed6c8a1780a03640ac73c668530012cca9db6a957
parent25d0233c1ac6cd14a15fcc834f1de3b179037b1d
target/mips: Fix MIPS64 MFC0 UserLocal on BE host

Using MFC0 to read CP0_UserLocal uses tcg_gen_ld32s_tl, however
CP0_UserLocal is a target_ulong. On a big endian host with a MIPS64
target this reads and sign extends the more significant half of the
64-bit register.

Fix this by using ld_tl to load the whole target_ulong and ext32s_tl to
sign extend it, as done for various other target_ulong COP0 registers.

Fixes: d279279e2b5c ("target-mips: implement UserLocal Register")
Signed-off-by: James Hogan <james.hogan@imgtec.com>
Cc: Yongbok Kim <yongbok.kim@imgtec.com>
Cc: Aurelien Jarno <aurelien@aurel32.net>
Cc: Petar Jovanovic <petar.jovanovic@imgtec.com>
Reviewed-by: Yongbok Kim <yongbok.kim@imgtec.com>
Signed-off-by: Yongbok Kim <yongbok.kim@imgtec.com>
target/mips/translate.c