aboutsummaryrefslogtreecommitdiff
path: root/tcg/tci
diff options
context:
space:
mode:
authorRichard Henderson <rth@twiddle.net>2016-11-18 09:31:40 +0100
committerRichard Henderson <rth@twiddle.net>2017-01-10 08:06:11 -0800
commitf69d277ece43c42c7ab0144c2ff05ba740f6706b (patch)
tree630e59106af7a68dbb6f2587e5e286f6d9ff4b4c /tcg/tci
parent82790a870992bd87d5fd9e607f40859dcf4f82ac (diff)
downloadqemu-f69d277ece43c42c7ab0144c2ff05ba740f6706b.zip
qemu-f69d277ece43c42c7ab0144c2ff05ba740f6706b.tar.gz
qemu-f69d277ece43c42c7ab0144c2ff05ba740f6706b.tar.bz2
tcg: Transition flat op_defs array to a target callback
This will allow the target to tailor the constraints to the auto-detected ISA extensions. Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <rth@twiddle.net>
Diffstat (limited to 'tcg/tci')
-rw-r--r--tcg/tci/tcg-target.inc.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/tcg/tci/tcg-target.inc.c b/tcg/tci/tcg-target.inc.c
index 9dbf4d5..42d4bd6 100644
--- a/tcg/tci/tcg-target.inc.c
+++ b/tcg/tci/tcg-target.inc.c
@@ -259,6 +259,18 @@ static const TCGTargetOpDef tcg_target_op_defs[] = {
{ -1 },
};
+static const TCGTargetOpDef *tcg_target_op_def(TCGOpcode op)
+{
+ int i, n = ARRAY_SIZE(tcg_target_op_defs);
+
+ for (i = 0; i < n; ++i) {
+ if (tcg_target_op_defs[i].op == op) {
+ return &tcg_target_op_defs[i];
+ }
+ }
+ return NULL;
+}
+
static const int tcg_target_reg_alloc_order[] = {
TCG_REG_R0,
TCG_REG_R1,
@@ -875,7 +887,6 @@ static void tcg_target_init(TCGContext *s)
tcg_regset_clear(s->reserved_regs);
tcg_regset_set_reg(s->reserved_regs, TCG_REG_CALL_STACK);
- tcg_add_target_add_op_defs(tcg_target_op_defs);
/* We use negative offsets from "sp" so that we can distinguish
stores that might pretend to be call arguments. */