On Fri, 8 Aug 2025 at 12:30, Manos Pitsidianakis <manos.pitsidiana...@linaro.org> wrote: > > Signed-off-by: Manos Pitsidianakis <manos.pitsidiana...@linaro.org> > --- > gdb-xml/aarch64-core.xml | 5 +++++ > target/arm/cpu.h | 1 + > target/arm/gdbstub64.c | 6 ++++++ > 3 files changed, 12 insertions(+) > > diff --git a/gdb-xml/aarch64-core.xml b/gdb-xml/aarch64-core.xml > index > b8046510b9a085d30463d37b3ecc8d435f5fb7a4..19ad743dc5607b4021fb795bfb9b8e9cf0adef68 > 100644 > --- a/gdb-xml/aarch64-core.xml > +++ b/gdb-xml/aarch64-core.xml > @@ -91,4 +91,9 @@ > </flags> > <reg name="cpsr" bitsize="32" type="cpsr_flags"/> > > + <flags id="current_el_flags" size="8"> > + <!-- Exception Level. --> > + <field name="EL" start="2" end="3"/> > + </flags> > + <reg name="CurrentEL" bitsize="64" type="current_el"/> > </feature> > diff --git a/target/arm/cpu.h b/target/arm/cpu.h > index > dc9b6dce4c92297b2636d0d7c0dce580f1806d5b..c3070cd9863381fac40f5640e0a7a84dfa1c6e06 > 100644 > --- a/target/arm/cpu.h > +++ b/target/arm/cpu.h > @@ -1473,6 +1473,7 @@ void pmu_init(ARMCPU *cpu); > * AArch32 mode SPSRs are basically CPSR-format. > */ > #define PSTATE_SP (1U) > +#define PSTATE_EL (3U << 2) > #define PSTATE_M (0xFU) > #define PSTATE_nRW (1U << 4) > #define PSTATE_F (1U << 6) > diff --git a/target/arm/gdbstub64.c b/target/arm/gdbstub64.c > index > 08e28585396816ab90d6d8e460ff8171892fe8da..16b564e1a970cb5e854a705619f71ffc61545a73 > 100644 > --- a/target/arm/gdbstub64.c > +++ b/target/arm/gdbstub64.c > @@ -48,6 +48,9 @@ int aarch64_cpu_gdb_read_register(CPUState *cs, GByteArray > *mem_buf, int n) > return gdb_get_reg64(mem_buf, env->pc); > case 33: > return gdb_get_reg32(mem_buf, pstate_read(env)); > + case 34: > + /* CurrentEL */ > + return gdb_get_reg64(mem_buf, env->pstate & PSTATE_EL); > }
The debugger already has this information in the 'cpsr' register, so it could implement convenience views of the subfields itself if it liked. If we're going to do this I would prefer it to be because we've gained some consensus with e.g. the gdb maintainers that this is the "preferred" way to expose the CPU state. The XML config stuff lets us do it in our own way if we want to, but I think there is value in consistency across stubs here. thanks -- PMM