mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-21 09:02:00 -06:00
tcg/loongarch64: Implement goto_ptr
Signed-off-by: WANG Xuerui <git@xen0n.name> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-Id: <20211221054105.178795-11-git@xen0n.name> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
dacc51720d
commit
e3b15766b9
2 changed files with 32 additions and 0 deletions
17
tcg/loongarch64/tcg-target-con-set.h
Normal file
17
tcg/loongarch64/tcg-target-con-set.h
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
/* SPDX-License-Identifier: MIT */
|
||||||
|
/*
|
||||||
|
* Define LoongArch target-specific constraint sets.
|
||||||
|
*
|
||||||
|
* Copyright (c) 2021 WANG Xuerui <git@xen0n.name>
|
||||||
|
*
|
||||||
|
* Based on tcg/riscv/tcg-target-con-set.h
|
||||||
|
*
|
||||||
|
* Copyright (c) 2021 Linaro
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* C_On_Im(...) defines a constraint set with <n> outputs and <m> inputs.
|
||||||
|
* Each operand should be a sequence of constraint letters as defined by
|
||||||
|
* tcg-target-con-str.h; the constraint combination is inclusive or.
|
||||||
|
*/
|
||||||
|
C_O0_I1(r)
|
|
@ -397,9 +397,24 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc,
|
||||||
tcg_out_mb(s, a0);
|
tcg_out_mb(s, a0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case INDEX_op_goto_ptr:
|
||||||
|
tcg_out_opc_jirl(s, TCG_REG_ZERO, a0, 0);
|
||||||
|
break;
|
||||||
|
|
||||||
case INDEX_op_mov_i32: /* Always emitted via tcg_out_mov. */
|
case INDEX_op_mov_i32: /* Always emitted via tcg_out_mov. */
|
||||||
case INDEX_op_mov_i64:
|
case INDEX_op_mov_i64:
|
||||||
default:
|
default:
|
||||||
g_assert_not_reached();
|
g_assert_not_reached();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static TCGConstraintSetIndex tcg_target_op_def(TCGOpcode op)
|
||||||
|
{
|
||||||
|
switch (op) {
|
||||||
|
case INDEX_op_goto_ptr:
|
||||||
|
return C_O0_I1(r);
|
||||||
|
|
||||||
|
default:
|
||||||
|
g_assert_not_reached();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue