From 43d76721fe6630a7386645f5ff3b6efa2499fa13 Mon Sep 17 00:00:00 2001 From: kettenis Date: Tue, 23 Jan 2018 12:38:14 +0000 Subject: [PATCH] Revise 'struct fpreg' such that it can actually represent the full VFPv3-D32 state. ok patrick@ --- gnu/usr.bin/binutils/gdb/armnbsd-nat.c | 16 ++++++++-------- sys/arch/arm/include/reg.h | 8 +++----- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/gnu/usr.bin/binutils/gdb/armnbsd-nat.c b/gnu/usr.bin/binutils/gdb/armnbsd-nat.c index 947a1770b84..7bd63c0799d 100644 --- a/gnu/usr.bin/binutils/gdb/armnbsd-nat.c +++ b/gnu/usr.bin/binutils/gdb/armnbsd-nat.c @@ -70,10 +70,10 @@ supply_fparegset (struct fpreg *fparegset) for (regno = ARM_F0_REGNUM; regno <= ARM_F7_REGNUM; regno++) regcache_raw_supply (current_regcache, regno, - (char *) &fparegset->fpr[regno - ARM_F0_REGNUM]); + (char *) &fparegset->fp_reg[regno - ARM_F0_REGNUM]); regcache_raw_supply (current_regcache, ARM_FPS_REGNUM, - (char *) &fparegset->fpr_fpsr); + (char *) &fparegset->fp_scr); } static void @@ -164,12 +164,12 @@ fetch_fp_register (int regno) { case ARM_FPS_REGNUM: regcache_raw_supply (current_regcache, ARM_FPS_REGNUM, - (char *) &inferior_fp_registers.fpr_fpsr); + (char *) &inferior_fp_registers.fp_scr); break; default: regcache_raw_supply (current_regcache, regno, - (char *) &inferior_fp_registers.fpr[regno - ARM_F0_REGNUM]); + (char *) &inferior_fp_registers.fp_reg[regno - ARM_F0_REGNUM]); break; } } @@ -352,12 +352,12 @@ store_fp_register (int regno) { case ARM_FPS_REGNUM: regcache_raw_collect (current_regcache, ARM_FPS_REGNUM, - (char *) &inferior_fp_registers.fpr_fpsr); + (char *) &inferior_fp_registers.fp_scr); break; default: regcache_raw_collect (current_regcache, regno, - (char *) &inferior_fp_registers.fpr[regno - ARM_F0_REGNUM]); + (char *) &inferior_fp_registers.fp_reg[regno - ARM_F0_REGNUM]); break; } @@ -378,10 +378,10 @@ store_fp_regs (void) for (regno = ARM_F0_REGNUM; regno <= ARM_F7_REGNUM; regno++) regcache_raw_collect (current_regcache, regno, - (char *) &inferior_fp_registers.fpr[regno - ARM_F0_REGNUM]); + (char *) &inferior_fp_registers.fp_reg[regno - ARM_F0_REGNUM]); regcache_raw_collect (current_regcache, ARM_FPS_REGNUM, - (char *) &inferior_fp_registers.fpr_fpsr); + (char *) &inferior_fp_registers.fp_scr); ret = ptrace (PT_SETFPREGS, PIDGET (inferior_ptid), (PTRACE_TYPE_ARG3) &inferior_fp_registers, 0); diff --git a/sys/arch/arm/include/reg.h b/sys/arch/arm/include/reg.h index 237c789ef6b..7f401677dcd 100644 --- a/sys/arch/arm/include/reg.h +++ b/sys/arch/arm/include/reg.h @@ -1,4 +1,4 @@ -/* $OpenBSD: reg.h,v 1.2 2011/03/23 16:54:34 pirofti Exp $ */ +/* $OpenBSD: reg.h,v 1.3 2018/01/23 12:38:14 kettenis Exp $ */ /* $NetBSD: reg.h,v 1.1 2001/02/11 14:51:55 bjh21 Exp $ */ /* @@ -37,8 +37,6 @@ #ifndef _ARM_REG_H_ #define _ARM_REG_H_ -#include - struct reg { unsigned int r[13]; unsigned int r_sp; @@ -48,8 +46,8 @@ struct reg { }; struct fpreg { - unsigned int fpr_fpsr; - fp_reg_t fpr[8]; + uint64_t fp_reg[32]; + uint32_t fp_scr; }; #endif /* !_ARM_REG_H_ */ -- 2.20.1