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

Reply via email to