| Index: gdb/gdbserver/linux-crisv32-low.c
|
| diff --git a/gdb/gdbserver/linux-crisv32-low.c b/gdb/gdbserver/linux-crisv32-low.c
|
| index e0e5504bccea35c918803d0618c5225124f8be51..d0e2f5621f28fff775a85ca28ca41ffde4871d26 100644
|
| --- a/gdb/gdbserver/linux-crisv32-low.c
|
| +++ b/gdb/gdbserver/linux-crisv32-low.c
|
| @@ -231,6 +231,7 @@ cris_remove_point (char type, CORE_ADDR addr, int len)
|
| unsigned long bp_ctrl;
|
| unsigned long start, end;
|
| struct regcache *regcache;
|
| + unsigned long bp_d_regs[12];
|
|
|
| /* Breakpoint/watchpoint types:
|
| 0 = memory breakpoint for instructions
|
| @@ -259,8 +260,6 @@ cris_remove_point (char type, CORE_ADDR addr, int len)
|
| single switch (addr) as there may be several watchpoints with
|
| the same start address for example. */
|
|
|
| - unsigned long bp_d_regs[12];
|
| -
|
| /* Get all range registers to simplify search. */
|
| collect_register_by_name (regcache, "s3", &bp_d_regs[0]);
|
| collect_register_by_name (regcache, "s4", &bp_d_regs[1]);
|
| @@ -321,8 +320,9 @@ static int
|
| cris_stopped_by_watchpoint (void)
|
| {
|
| unsigned long exs;
|
| + struct regcache *regcache = get_thread_regcache (current_inferior, 1);
|
|
|
| - collect_register_by_name ("exs", &exs);
|
| + collect_register_by_name (regcache, "exs", &exs);
|
|
|
| return (((exs & 0xff00) >> 8) == 0xc);
|
| }
|
| @@ -331,51 +331,52 @@ static CORE_ADDR
|
| cris_stopped_data_address (void)
|
| {
|
| unsigned long eda;
|
| + struct regcache *regcache = get_thread_regcache (current_inferior, 1);
|
|
|
| - collect_register_by_name ("eda", &eda);
|
| + collect_register_by_name (regcache, "eda", &eda);
|
|
|
| /* FIXME: Possibly adjust to match watched range. */
|
| return eda;
|
| }
|
|
|
| static void
|
| -cris_fill_gregset (void *buf)
|
| +cris_fill_gregset (struct regcache *regcache, void *buf)
|
| {
|
| int i;
|
|
|
| for (i = 0; i < cris_num_regs; i++)
|
| {
|
| if (cris_regmap[i] != -1)
|
| - collect_register (i, ((char *) buf) + cris_regmap[i]);
|
| + collect_register (regcache, i, ((char *) buf) + cris_regmap[i]);
|
| }
|
| }
|
|
|
| static void
|
| -cris_store_gregset (const void *buf)
|
| +cris_store_gregset (struct regcache *regcache, const void *buf)
|
| {
|
| int i;
|
|
|
| for (i = 0; i < cris_num_regs; i++)
|
| {
|
| if (cris_regmap[i] != -1)
|
| - supply_register (i, ((char *) buf) + cris_regmap[i]);
|
| + supply_register (regcache, i, ((char *) buf) + cris_regmap[i]);
|
| }
|
| }
|
|
|
| -typedef unsigned long elf_gregset_t[cris_num_regs];
|
| -
|
| struct regset_info target_regsets[] = {
|
| - { PTRACE_GETREGS, PTRACE_SETREGS, 0, sizeof (elf_gregset_t),
|
| + { PTRACE_GETREGS, PTRACE_SETREGS, 0, cris_num_regs * 4,
|
| GENERAL_REGS, cris_fill_gregset, cris_store_gregset },
|
| { 0, 0, 0, -1, -1, NULL, NULL }
|
| };
|
|
|
| struct linux_target_ops the_low_target = {
|
| - init_register_crisv32,
|
| + init_registers_crisv32,
|
| -1,
|
| NULL,
|
| NULL,
|
| NULL,
|
| + NULL,
|
| + NULL, /* fetch_register */
|
| cris_get_pc,
|
| cris_set_pc,
|
| (const unsigned char *) &cris_breakpoint,
|
|
|