Deduce bitsize from cpreg_field_type. With this, we can
simplify arm_register_sysreg_for_feature.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
target/arm/gdbstub.c | 40 +++++++++++++++++++---------------------
1 file changed, 19 insertions(+), 21 deletions(-)
diff --git a/target/arm/gdbstub.c b/target/arm/gdbstub.c
index 8d2229f519..89324e4ae9 100644
--- a/target/arm/gdbstub.c
+++ b/target/arm/gdbstub.c
@@ -274,8 +274,9 @@ static int arm_gdb_set_sysreg(CPUState *cs, uint8_t *buf, int reg)
static void arm_gen_one_feature_sysreg(GDBFeatureBuilder *builder,
DynamicGDBFeatureInfo *dyn_feature,
ARMCPRegInfo *ri, uint32_t ri_key,
- int bitsize, int n)
+ int n)
{
+ int bitsize = 8 << cpreg_field_type(ri);
gdb_feature_builder_append_reg(builder, ri->name, bitsize, n,
"int", "cp_regs");
@@ -292,28 +293,25 @@ static void arm_register_sysreg_for_feature(gpointer key, gpointer value,
CPUARMState *env = &cpu->env;
DynamicGDBFeatureInfo *dyn_feature = &cpu->dyn_sysreg_feature;
- if (!(ri->type & (ARM_CP_NO_RAW | ARM_CP_NO_GDB))) {
- if (arm_feature(env, ARM_FEATURE_AARCH64)) {
- if (ri->state == ARM_CP_STATE_AA64) {
- arm_gen_one_feature_sysreg(¶m->builder, dyn_feature,
- ri, ri_key, 64, param->n++);
- }
- } else {
- if (ri->state == ARM_CP_STATE_AA32) {
- if (!arm_feature(env, ARM_FEATURE_EL3) &&
- (ri->secure & ARM_CP_SECSTATE_S)) {
- return;
- }
- if (ri->type & ARM_CP_64BIT) {
- arm_gen_one_feature_sysreg(¶m->builder, dyn_feature,
- ri, ri_key, 64, param->n++);
- } else {
- arm_gen_one_feature_sysreg(¶m->builder, dyn_feature,
- ri, ri_key, 32, param->n++);
- }
- }
+ if (ri->type & (ARM_CP_NO_RAW | ARM_CP_NO_GDB)) {
+ return;
+ }
+ if (arm_feature(env, ARM_FEATURE_AARCH64)) {
+ if (ri->state != ARM_CP_STATE_AA64) {
+ return;
+ }
+ } else {
+ if (ri->state != ARM_CP_STATE_AA32) {
+ return;
+ }
+ if (!arm_feature(env, ARM_FEATURE_EL3)
+ && (ri->secure & ARM_CP_SECSTATE_S)) {
+ return;
}
}
+
+ arm_gen_one_feature_sysreg(¶m->builder, dyn_feature,
+ ri, ri_key, param->n++);
}
static GDBFeature *arm_gen_dynamic_sysreg_feature(CPUState *cs, int base_reg)
--
2.43.0