static void fetch_core_registers (struct regcache *regcache, char *core_reg_sect, unsigned core_reg_size, int which, CORE_ADDR ignore) { struct md_core *core_reg = (struct md_core *) core_reg_sect; int regno; CORE_ADDR r_pc; arm_supply_gregset (regcache, &core_reg->intreg); arm_supply_fparegset (regcache, &core_reg->freg); }
static void fetch_fp_regs (struct regcache *regcache) { struct fpreg inferior_fp_registers; int ret; int regno; ret = ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &inferior_fp_registers, 0); if (ret < 0) { warning (_("unable to fetch general registers")); return; } arm_supply_fparegset (regcache, &inferior_fp_registers); }
static void fetch_elfcore_registers (struct regcache *regcache, char *core_reg_sect, unsigned core_reg_size, int which, CORE_ADDR ignore) { struct reg gregset; struct fpreg fparegset; switch (which) { case 0: /* Integer registers. */ if (core_reg_size != sizeof (struct reg)) warning (_("wrong size of register set in core file")); else { /* The memcpy may be unnecessary, but we can't really be sure of the alignment of the data in the core file. */ memcpy (&gregset, core_reg_sect, sizeof (gregset)); arm_supply_gregset (regcache, &gregset); } break; case 2: if (core_reg_size != sizeof (struct fpreg)) warning (_("wrong size of FPA register set in core file")); else { /* The memcpy may be unnecessary, but we can't really be sure of the alignment of the data in the core file. */ memcpy (&fparegset, core_reg_sect, sizeof (fparegset)); arm_supply_fparegset (regcache, &fparegset); } break; default: /* Don't know what kind of register request this is; just ignore it. */ break; } }
void supply_fpregset (struct regcache *regcache, const gdb_fpregset_t *fpregsetp) { arm_supply_fparegset (regcache, (struct fpreg *)fpregsetp); }