Skip to content

Commit c062ac8

Browse files
refactor(target/arm/ptw): calculate current el only once
1 parent 41bfa2f commit c062ac8

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

target/arm/ptw.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1003,13 +1003,16 @@ static int simple_ap_to_rw_prot(CPUARMState *env, ARMMMUIdx mmu_idx, int ap)
10031003
static inline int
10041004
pte_to_sprr_prot_is_guarded(CPUARMState *env, int ap, int xn, int pxn, bool guarded)
10051005
{
1006+
int el;
1007+
10061008
if (!arm_is_sprr_enabled(env)) {
10071009
return PAGE_READ | PAGE_WRITE | PAGE_EXEC;
10081010
}
10091011

10101012
int sprr_idx = ((ap << 2) | (xn << 1) | pxn) & 0xf;
1011-
assert(arm_current_el(env) < 2);
1012-
uint64_t sprr_perm = env->sprr.sprr_el_br_el1[arm_current_el(env)][arm_current_el(env)];
1013+
el = arm_current_el(env);
1014+
assert(el < 2);
1015+
uint64_t sprr_perm = env->sprr.sprr_el_br_el1[el][el];
10131016

10141017
int attr = SPRR_EXTRACT_IDX_ATTR(sprr_perm, sprr_idx);
10151018
int prot = 0;

0 commit comments

Comments
 (0)