[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 33/35] tcg/mips: Allow JAL to be out of range in tcg_out_bswap_sub
From: |
Richard Henderson |
Subject: |
[PULL 33/35] tcg/mips: Allow JAL to be out of range in tcg_out_bswap_subr |
Date: |
Thu, 16 Sep 2021 08:30:23 -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.
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 29/35] target/tricore: Restrict has_work() handler to sysemu, (continued)
- [PULL 29/35] target/tricore: Restrict has_work() handler to sysemu, Richard Henderson, 2021/09/16
- [PULL 16/35] target/m68k: Restrict has_work() handler to sysemu, Richard Henderson, 2021/09/16
- [PULL 23/35] target/riscv: Restrict has_work() handler to sysemu and TCG, Richard Henderson, 2021/09/16
- [PULL 15/35] target/i386: Restrict has_work() handler to sysemu and TCG, Richard Henderson, 2021/09/16
- [PULL 30/35] target/xtensa: Restrict has_work() handler to sysemu, Richard Henderson, 2021/09/16
- [PULL 17/35] target/microblaze: Restrict has_work() handler to sysemu, Richard Henderson, 2021/09/16
- [PULL 21/35] target/ppc: Introduce PowerPCCPUClass::has_work(), Richard Henderson, 2021/09/16
- [PULL 24/35] target/rx: Restrict has_work() handler to sysemu, Richard Henderson, 2021/09/16
- [PULL 28/35] target/sparc: Restrict has_work() handler to sysemu, Richard Henderson, 2021/09/16
- [PULL 27/35] target/sparc: Remove pointless use of CONFIG_TCG definition, Richard Henderson, 2021/09/16
- [PULL 33/35] tcg/mips: Allow JAL to be out of range in tcg_out_bswap_subr,
Richard Henderson <=
- [PULL 35/35] tcg/mips: Drop special alignment for code_gen_buffer, Richard Henderson, 2021/09/16
- [PULL 31/35] accel: Add missing AccelOpsClass::has_work() and drop SysemuCPUOps one, Richard Henderson, 2021/09/16
- [PULL 18/35] target/mips: Restrict has_work() handler to sysemu and TCG, Richard Henderson, 2021/09/16
- [PULL 25/35] target/s390x: Restrict has_work() handler to sysemu and TCG, Richard Henderson, 2021/09/16
- [PULL 32/35] tcg/mips: Drop inline markers, Richard Henderson, 2021/09/16
- [PULL 20/35] target/openrisc: Restrict has_work() handler to sysemu, Richard Henderson, 2021/09/16
- [PULL 26/35] target/sh4: Restrict has_work() handler to sysemu, Richard Henderson, 2021/09/16
- [PULL 34/35] tcg/mips: Unset TCG_TARGET_HAS_direct_jump, Richard Henderson, 2021/09/16
- Re: [PULL 00/35] tcg patch queue, Peter Maydell, 2021/09/20