static struct value * value_of_builtin_frame_ps_reg (struct frame_info *frame, const void *baton) { if (gdbarch_ps_regnum (current_gdbarch) >= 0) return value_of_register (gdbarch_ps_regnum (current_gdbarch), frame); error (_("Standard register ``$ps'' is not available for this target")); }
static void supply_gregset_reg (struct regcache *regcache, const gdb_gregset_t *gregsetp, int regnum) { int i; xtensa_elf_gregset_t *regs = (xtensa_elf_gregset_t *) gregsetp; struct gdbarch *gdbarch = get_regcache_arch (regcache); if (regnum == gdbarch_pc_regnum (gdbarch) || regnum == -1) regcache_raw_supply (regcache, gdbarch_pc_regnum (gdbarch), ®s->pc); if (regnum == gdbarch_ps_regnum (gdbarch) || regnum == -1) regcache_raw_supply (regcache, gdbarch_ps_regnum (gdbarch), ®s->ps); if (regnum == gdbarch_tdep (gdbarch)->wb_regnum || regnum == -1) regcache_raw_supply (regcache, gdbarch_tdep (gdbarch)->wb_regnum, ®s->windowbase); if (regnum == gdbarch_tdep (gdbarch)->ws_regnum || regnum == -1) regcache_raw_supply (regcache, gdbarch_tdep (gdbarch)->ws_regnum, ®s->windowstart); if (regnum == gdbarch_tdep (gdbarch)->lbeg_regnum || regnum == -1) regcache_raw_supply (regcache, gdbarch_tdep (gdbarch)->lbeg_regnum, ®s->lbeg); if (regnum == gdbarch_tdep (gdbarch)->lend_regnum || regnum == -1) regcache_raw_supply (regcache, gdbarch_tdep (gdbarch)->lend_regnum, ®s->lend); if (regnum == gdbarch_tdep (gdbarch)->lcount_regnum || regnum == -1) regcache_raw_supply (regcache, gdbarch_tdep (gdbarch)->lcount_regnum, ®s->lcount); if (regnum == gdbarch_tdep (gdbarch)->sar_regnum || regnum == -1) regcache_raw_supply (regcache, gdbarch_tdep (gdbarch)->sar_regnum, ®s->sar); if (regnum >=gdbarch_tdep (gdbarch)->ar_base && regnum < gdbarch_tdep (gdbarch)->ar_base + gdbarch_tdep (gdbarch)->num_aregs) regcache_raw_supply (regcache,regnum, ®s->ar[regnum - gdbarch_tdep (gdbarch)->ar_base]); else if (regnum == -1) { for (i = 0; i < gdbarch_tdep (gdbarch)->num_aregs; ++i) regcache_raw_supply (regcache, gdbarch_tdep (gdbarch)->ar_base + i, ®s->ar[i]); } }
void supply_gregset (struct regcache *regcache, const elf_gregset_t *gregsetp) { struct gdbarch *gdbarch = get_regcache_arch (regcache); const elf_greg_t *regp = (const elf_greg_t *) gregsetp; int regi; for (regi = M68K_D0_REGNUM; regi <= gdbarch_sp_regnum (gdbarch); regi++) regcache_raw_supply (regcache, regi, ®p[regmap[regi]]); regcache_raw_supply (regcache, gdbarch_ps_regnum (gdbarch), ®p[PT_SR]); regcache_raw_supply (regcache, gdbarch_pc_regnum (gdbarch), ®p[PT_PC]); }
static void dbug_supply_register (struct regcache *regcache, char *regname, int regnamelen, char *val, int vallen) { int regno; struct gdbarch *gdbarch = get_regcache_arch (regcache); if (regnamelen != 2) return; switch (regname[0]) { case 'S': if (regname[1] != 'R') return; regno = gdbarch_ps_regnum (gdbarch); break; case 'P': if (regname[1] != 'C') return; regno = gdbarch_pc_regnum (gdbarch); break; case 'D': if (regname[1] < '0' || regname[1] > '7') return; regno = regname[1] - '0' + M68K_D0_REGNUM; break; case 'A': if (regname[1] < '0' || regname[1] > '7') return; regno = regname[1] - '0' + M68K_A0_REGNUM; break; default: return; } monitor_supply_register (regcache, regno, val); }