diff mbox

[RFC,v1,24/29] target-arc: NOP, UNIMP

Message ID 1473373930-31547-25-git-send-email-mrolnik@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Michael Rolnik Sept. 8, 2016, 10:32 p.m. UTC
Signed-off-by: Michael Rolnik <mrolnik@gmail.com>
---
 target-arc/translate-inst.c | 20 ++++++++++++++++++++
 target-arc/translate-inst.h |  2 ++
 2 files changed, 22 insertions(+)

Comments

Richard Henderson Sept. 21, 2016, 12:39 a.m. UTC | #1
On 09/08/2016 03:32 PM, Michael Rolnik wrote:
> +int arc_gen_UNIMP(DisasCtxt *ctx)
> +{
> +    /* PC = INT_VECTOR_BACE + 0x10 */
> +    tcg_gen_andi_tl(cpu_pc, cpu_intvec, 0xffffffc0);
> +    tcg_gen_addi_tl(cpu_pc, cpu_pc, 0x10);
> +
> +    return  BS_EXCP;
> +}

This should be done via an exception, with the pc change done in do_interrupt.


r~
diff mbox

Patch

diff --git a/target-arc/translate-inst.c b/target-arc/translate-inst.c
index 9d0f195..4c4318f 100644
--- a/target-arc/translate-inst.c
+++ b/target-arc/translate-inst.c
@@ -2678,3 +2678,23 @@  int arc_gen_SLEEP(DisasCtxt *ctx, TCGv src1)
     return  BS_BREAK;
 }
 
+/*
+    NOP
+*/
+int arc_gen_NOP(DisasCtxt *ctx)
+{
+    /*  literally no operation  */
+    return  BS_NONE;
+}
+
+/*
+    UNIMP
+*/
+int arc_gen_UNIMP(DisasCtxt *ctx)
+{
+    /* PC = INT_VECTOR_BACE + 0x10 */
+    tcg_gen_andi_tl(cpu_pc, cpu_intvec, 0xffffffc0);
+    tcg_gen_addi_tl(cpu_pc, cpu_pc, 0x10);
+
+    return  BS_EXCP;
+}
diff --git a/target-arc/translate-inst.h b/target-arc/translate-inst.h
index 5794cad..9f88d03 100644
--- a/target-arc/translate-inst.h
+++ b/target-arc/translate-inst.h
@@ -163,3 +163,5 @@  int arc_gen_SLEEP(DisasCtxt *c, TCGv src1);
 int arc_gen_BRK(DisasCtxt *c);
 int arc_gen_FLAG(DisasCtxt *c, TCGv src1);
 
+int arc_gen_NOP(DisasCtxt *c);
+int arc_gen_UNIMP(DisasCtxt *c);