mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 17:23:56 -06:00
target/arm: Implement SCR_EL2.EEL2
This adds handling for the SCR_EL3.EEL2 bit. Signed-off-by: Rémi Denis-Courmont <remi.denis.courmont@huawei.com> Message-id: 20210112104511.36576-17-remi.denis.courmont@huawei.com [PMM: Applied fixes for review issues noted by RTH: - check for FEATURE_AARCH64 before checking sel2 isar feature - correct the commit message subject line] Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
6b340aeb48
commit
926c1b9789
4 changed files with 36 additions and 8 deletions
|
@ -2832,9 +2832,20 @@ static bool msr_banked_access_decode(DisasContext *s, int r, int sysm, int rn,
|
|||
}
|
||||
if (s->current_el == 1) {
|
||||
/* If we're in Secure EL1 (which implies that EL3 is AArch64)
|
||||
* then accesses to Mon registers trap to EL3
|
||||
* then accesses to Mon registers trap to Secure EL2, if it exists,
|
||||
* otherwise EL3.
|
||||
*/
|
||||
TCGv_i32 tcg_el = tcg_const_i32(3);
|
||||
TCGv_i32 tcg_el;
|
||||
|
||||
if (arm_dc_feature(s, ARM_FEATURE_AARCH64) &&
|
||||
dc_isar_feature(aa64_sel2, s)) {
|
||||
/* Target EL is EL<3 minus SCR_EL3.EEL2> */
|
||||
tcg_el = load_cpu_field(cp15.scr_el3);
|
||||
tcg_gen_sextract_i32(tcg_el, tcg_el, ctz32(SCR_EEL2), 1);
|
||||
tcg_gen_addi_i32(tcg_el, tcg_el, 3);
|
||||
} else {
|
||||
tcg_el = tcg_const_i32(3);
|
||||
}
|
||||
|
||||
gen_exception_el(s, EXCP_UDEF, syn_uncategorized(), tcg_el);
|
||||
tcg_temp_free_i32(tcg_el);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue