target-ppc: Fix rlwimi, rlwinm, rlwnm again
In63ae0915f8
, I arranged to use a 32-bit rotate, without considering the effect of a mask value that wraps around to the high bits of the word. [dwg: In2e11b15
this was partially fixed, but an edge case was still incorrect, which this fixes] Signed-off-by: Richard Henderson <rth@twiddle.net> [dwg: Folded with a revert of2e11b15
, an earlier buggy version of this patch which already went upstream] Tested-by: Anton Blanchard <anton@samba.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
7f2b1744b3
commit
820724d170
@ -1696,9 +1696,7 @@ static void gen_rlwinm(DisasContext *ctx)
|
||||
#endif
|
||||
mask = MASK(mb, me);
|
||||
|
||||
if (sh == 0) {
|
||||
tcg_gen_andi_tl(t_ra, t_rs, mask);
|
||||
} else if (mask <= 0xffffffffu) {
|
||||
if (mask <= 0xffffffffu) {
|
||||
TCGv_i32 t0 = tcg_temp_new_i32();
|
||||
tcg_gen_trunc_tl_i32(t0, t_rs);
|
||||
tcg_gen_rotli_i32(t0, t0, sh);
|
||||
|
Loading…
Reference in New Issue
Block a user