mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-09 02:24:58 -06:00
target-arm: Support fp registers in gdb stub
Register the aarch64-fpu XML and implement the necessary read/write handlers so we can support reading and writing of FP registers in the gdb stub. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <rth@twiddle.net>
This commit is contained in:
parent
f903fa22f4
commit
6a66942735
3 changed files with 134 additions and 2 deletions
|
@ -65,6 +65,48 @@ static int vfp_gdb_set_reg(CPUARMState *env, uint8_t *buf, int reg)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int aarch64_fpu_gdb_get_reg(CPUARMState *env, uint8_t *buf, int reg)
|
||||
{
|
||||
switch (reg) {
|
||||
case 0 ... 31:
|
||||
/* 128 bit FP register */
|
||||
stfq_le_p(buf, env->vfp.regs[reg * 2]);
|
||||
stfq_le_p(buf + 8, env->vfp.regs[reg * 2 + 1]);
|
||||
return 16;
|
||||
case 32:
|
||||
/* FPSR */
|
||||
stl_p(buf, vfp_get_fpsr(env));
|
||||
return 4;
|
||||
case 33:
|
||||
/* FPCR */
|
||||
stl_p(buf, vfp_get_fpcr(env));
|
||||
return 4;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static int aarch64_fpu_gdb_set_reg(CPUARMState *env, uint8_t *buf, int reg)
|
||||
{
|
||||
switch (reg) {
|
||||
case 0 ... 31:
|
||||
/* 128 bit FP register */
|
||||
env->vfp.regs[reg * 2] = ldfq_le_p(buf);
|
||||
env->vfp.regs[reg * 2 + 1] = ldfq_le_p(buf + 8);
|
||||
return 16;
|
||||
case 32:
|
||||
/* FPSR */
|
||||
vfp_set_fpsr(env, ldl_p(buf));
|
||||
return 4;
|
||||
case 33:
|
||||
/* FPCR */
|
||||
vfp_set_fpcr(env, ldl_p(buf));
|
||||
return 4;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static int raw_read(CPUARMState *env, const ARMCPRegInfo *ri,
|
||||
uint64_t *value)
|
||||
{
|
||||
|
@ -1795,7 +1837,11 @@ void arm_cpu_register_gdb_regs_for_features(ARMCPU *cpu)
|
|||
CPUState *cs = CPU(cpu);
|
||||
CPUARMState *env = &cpu->env;
|
||||
|
||||
if (arm_feature(env, ARM_FEATURE_NEON)) {
|
||||
if (arm_feature(env, ARM_FEATURE_AARCH64)) {
|
||||
gdb_register_coprocessor(cs, aarch64_fpu_gdb_get_reg,
|
||||
aarch64_fpu_gdb_set_reg,
|
||||
34, "aarch64-fpu.xml", 0);
|
||||
} else if (arm_feature(env, ARM_FEATURE_NEON)) {
|
||||
gdb_register_coprocessor(cs, vfp_gdb_get_reg, vfp_gdb_set_reg,
|
||||
51, "arm-neon.xml", 0);
|
||||
} else if (arm_feature(env, ARM_FEATURE_VFP3)) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue