Commit 92dd54a0bf for qemu.org
commit 92dd54a0bf4c0a78e05e48658ed1aa62e61a3cf9
Author: Bibo Mao <maobibo@loongson.cn>
Date: Fri Jun 5 16:25:39 2026 +0800
target/loongarch: Add new field curState in CPULoongArchState
New field sys_state is added in structure CPULoongArchState, it points
to CPULoongArchState itself now.
Signed-off-by: Bibo Mao <maobibo@loongson.cn>
Reviewed-by: Philippe Mathieu-Daudé <philmd@mailo.com>
Tested-by: Song Gao <gaosong@loongson.cn>
Message-ID: <20260605082552.175336-2-maobibo@loongson.cn>
Signed-off-by: Song Gao <gaosong@loongson.cn>
diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c
index 8f277f7696..13de1722de 100644
--- a/target/loongarch/cpu.c
+++ b/target/loongarch/cpu.c
@@ -278,6 +278,7 @@ static void loongarch_la464_initfn(Object *obj)
uint32_t data = 0, field;
int i;
+ set_sys_state(env, env);
for (i = 0; i < 21; i++) {
env->cpucfg[i] = 0x0;
}
@@ -406,6 +407,7 @@ static void loongarch_la132_initfn(Object *obj)
uint32_t data = 0;
int i;
+ set_sys_state(env, env);
for (i = 0; i < 21; i++) {
env->cpucfg[i] = 0x0;
}
diff --git a/target/loongarch/cpu.h b/target/loongarch/cpu.h
index 096d778928..b087548295 100644
--- a/target/loongarch/cpu.h
+++ b/target/loongarch/cpu.h
@@ -317,6 +317,8 @@ typedef struct LoongArchBT {
#define CPU_VENDOR_LOONGSON "Loongson"
#define CPU_MODEL_3A5000 "3A5000"
#define CPU_MODEL_1C101 "1C101"
+struct CPUArchState;
+typedef struct CPUArchState CPUSysState;
typedef struct CPUArchState {
uint64_t gpr[32];
@@ -415,6 +417,7 @@ typedef struct CPUArchState {
AddressSpace *address_space_iocsr;
uint32_t mp_state;
#endif
+ CPUSysState *sys_state;
} CPULoongArchState;
typedef struct LoongArchCPUTopo {
@@ -481,6 +484,16 @@ struct LoongArchCPUClass {
#define MMU_USER_IDX MMU_PLV_USER
#define MMU_DA_IDX 4
+static inline CPUSysState *env_sys(CPULoongArchState *env)
+{
+ return env->sys_state;
+}
+
+static inline void set_sys_state(CPULoongArchState *env, CPUSysState *sys)
+{
+ env->sys_state = sys;
+}
+
static inline bool is_la64(CPULoongArchState *env)
{
return FIELD_EX32(env->cpucfg[1], CPUCFG1, ARCH) == CPUCFG1_ARCH_LA64;