summaryrefslogtreecommitdiff
path: root/target-arm/translate-a64.c
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2014-02-26 17:20:02 +0000
committerPeter Maydell <peter.maydell@linaro.org>2014-02-26 17:20:02 +0000
commit0eef9d9833df1c2376bd3b761abc6580df15af3b (patch)
treeb8e1e087321a63c0e5d44bc5a1dfa479912c00c5 /target-arm/translate-a64.c
parent7da845b0f42a791d65045284f90977d636c654cc (diff)
downloadqemu-0eef9d9833df1c2376bd3b761abc6580df15af3b.tar.gz
target-arm: Implement AArch64 CurrentEL sysreg
Implement the CurrentEL sysreg. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Diffstat (limited to 'target-arm/translate-a64.c')
-rw-r--r--target-arm/translate-a64.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/target-arm/translate-a64.c b/target-arm/translate-a64.c
index 8752e7e16c..ec2d9dc219 100644
--- a/target-arm/translate-a64.c
+++ b/target-arm/translate-a64.c
@@ -1231,6 +1231,13 @@ static void handle_sys(DisasContext *s, uint32_t insn, bool isread,
gen_set_nzcv(tcg_rt);
}
return;
+ case ARM_CP_CURRENTEL:
+ /* Reads as current EL value from pstate, which is
+ * guaranteed to be constant by the tb flags.
+ */
+ tcg_rt = cpu_reg(s, rt);
+ tcg_gen_movi_i64(tcg_rt, s->current_pl << 2);
+ return;
default:
break;
}