[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 04/10] tcg/mips: Allow JAL to be out of range in tcg_out_bswap_sub
From: |
Richard Henderson |
Subject: |
[PULL 04/10] tcg/mips: Allow JAL to be out of range in tcg_out_bswap_subr |
Date: |
Mon, 20 Sep 2021 19:25:28 -0700 |
Weaning off of unique alignment requirements, so allow JAL
to not reach the target. TCG_TMP1 is always available for
use as a scratch because it is clobbered by the subroutine
being called.
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
tcg/mips/tcg-target.c.inc | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/tcg/mips/tcg-target.c.inc b/tcg/mips/tcg-target.c.inc
index 320795a637..3a40af8799 100644
--- a/tcg/mips/tcg-target.c.inc
+++ b/tcg/mips/tcg-target.c.inc
@@ -573,8 +573,10 @@ static void tcg_out_bswap16(TCGContext *s, TCGReg ret,
TCGReg arg, int flags)
static void tcg_out_bswap_subr(TCGContext *s, const tcg_insn_unit *sub)
{
- bool ok = tcg_out_opc_jmp(s, OPC_JAL, sub);
- tcg_debug_assert(ok);
+ if (!tcg_out_opc_jmp(s, OPC_JAL, sub)) {
+ tcg_out_movi(s, TCG_TYPE_PTR, TCG_TMP1, (uintptr_t)sub);
+ tcg_out_opc_reg(s, OPC_JALR, TCG_REG_RA, TCG_TMP1, 0);
+ }
}
static void tcg_out_bswap32(TCGContext *s, TCGReg ret, TCGReg arg, int flags)
--
2.25.1
- [PULL 00/10] tcg patch queue, v2, Richard Henderson, 2021/09/20
- [PULL 02/10] accel/tcg: Restrict cpu_handle_halt() to sysemu, Richard Henderson, 2021/09/20
- [PULL 03/10] tcg/mips: Drop inline markers, Richard Henderson, 2021/09/20
- [PULL 04/10] tcg/mips: Allow JAL to be out of range in tcg_out_bswap_subr,
Richard Henderson <=
- [PULL 05/10] tcg/mips: Unset TCG_TARGET_HAS_direct_jump, Richard Henderson, 2021/09/20
- [PULL 06/10] tcg/mips: Drop special alignment for code_gen_buffer, Richard Henderson, 2021/09/20
- [PULL 01/10] include/exec: Move cpu_signal_handler declaration, Richard Henderson, 2021/09/20
- [PULL 08/10] tcg/sparc: Introduce tcg_out_mov_delay, Richard Henderson, 2021/09/20
- [PULL 07/10] tcg/sparc: Drop inline markers, Richard Henderson, 2021/09/20
- [PULL 10/10] tcg/riscv: Remove add with zero on user-only memory access, Richard Henderson, 2021/09/20
- [PULL 09/10] hw/core: Make do_unaligned_access noreturn, Richard Henderson, 2021/09/20