Signed-off-by: Michael Rolnik <mrol...@gmail.com> --- target-arc/translate-inst.c | 22 ++++++++++++++++++++++ target-arc/translate-inst.h | 3 +++ 2 files changed, 25 insertions(+)
diff --git a/target-arc/translate-inst.c b/target-arc/translate-inst.c index 7f7e951..2a579f8 100644 --- a/target-arc/translate-inst.c +++ b/target-arc/translate-inst.c @@ -1147,3 +1147,25 @@ int arc_gen_NOT(DisasCtxt *ctx, TCGv dest, TCGv src1) return BS_NONE; } +/* + POP +*/ +int arc_gen_POP(DisasCtxt *ctx, TCGv src1) +{ + tcg_gen_qemu_ld_tl(src1, cpu_sp, ctx->memidx, MO_UL); + tcg_gen_addi_tl(cpu_sp, cpu_sp, 4); + + return BS_NONE; +} + +/* + PUSH +*/ +int arc_gen_PUSH(DisasCtxt *ctx, TCGv src1) +{ + tcg_gen_subi_tl(cpu_sp, cpu_sp, 4); + tcg_gen_qemu_st_tl(src1, cpu_sp, ctx->memidx, MO_UL); + + return BS_NONE; +} + diff --git a/target-arc/translate-inst.h b/target-arc/translate-inst.h index 36ce19b..d088a43 100644 --- a/target-arc/translate-inst.h +++ b/target-arc/translate-inst.h @@ -75,3 +75,6 @@ int arc_gen_NEG(DisasCtxt *c, TCGv dest, TCGv src1); int arc_gen_ABS(DisasCtxt *c, TCGv dest, TCGv src1); int arc_gen_NOT(DisasCtxt *c, TCGv dest, TCGv src1); +int arc_gen_POP(DisasCtxt *c, TCGv src1); +int arc_gen_PUSH(DisasCtxt *c, TCGv src1); + -- 2.4.9 (Apple Git-60)