Commit a14503827d for qemu.org

commit a14503827d32f51e71cfd93e0a8a0badc29b2c56
Author: Tao Tang <tangtao1634@phytium.com.cn>
Date:   Thu Jan 15 15:26:29 2026 +0000

    target/arm: Move ARMSecuritySpace to a common header

    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>

diff --git a/include/hw/arm/arm-security.h b/include/hw/arm/arm-security.h
new file mode 100644
index 0000000000..196cddd14c
--- /dev/null
+++ b/include/hw/arm/arm-security.h
@@ -0,0 +1,37 @@
+/*
+ * 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 */
diff --git a/target/arm/cpu.h b/target/arm/cpu.h
index 9579d43ba3..992dff41c3 100644
--- a/target/arm/cpu.h
+++ b/target/arm/cpu.h
@@ -31,6 +31,7 @@
 #include "exec/page-protection.h"
 #include "qapi/qapi-types-common.h"
 #include "target/arm/multiprocessing.h"
+#include "hw/arm/arm-security.h"
 #include "target/arm/gtimer.h"
 #include "target/arm/cpu-sysregs.h"
 #include "target/arm/mmuidx.h"
@@ -2102,30 +2103,6 @@ static inline int arm_feature(CPUARMState *env, int feature)

 void arm_cpu_finalize_features(ARMCPU *cpu, Error **errp);

-/*
- * 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;
-}

 #if !defined(CONFIG_USER_ONLY)
 /**