Revise 'struct fpreg' such that it can actually represent the full VFPv3-D32
authorkettenis <kettenis@openbsd.org>
Tue, 23 Jan 2018 12:38:14 +0000 (12:38 +0000)
committerkettenis <kettenis@openbsd.org>
Tue, 23 Jan 2018 12:38:14 +0000 (12:38 +0000)
state.

ok patrick@

gnu/usr.bin/binutils/gdb/armnbsd-nat.c
sys/arch/arm/include/reg.h

index 947a177..7bd63c0 100644 (file)
@@ -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);
index 237c789..7f40167 100644 (file)
@@ -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 <machine/fp.h>
-
 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_ */