mirror of
https://github.com/mii443/qemu.git
synced 2025-12-03 19:18:23 +00:00
tcg/arm: Fix SIGILL in tcg_out_qemu_st_direct
When tcg_out_qemu_st_{index,direct} were merged, the direct case for
MO_64 was omitted, causing qemu_st_i64 to be encoded as 0xffffffff due
to underflow when adding h.base and h.index.
Fixes: 1df6d611bd ("tcg/arm: Introduce HostAddress")
Signed-off-by: Joseph Burt <caseorum@gmail.com>
Message-Id: <20240121211439.100829-1-caseorum@gmail.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
(cherry picked from commit 9f6523e8e4)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
This commit is contained in:
committed by
Michael Tokarev
parent
76a9da39d4
commit
c173670033
@@ -1667,6 +1667,9 @@ static void tcg_out_qemu_st_direct(TCGContext *s, MemOp opc, TCGReg datalo,
|
||||
} else {
|
||||
tcg_out_strd_r(s, h.cond, datalo, h.base, h.index);
|
||||
}
|
||||
} else if (h.index < 0) {
|
||||
tcg_out_st32_12(s, h.cond, datalo, h.base, 0);
|
||||
tcg_out_st32_12(s, h.cond, datahi, h.base, 4);
|
||||
} else if (h.index_scratch) {
|
||||
tcg_out_st32_rwb(s, h.cond, datalo, h.index, h.base);
|
||||
tcg_out_st32_12(s, h.cond, datahi, h.index, 4);
|
||||
|
||||
Reference in New Issue
Block a user