target/arm: Un-inline access_secure_reg()
We would like to move arm_el_is_aa64() to internals.h; however, it is used by access_secure_reg(). Make that function not be inline, so that it can stay in cpu.h. access_secure_reg() is used only in two places: * in hflags.c * in the user-mode arm emulators, to decide whether to store the TLS value in the secure or non-secure banked field The second of these is not on a super-hot path that would care about the inlining (and incidentally will always use the NS banked field because our user-mode CPUs never set ARM_FEATURE_EL3); put the definition of access_secure_reg() in hflags.c, near its only use inside target/arm. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
eae0c3b659
commit
23560ada94
@ -2668,21 +2668,15 @@ static inline bool arm_el_is_aa64(CPUARMState *env, int el)
|
|||||||
return aa64;
|
return aa64;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Function for determining whether guest cp register reads and writes should
|
/*
|
||||||
|
* Function for determining whether guest cp register reads and writes should
|
||||||
* access the secure or non-secure bank of a cp register. When EL3 is
|
* access the secure or non-secure bank of a cp register. When EL3 is
|
||||||
* operating in AArch32 state, the NS-bit determines whether the secure
|
* operating in AArch32 state, the NS-bit determines whether the secure
|
||||||
* instance of a cp register should be used. When EL3 is AArch64 (or if
|
* instance of a cp register should be used. When EL3 is AArch64 (or if
|
||||||
* it doesn't exist at all) then there is no register banking, and all
|
* it doesn't exist at all) then there is no register banking, and all
|
||||||
* accesses are to the non-secure version.
|
* accesses are to the non-secure version.
|
||||||
*/
|
*/
|
||||||
static inline bool access_secure_reg(CPUARMState *env)
|
bool access_secure_reg(CPUARMState *env);
|
||||||
{
|
|
||||||
bool ret = (arm_feature(env, ARM_FEATURE_EL3) &&
|
|
||||||
!arm_el_is_aa64(env, 3) &&
|
|
||||||
!(env->cp15.scr_el3 & SCR_NS));
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t arm_phys_excp_target_el(CPUState *cs, uint32_t excp_idx,
|
uint32_t arm_phys_excp_target_el(CPUState *cs, uint32_t excp_idx,
|
||||||
uint32_t cur_el, bool secure);
|
uint32_t cur_el, bool secure);
|
||||||
|
@ -63,6 +63,15 @@ static bool aprofile_require_alignment(CPUARMState *env, int el, uint64_t sctlr)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool access_secure_reg(CPUARMState *env)
|
||||||
|
{
|
||||||
|
bool ret = (arm_feature(env, ARM_FEATURE_EL3) &&
|
||||||
|
!arm_el_is_aa64(env, 3) &&
|
||||||
|
!(env->cp15.scr_el3 & SCR_NS));
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static CPUARMTBFlags rebuild_hflags_common(CPUARMState *env, int fp_el,
|
static CPUARMTBFlags rebuild_hflags_common(CPUARMState *env, int fp_el,
|
||||||
ARMMMUIdx mmu_idx,
|
ARMMMUIdx mmu_idx,
|
||||||
CPUARMTBFlags flags)
|
CPUARMTBFlags flags)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user