[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH RFC v1 26/29] target-arc: RTIE
From: |
Michael Rolnik |
Subject: |
[Qemu-devel] [PATCH RFC v1 26/29] target-arc: RTIE |
Date: |
Fri, 9 Sep 2016 01:32:07 +0300 |
Signed-off-by: Michael Rolnik <address@hidden>
---
target-arc/helper.h | 1 +
target-arc/op_helper.c | 21 +++++++++++++++++++++
target-arc/translate-inst.c | 10 ++++++++++
target-arc/translate-inst.h | 2 ++
4 files changed, 34 insertions(+)
diff --git a/target-arc/helper.h b/target-arc/helper.h
index 14769b1..abfd0d2 100644
--- a/target-arc/helper.h
+++ b/target-arc/helper.h
@@ -24,4 +24,5 @@ DEF_HELPER_2(normw, i32, env, i32)
DEF_HELPER_2(lr, tl, env, i32)
DEF_HELPER_2(sr, void, i32, i32)
DEF_HELPER_1(halt, void, env)
+DEF_HELPER_1(rtie, void, env)
diff --git a/target-arc/op_helper.c b/target-arc/op_helper.c
index b07939c..a3f6a46 100644
--- a/target-arc/op_helper.c
+++ b/target-arc/op_helper.c
@@ -416,4 +416,25 @@ void helper_halt(CPUARCState *env)
/* TODO: implement */
}
+void helper_rtie(CPUARCState *env)
+{
+ if (env->stat.AEf) {
+ CPU_PCL(env) = env->eret;
+ env->stat = env->stat_er;
+ env->bta = env->erbta;
+ } else if (env->stat.A2f) {
+ CPU_PCL(env) = CPU_ILINK2(env);
+ env->stat = env->stat_l2;
+ env->bta = env->bta_l2;
+ } else if (env->stat.A1f) {
+ CPU_PCL(env) = CPU_ILINK1(env);
+ env->stat = env->stat_l1;
+ env->bta = env->bta_l1;
+ } else {
+ CPU_PCL(env) = env->eret;
+ env->stat = env->stat_er;
+ env->bta = env->stat.AEf;
+ }
+}
+
diff --git a/target-arc/translate-inst.c b/target-arc/translate-inst.c
index 87a00ca..743f2be 100644
--- a/target-arc/translate-inst.c
+++ b/target-arc/translate-inst.c
@@ -2803,3 +2803,13 @@ int arc_gen_SWI(DisasCtxt *ctx)
return BS_EXCP;
}
+/*
+ RTIE
+*/
+int arc_gen_RTIE(DisasCtxt *ctx)
+{
+ gen_helper_rtie(cpu_env);
+
+ return BS_BRANCH;
+}
+
diff --git a/target-arc/translate-inst.h b/target-arc/translate-inst.h
index f7f988b..8bbac4f 100644
--- a/target-arc/translate-inst.h
+++ b/target-arc/translate-inst.h
@@ -169,3 +169,5 @@ int arc_gen_UNIMP(DisasCtxt *c);
int arc_gen_SWI(DisasCtxt *c);
int arc_gen_TRAP(DisasCtxt *c, TCGv src1);
+int arc_gen_RTIE(DisasCtxt *c);
+
--
2.4.9 (Apple Git-60)
- [Qemu-devel] [PATCH RFC v1 19/29] target-arc: LR, SR, (continued)
- [Qemu-devel] [PATCH RFC v1 19/29] target-arc: LR, SR, Michael Rolnik, 2016/09/08
- [Qemu-devel] [PATCH RFC v1 22/29] target-arc: ASLS, ASRS, Michael Rolnik, 2016/09/08
- [Qemu-devel] [PATCH RFC v1 20/29] target-arc: ADDS, ADDSDW, SUBS, SUBSDW, Michael Rolnik, 2016/09/08
- [Qemu-devel] [PATCH RFC v1 21/29] target-arc: ABSS, ABSSW, NEGS, NEGSW, RND16, SAT16, Michael Rolnik, 2016/09/08
- [Qemu-devel] [PATCH RFC v1 23/29] target-arc: FLAG, BRK, SLEEP, Michael Rolnik, 2016/09/08
- [Qemu-devel] [PATCH RFC v1 25/29] target-arc: TRAP, SWI, Michael Rolnik, 2016/09/08
- [Qemu-devel] [PATCH RFC v1 24/29] target-arc: NOP, UNIMP, Michael Rolnik, 2016/09/08
- [Qemu-devel] [PATCH RFC v1 26/29] target-arc: RTIE,
Michael Rolnik <=
- [Qemu-devel] [PATCH RFC v1 27/29] target-arc: LP, Michael Rolnik, 2016/09/08
- [Qemu-devel] [PATCH RFC v1 29/29] target-arc: sample board, Michael Rolnik, 2016/09/08
- [Qemu-devel] [PATCH RFC v1 28/29] target-arc: decode, Michael Rolnik, 2016/09/08
- Re: [Qemu-devel] [PATCH RFC v1 00/29] ARC cores, Alexey Brodkin, 2016/09/16