static void alphabsd_fetch_inferior_registers (struct target_ops *ops, struct regcache *regcache, int regno) { if (regno == -1 || getregs_supplies (regno)) { struct reg gregs; if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &gregs, 0) == -1) perror_with_name (_("Couldn't get registers")); alphabsd_supply_reg (regcache, (char *) &gregs, regno); if (regno != -1) return; } if (regno == -1 || regno >= gdbarch_fp0_regnum (get_regcache_arch (regcache))) { struct fpreg fpregs; if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) perror_with_name (_("Couldn't get floating point status")); alphabsd_supply_fpreg (regcache, (char *) &fpregs, regno); } }
void alpha_bsd_nat_target::fetch_registers (struct regcache *regcache, int regno) { if (regno == -1 || getregs_supplies (regno)) { struct reg gregs; if (ptrace (PT_GETREGS, regcache->ptid ().pid (), (PTRACE_TYPE_ARG3) &gregs, 0) == -1) perror_with_name (_("Couldn't get registers")); alphabsd_supply_reg (regcache, (char *) &gregs, regno); if (regno != -1) return; } if (regno == -1 || regno >= gdbarch_fp0_regnum (regcache->arch ())) { struct fpreg fpregs; if (ptrace (PT_GETFPREGS, regcache->ptid ().pid (), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) perror_with_name (_("Couldn't get floating point status")); alphabsd_supply_fpreg (regcache, (char *) &fpregs, regno); } }
void fetch_inferior_registers (int regno) { if (regno == -1 || getregs_supplies (regno)) { struct reg gregs; if (ptrace (PT_GETREGS, PIDGET (inferior_ptid), (PTRACE_ARG3_TYPE) &gregs, 0) == -1) perror_with_name ("Couldn't get registers"); alphabsd_supply_reg ((char *) &gregs, regno); if (regno != -1) return; } if (regno == -1 || regno >= FP0_REGNUM) { struct fpreg fpregs; if (ptrace (PT_GETFPREGS, PIDGET (inferior_ptid), (PTRACE_ARG3_TYPE) &fpregs, 0) == -1) perror_with_name ("Couldn't get floating point status"); alphabsd_supply_fpreg ((char *) &fpregs, regno); } }
static void fetch_elfcore_registers (char *core_reg_sect, unsigned core_reg_size, int which, CORE_ADDR ignore) { switch (which) { case 0: /* Integer registers. */ if (core_reg_size != SIZEOF_STRUCT_REG) warning (_("Wrong size register set in core file.")); else alphabsd_supply_reg (core_reg_sect, -1); break; case 2: /* Floating point registers. */ if (core_reg_size != SIZEOF_STRUCT_FPREG) warning (_("Wrong size FP register set in core file.")); else alphabsd_supply_fpreg (core_reg_sect, -1); break; default: /* Don't know what kind of register request this is; just ignore it. */ break; } }
static void fetch_core_registers (char *core_reg_sect, unsigned core_reg_size, int which, CORE_ADDR ignore) { char *regs, *fpregs; int regno; /* Table to map a gdb register number to a trapframe register index. */ static const int regmap[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 30, 31, 32, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 29, 26 }; #define SIZEOF_TRAPFRAME (33 * 8) /* We get everything from one section. */ if (which != 0) return; regs = core_reg_sect; fpregs = core_reg_sect + SIZEOF_TRAPFRAME; if (core_reg_size < (SIZEOF_TRAPFRAME + SIZEOF_STRUCT_FPREG)) { warning (_("Wrong size register set in core file.")); return; } /* Integer registers. */ for (regno = 0; regno < ALPHA_ZERO_REGNUM; regno++) regcache_raw_supply (current_regcache, regno, regs + (regmap[regno] * 8)); regcache_raw_supply (current_regcache, ALPHA_ZERO_REGNUM, NULL); regcache_raw_supply (current_regcache, PC_REGNUM, regs + (28 * 8)); /* Floating point registers. */ alphabsd_supply_fpreg (fpregs, -1); }
void supply_fpregset (struct regcache *regcache, const fpregset_t *fpregsetp) { alphabsd_supply_fpreg (regcache, (const char *) fpregsetp, -1); }
void supply_fpregset (fpregset_t *fpregsetp) { alphabsd_supply_fpreg ((char *) fpregsetp, -1); }