tcg/mips: Allow JAL to be out of range in tcg_out_bswap_subr
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>
This commit is contained in:
parent
10d4af5810
commit
d7fc9f48c3
@ -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)
|
static void tcg_out_bswap_subr(TCGContext *s, const tcg_insn_unit *sub)
|
||||||
{
|
{
|
||||||
bool ok = tcg_out_opc_jmp(s, OPC_JAL, sub);
|
if (!tcg_out_opc_jmp(s, OPC_JAL, sub)) {
|
||||||
tcg_debug_assert(ok);
|
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)
|
static void tcg_out_bswap32(TCGContext *s, TCGReg ret, TCGReg arg, int flags)
|
||||||
|
Loading…
Reference in New Issue
Block a user