mirror of
https://github.com/qemu/qemu.git
synced 2026-10-07 05:38:08 +00:00
The ARMSecuritySpace enum and its related helpers were defined in the target-specific header target/arm/cpu.h. This prevented common, target-agnostic code like the SMMU model from using these definitions without triggering "cpu.h included from common code" errors. To resolve this, this commit introduces a new, lightweight header, include/hw/arm/arm-security.h, which is safe for inclusion by common code. The following change was made: - The ARMSecuritySpace enum and the arm_space_is_secure() and arm_secure_to_space() helpers have been moved from target/arm/cpu.h to the new hw/arm/arm-security.h header. This refactoring decouples the security state definitions from the core CPU implementation, allowing common hardware models to correctly handle security states without pulling in heavyweight, target-specific headers. Signed-off-by: Tao Tang <tangtao1634@phytium.com.cn> Reviewed-by: Eric Auger <eric.auger@redhat.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-id: 20251216000122.763264-2-pierrick.bouvier@linaro.org Link: https://lists.nongnu.org/archive/html/qemu-arm/2025-09/msg01288.html Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
38 lines
961 B
C
38 lines
961 B
C
/*
|
|
* ARM security space helpers
|
|
*
|
|
* Provide ARMSecuritySpace and helpers for code that is not tied to CPU.
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
|
*/
|
|
|
|
#ifndef HW_ARM_ARM_SECURITY_H
|
|
#define HW_ARM_ARM_SECURITY_H
|
|
|
|
/*
|
|
* ARM v9 security states.
|
|
* The ordering of the enumeration corresponds to the low 2 bits
|
|
* of the GPI value, and (except for Root) the concat of NSE:NS.
|
|
*/
|
|
|
|
typedef enum ARMSecuritySpace {
|
|
ARMSS_Secure = 0,
|
|
ARMSS_NonSecure = 1,
|
|
ARMSS_Root = 2,
|
|
ARMSS_Realm = 3,
|
|
} ARMSecuritySpace;
|
|
|
|
/* Return true if @space is secure, in the pre-v9 sense. */
|
|
static inline bool arm_space_is_secure(ARMSecuritySpace space)
|
|
{
|
|
return space == ARMSS_Secure || space == ARMSS_Root;
|
|
}
|
|
|
|
/* Return the ARMSecuritySpace for @secure, assuming !RME or EL[0-2]. */
|
|
static inline ARMSecuritySpace arm_secure_to_space(bool secure)
|
|
{
|
|
return secure ? ARMSS_Secure : ARMSS_NonSecure;
|
|
}
|
|
|
|
#endif /* HW_ARM_ARM_SECURITY_H */
|