Commit 9d1a6d194e for qemu.org
commit 9d1a6d194ee9e589406df8a54c48b1f3fbd279fa
Author: Bibo Mao <maobibo@loongson.cn>
Date: Fri Jun 5 16:38:54 2026 +0800
target/loongarch: Add default CSRFL_BASIC info with flags field
With CSR array structure, its validity is checked from offset field.
Now default CSRFL_BASIC information is added with flags field and its
validility can be checked with flags field.
Signed-off-by: Bibo Mao <maobibo@loongson.cn>
Tested-by: Song Gao <gaosong@loongson.cn>
Message-ID: <20260605083854.175625-1-maobibo@loongson.cn>
Signed-off-by: Song Gao <gaosong@loongson.cn>
diff --git a/target/loongarch/csr.c b/target/loongarch/csr.c
index fff2312f87..d759be316b 100644
--- a/target/loongarch/csr.c
+++ b/target/loongarch/csr.c
@@ -17,11 +17,11 @@
[LOONGARCH_CSR_##NAME(N)] = { \
.name = (stringify(NAME##N)), \
.offset = offsetof(CPULoongArchState, CSR_##NAME[N]), \
- .flags = 0, .readfn = NULL, .writefn = NULL \
+ .flags = CSRFL_BASIC, .readfn = NULL, .writefn = NULL \
}
#define CSR_OFF_FLAGS(NAME, FL) CSR_OFF_FUNCS(NAME, FL, NULL, NULL)
-#define CSR_OFF(NAME) CSR_OFF_FLAGS(NAME, 0)
+#define CSR_OFF(NAME) CSR_OFF_FLAGS(NAME, CSRFL_BASIC)
static CSRInfo csr_info[] = {
CSR_OFF_FLAGS(CRMD, CSRFL_EXITTB),
@@ -144,7 +144,7 @@ CSRInfo *get_csr(unsigned int csr_num)
}
csr = &csr_info[csr_num];
- if (csr->offset == 0) {
+ if (csr->flags == 0) {
return NULL;
}
diff --git a/target/loongarch/csr.h b/target/loongarch/csr.h
index 81a656baae..508a3214fc 100644
--- a/target/loongarch/csr.h
+++ b/target/loongarch/csr.h
@@ -14,6 +14,7 @@ enum {
CSRFL_EXITTB = (1 << 1),
CSRFL_IO = (1 << 2),
CSRFL_UNUSED = (1 << 3),
+ CSRFL_BASIC = (1 << 4),
};
typedef struct {