Skip to content

Commit

Permalink
target/hppa: fix do_stdby_e()
Browse files Browse the repository at this point in the history
stdby,e,m was writing data from the wrong half of the register
into memory for cases 0-3.

Fixes: 25460fc ("target/hppa: Implement STDBY")
Signed-off-by: Sven Schnelle <svens@stackframe.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20240319161921.487080-7-svens@stackframe.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
(cherry picked from commit 518d2f4)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
  • Loading branch information
svenschnelle authored and Michael Tokarev committed Mar 21, 2024
1 parent b0a0ec4 commit 242370f
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions target/hppa/op_helper.c
Original file line number Diff line number Diff line change
Expand Up @@ -281,17 +281,17 @@ static void do_stdby_e(CPUHPPAState *env, target_ulong addr, uint64_t val,
case 3:
/* The 3 byte store must appear atomic. */
if (parallel) {
atomic_store_mask32(env, addr - 3, val, 0xffffff00u, ra);
atomic_store_mask32(env, addr - 3, val >> 32, 0xffffff00u, ra);
} else {
cpu_stw_data_ra(env, addr - 3, val >> 16, ra);
cpu_stb_data_ra(env, addr - 1, val >> 8, ra);
cpu_stw_data_ra(env, addr - 3, val >> 48, ra);
cpu_stb_data_ra(env, addr - 1, val >> 40, ra);
}
break;
case 2:
cpu_stw_data_ra(env, addr - 2, val >> 16, ra);
cpu_stw_data_ra(env, addr - 2, val >> 48, ra);
break;
case 1:
cpu_stb_data_ra(env, addr - 1, val >> 24, ra);
cpu_stb_data_ra(env, addr - 1, val >> 56, ra);
break;
default:
/* Nothing is stored, but protection is checked and the
Expand Down

0 comments on commit 242370f

Please sign in to comment.