X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdbserver%2Fwin32-arm-low.cc;h=aacf2cdf8cd37203af010df5432f43b393f511d0;hb=6d520e36de0229eefe2f1671438cc8333a90b5e6;hp=78b7fd09ec3266466f4701df4ef03fc5c9cff0e3;hpb=4834dad062658ef49ef86c9c48eb004c48a242a5;p=deliverable%2Fbinutils-gdb.git diff --git a/gdbserver/win32-arm-low.cc b/gdbserver/win32-arm-low.cc index 78b7fd09ec..aacf2cdf8c 100644 --- a/gdbserver/win32-arm-low.cc +++ b/gdbserver/win32-arm-low.cc @@ -111,13 +111,42 @@ arm_arch_setup (void) win32_tdesc = tdesc_arm; } +/* Implement win32_target_ops "num_regs" method. */ + +static int +arm_num_regs (void) +{ + return sizeof (mappings) / sizeof (mappings[0]), +} + /* Correct in either endianness. We do not support Thumb yet. */ static const unsigned long arm_wince_breakpoint = 0xe6000010; #define arm_wince_breakpoint_len 4 +/* Implement win32_target_ops "get_pc" method. */ + +static CORE_ADDR +arm_win32_get_pc (struct regcache *regcache) +{ + uint32_t pc; + + collect_register_by_name (regcache, "pc", &pc); + return (CORE_ADDR) pc; +} + +/* Implement win32_target_ops "set_pc" method. */ + +static void +arm_win32_set_pc (struct regcache *regcache, CORE_ADDR pc) +{ + uint32_t newpc = pc; + + supply_register_by_name (regcache, "pc", &newpc); +} + struct win32_target_ops the_low_target = { arm_arch_setup, - sizeof (mappings) / sizeof (mappings[0]), + arm_num_regs, NULL, /* initial_stuff */ arm_get_thread_context, NULL, /* prepare_to_resume */ @@ -127,6 +156,9 @@ struct win32_target_ops the_low_target = { NULL, /* single_step */ (const unsigned char *) &arm_wince_breakpoint, arm_wince_breakpoint_len, + 0, + arm_win32_get_pc, + arm_win32_set_pc, /* Watchpoint related functions. See target.h for comments. */ NULL, /* supports_z_point_type */ NULL, /* insert_point */