+2007-06-16 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * regcache.c (struct regcache): Add ptid_t member.
+ (regcache_xmalloc): Initialize it.
+ (regcache_cpy_no_passthrough): Do not refer to current_regcache.
+ (regcache_dup): Likewise.
+ (regcache_dup_no_passthrough): Likewise.
+ (current_regcache): Make static.
+ (registers_ptid): Remove variable.
+ (get_thread_regcache): New function.
+ (get_current_regcache): New function.
+ (registers_changed): Implement by freeing current regcache.
+ (regcache_raw_read): Do not refer to current_regcache. Set
+ inferior_ptid to regcache->ptid while calling target routines.
+ (regcache_raw_write): Likewise.
+ (regcache_raw_supply): Do not refer to current_regcache.
+ (read_pc_pid): Use thread regcache. Do not modify inferior_ptid.
+ (write_pc_pid): Likewise.
+ (build_regcache): Remove.
+ (_initialize_regcache): Do not call DEPRECATED_REGISTER_GDBARCH_SWAP
+ or deprecated_register_gdbarch_swap. Do not initialize
+ registers_ptid.
+ * regcache.h (get_current_regcache): Add prototype.
+ (get_thread_regcache): Likewise.
+ (current_regcache): Remove declaration.
+
+ * corelow.c (core_open): Replace current_regcache by
+ get_current_regcache ().
+ * frame.c (frame_pop): Likewise.
+ (put_frame_register): Likewise.
+ (get_current_frame, create_new_frame): Likewise.
+ * mi/mi-main.c (mi_cmd_data_write_register_values): Likewise.
+ * stack.c (return_command): Likewise.
+ * infcall.c (call_function_by_hand): Likewise.
+ * infrun.c (resume): Likewise.
+ (save_inferior_status, restore_inferior_status): Likewise.
+ * linux-fork.c (fork_load_infrun_state): Likewise.
+ (fork_save_infrun_state): Likewise.
+ * win32-nat.c (win32_resume): Likewise.
+ * i386fbsd-nat.c (i386fbsd_resume): Likewise.
+ * monitor.c (monitor_wait): Likewise.
+ * remote.c (remote_wait): Likewise.
+ * remote-mips.c (mips_wait): Likewise.
+
+ * bsd-kvm.c (bsd_kvm_open): Likewise
+ (bsd_kvm_proc_cmd, bsd_kvm_pcb_cmd): Likewise.
+ * fbsd-nat.c (fbsd_make_corefile_notes): Likewise.
+ * i386-linux-nat.c (i386_linux_resume): Likewise.
+ * ia64-linux-nat.c (ia64_linux_insert_watchpoint): Likewise.
+ (ia64_linux_stopped_data_address): Likewise.
+
+ * frv-tdep.c (frv_fdpic_loadmap_addresses): Likewise.
+ * m32c-tdep.c (m32c_virtual_frame_pointer): Likewise.
+ * mep-tdep.c (current_me_module, current_options): Likewise.
+ * mips-tdep.c (deprecated_mips_set_processor_regs_hack): Likewise.
+
+ * linux-nat.c (linux_nat_do_thread_registers): Use thread
+ regcache instead of current_regcache. Call target_fetch_registers.
+ (linux_nat_corefile_thread_callback): Update call site.
+ (linux_nat_do_registers): Likewise.
+ * procfs.c (procfs_do_thread_registers): Use thread regcache instead
+ of current_regcache.
+ (procfs_make_note_section): Likewise.
+ * proc-service.c (ps_lgetregs, ps_lsetregs): Likewise.
+ (ps_lgetfpregs, ps_lsetfpregs): Likewise.
+ * sol-thread.c (ps_lgetregs, ps_lsetregs): Likewise.
+ (ps_lgetfpregs, ps_lsetfpregs): Likewise.
+
+2007-06-15 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * regcache.c (read_register, read_register_pid): Remove.
+ (write_register, write_register_pid): Likewise.
+ * regcache.h (read_register, read_register_pid): Remove prototype.
+ (write_register, write_register_pid): Likewise.
+
+2007-06-15 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * gdbarch.sh (read_pc): Add REGCACHE argument. Remove PTID argument.
+ (write_pc): Likewise. Remove default implementation, add predicate.
+ * gdbarch.c, gdbarch.h: Regenerate.
+ * regcache.c (read_pc_pid): Use current regcache instead of calling
+ read_register_pid.
+ (write_pc_pid): Check gdbarch_write_pc predicate, implement default
+ case inline.
+ (generic_target_write_pc): Remove.
+ * inferior.h (generic_target_write_pc): Remove.
+ * frv-tdep.c (frv_gdbarch_init): Do not install it.
+ * m68hc11-tdep.c (m68hc11_gdbarch_init): Likewise.
+ * rs6000-tdep.c (rs6000_gdbarch_init): Likewise.
+ * sh64-tdep.c (sh64_gdbarch_init): Likewise.
+ * sh-tdep.c (sh_gdbarch_init): Likewise.
+ * xstormy16-tdep.c (xstormy16_gdbarch_init): Likewise.
+
+ * avr-tdep.c (avr_read_pc): Add REGCACHE argument. Remove PTID
+ argument. Use REGCACHE instead of calling read_register_pid.
+ * hppa-hpux-tdep.c (hppa_hpux_read_pc): Likewise.
+ * hppa-tdep.c (hppa_read_pc): Likewise.
+ * hppa-tdep.h (hppa_read_pc): Likewise.
+ * ia64-tdep.c (ia64_read_pc): Likewise.
+ * m32r-tdep.c (m32r_read_pc): Likewise.
+ * mep-tdep.c (mep_read_pc): Likewise.
+ * mn10300-tdep.c (mn10300_read_pc): Likewise.
+ * spu-tdep.c (spu_read_pc): Likewise.
+
+ * arm-tdep.c (arm_write_pc): Add REGCACHE argument. Remove PTID
+ argument. Use REGCACHE instead of calling write_register_pid.
+ * avr-tdep.c (avr_write_pc): Likewise.
+ * hppa-hpux-tdep.c (hppa_hpux_write_pc): Likewise.
+ * hppa-tdep.c (hppa_write_pc): Likewise.
+ * hppa-tdep.h (hppa_write_pc): Likewise.
+ * i386-linux-tdep.c (i386_linux_write_pc): Likewise.
+ * amd64-linux-tdep.c (amd64_linux_write_pc): Likewise.
+ * ia64-linux-tdep.c (ia64_linux_write_pc): Likewise.
+ * ia64-tdep.c (ia64_write_pc): Likewise.
+ * ia64-tdep.h (ia64_write_pc): Likewise.
+ * m32r-tdep.c (m32r_write_pc): Likewise.
+ * m88k-tdep.c (m88k_write_pc): Likewise.
+ * mep-tdep.c (mep_write_pc): Likewise.
+ * mips-tdep.c (mips_write_pc): Likewise.
+ * mips-linux-tdep.c (mips_linux_write_pc): Likewise.
+ * mn10300-tdep.c (mn10300_write_pc): Likewise.
+ * sparc-tdep.c (sparc_write_pc): Likewise.
+ * spu-tdep.c (spu_write_pc): Likewise.
+
+ * mips-tdep.c (read_signed_register): Remove.
+ (read_signed_register_pid): Likewise.
+ (mips_read_pc): Add REGCACHE argument. Remove PTID argument.
+ Use REGCACHE instead of calling read_signed_register_pid.
+
+2007-06-15 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * gdbarch.sh (push_dummy_code): Add REGCACHE argument.
+ * gdbarch.c, gdbarch.h: Regenerate.
+ * infcall.c (generic_push_dummy_code): Add REGCACHE argument.
+ (push_dummy_code): Likewise. Pass it to callee.
+ (call_function_by_hand): Pass current regcache to push_dummy_code.
+
+ * hppa-hpux-tdep.c (hppa_hpux_push_dummy_code): Add REGCACHE
+ argument. Use it instead of current_regcache.
+
+ * cris-tdep.c (cris_push_dummy_code): Add REGCACHE argument.
+ * sparc-tdep.c (sparc32_push_dummy_code): Likewise.
+
+2007-06-15 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * gdbarch.sh (get_longjmp_target): Add FRAME argument.
+ * gdbarch.c, gdbarch.h: Regenerate.
+ * infrun.c (handle_inferior_event): Pass current frame to
+ gdbarch_get_longjmp_target.
+
+ * alpha-tdep.c (alpha_get_longjmp_target): Add FRAME argument.
+ Read registers from FRAME instead of using read_register.
+ Use get_frame_arch instead of current_gdbarch.
+ * arm-tdep.c (arm_get_longjmp_target): Likewise.
+ * i386-tdep.c (i386_get_longjmp_target): Likewise.
+ * m68k-tdep.c (m68k_get_longjmp_target): Likewise.
+ * mips-linux-tdep.c (mips_linux_get_longjmp_target): Likewise.
+ (mips64_linux_get_longjmp_target): Likewise.
+ * mipsnbsd-tdep.c (mipsnbsd_get_longjmp_target): Likewise.
+
+2007-06-15 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * gdbarch.sh (skip_trampoline_code): Add FRAME argument.
+ * gdbarch.c, gdbarch.h: Regenerate.
+ * arch-utils.c (generic_skip_trampoline_code): Add FRAME argument.
+ * arch-utils.h (generic_skip_trampoline_code): Likewise.
+ * infrun.c (handle_inferior_event): Pass current frame to
+ gdbarch_skip_trampoline_code and skip_language_trampoline.
+
+ * language.c (unk_lang_trampoline): Add FRAME argument.
+ (skip_language_trampoline): Add FRAME argument. Pass it to
+ skip_trampoline callback.
+ * language.h: Add forward declaration of struct frame_info.
+ (struct language_defn): Add FRAME argument to skip_trampoline.
+ (skip_language_trampoline): Add FRAME argument.
+ * cp-abi.c (cplus_skip_trampoline): Add FRAME argument. Pass it
+ to skip_trampoline callback.
+ * cp-abi.h: Add forward declaration of struct frame_info.
+ (cplus_skip_trampoline): Add FRAME argument.
+ (struct cp_abi_ops): Add FRAME argument to skip_trampoline callback.
+ * gnu-v3-abi.c (gnuv3_skip_trampoline): Add FRAME argument. Pass it
+ to gdbarch_skip_trampoline_code.
+ * objc-lang.c (objc_skip_trampoline): Add FRAME argument. Pass it
+ to gdbarch_skip_trampoline_code.
+
+ * minsyms.c (find_solib_trampoline_target): Add FRAME argument.
+ * symtab.h (find_solib_trampoline_target): Likewise.
+ * obsd-tdep.c (obsd_skip_solib_resolver): Pass current frame to
+ find_solib_trampoline_target.
+
+ * arm-tdep.c (arm_skip_stub): Add FRAME argument. Read registers
+ from FRAME instead of calling read_register.
+
+ * hppa-hpux-tdep.c (hppa_hpux_skip_trampoline_code): Add FRAME
+ argument. Read registers from FRAME instead of using read_register.
+ * hppa-tdep.c (hppa_skip_trampoline_code): Likewise.
+ * hppa-tdep.h (hppa_skip_trampoline_code): Add FRAME argument.
+
+ * i386-cygwin-tdep.c (i386_cygwin_skip_trampoline_code): Add FRAME
+ argument.
+
+ * m32c-tdep.c (m32c_skip_trampoline_code): Add FRAME argument.
+
+ * mips-tdep.c (mips_skip_trampoline_code): Add FRAME argument. Read
+ registers from FRAME instead of using read_signed_register.
+
+ * ppc-linux-tdep.c (ppc_linux_skip_trampoline_code): Add FRAME
+ argument.
+ (ppc64_standard_linkage_target): Likewise. Read registers from FRAME
+ instead of using read_register.
+ (ppc64_skip_trampoline_code): Add FRAME argument. Pass it to
+ ppc64_standard_linkage_target.
+ * rs6000-tdep.c (rs6000_skip_trampoline_code): Add FRAME argument.
+ Pass it to find_solib_trampoline_target. Read registers from FRAME
+ instead of using read_register.
+
+ * xstormy16-tdep.c (xstormy16_skip_trampoline_code): Add FRAME
+ argument.
+
+2007-06-15 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * gdbarch.sh (software_single_step): Replace REGCACHE argument by
+ FRAME argument.
+ * gdbarch.c, gdbarch.h: Regenerate.
+ * infrun.c (resume): Pass current frame to SOFTWARE_SINGLE_STEP.
+
+ * alpha-tdep.c (alpha_next_pc): Add FRAME argument. Retrieve
+ registers from FRAME instead of using read_register.
+ (alpha_software_single_step): Replace REGCACHE by FRAME. Pass FRAME
+ to alpha_next_pc. Use get_frame_pc instead of read_pc.
+ * alpha-tdep.h (alpha_software_single_step): Replace REGCACHE
+ argument by FRAME.
+
+ * arm-tdep.c (shifted_reg_val): Add FRAME argument. Read registers
+ from FRAME instead of using read_register.
+ (thumb_get_next_pc): Likewise.
+ (arm_get_next_pc): Likewise.
+ (arm_software_single_step): Replace REGCACHE by FRAME. Pass FRAME
+ to arm_get_next_pc. Use get_frame_pc instead of read_register.
+ * arm-tdep.h (arm_software_single_step): Replace REGCACHE
+ argument by FRAME.
+
+ * cris-tdep.c (find_step_target): Add FRAME argument. Read registers
+ from FRAME instead of using read_register.
+ (cris_software_single_step): Replace REGCACHE by FRAME. Pass FRAME
+ to find_step_target.
+
+ * mips-tdep.c (mips32_next_pc): Add FRAME argument. Read registers
+ from FRAME instead of using read_register / read_signed_register.
+ (extended_mips16_next_pc): Likewise.
+ (mips16_next_pc): Likewise.
+ (mips_next_pc): Likewise.
+ (mips_software_single_step): Replace REGCACHE by FRAME. Pass FRAME
+ to mips_next_pc. Use get_frame_pc instead of read_pc.
+ * mips-tdep.h (mips_software_single_step): Replace REGCACHE
+ argument by FRAME.
+
+ * rs6000-tdep.c (branch_dest): Add FRAME argument. Use it instead
+ of current frame. Read registers from FRAME.
+ (deal_with_atomic_sequence): Add FRAME argument. Pass it to
+ branch_dest. Use get_frame_pc instead of read_pc.
+ (rs6000_software_single_step): Likewise.
+ (bl_to_blrl_insn_p): Do not call branch_dest.
+ * rs6000-tdep.h (rs6000_software_single_step): Replace REGCACHE
+ argument by FRAME.
+
+ * sparc64-linux-tdep.c (sparc64_linux_step_trap): Add FRAME argument.
+ Read registers from FRAME instead of current regcache.
+ * sparc-linux-tdep.c (sparc32_linux_step_trap): Likewise.
+ * sparcnbsd-tdep.c (sparcnbsd_step_trap): Likewise.
+ * sparc-tdep.c (sparc_address_from_register): Remove.
+ (sparc_analyze_control_transfer): Pass FRAME argument instead of
+ GDBARCH. Pass FRAME to step_trap callback.
+ (sparc_step_trap): Add FRAME argument.
+ (space_software_single_step): Replace REGCACHE by FRAME. Pass FRAME
+ to sparc_analyze_control_transfer. Read registers from FRAME instead
+ of calling sparc_address_from_register.
+ * sparc-tdep.h (struct gdbarch_tdep): Add FRAME argument to
+ step_trap callback.
+ (sparc_address_from_register): Remove prototype.
+ (sparc_software_single_step): Replace REGCACHE argument by FRAME.
+ (sparcnbsd_step_trap): Add FRAME argument.
+
+ * spu-tdep.c (spu_software_single_step): Replace REGCACHE argument
+ by FRAME. Read registers from FRAME instead of REGCACHE.
+
+2007-06-15 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * arm-tdep.c (arm_print_float_info): Use register value from FRAME
+ instead of calling read_register.
+
+ * avr-tdep.c (avr_push_dummy_call): Write to REGCACHE instead of
+ calling write_register.
+
+ * hppa-tdep.c (hppa32_push_dummy_call): Write to REGCACHE instead of
+ calling write_register.
+
+ * ia64-tdep.c (find_func_descr): Add REGCACHE parameter. Use it
+ instead of calling read_register.
+ (ia64_push_dummy_call): Update call to find_func_descr. Use REGCACHE
+ instead of calling read_register and write_register.
+
+ * m32r-tdep.c (m32r_linux_supply_gregset): Use REGCACHE parameter
+ instead of current_regcache.
+
+ * mn10300-tdep.c (mn10300_push_dummy_call): Write to REGCACHE instead
+ of calling write_register.
+ * mn10300-linux-tdep.c (am33_supply_fpregset_method): Use REGCACHE
+ parameter instead of current_regcache.
+
+ * mips-tdep.c (mips2_fp_compat): Add FRAME parameter. Use it
+ instead of calling read_register.
+ (mips_read_fp_register_double, mips_print_fp_register): Update calls.
+ (mips_eabi_push_dummy_call): Use REGCACHE instead of write_register.
+ (mips_n32n64_push_dummy_call): Likewise.
+ (mips_o32_push_dummy_call): Likewise.
+ (mips_o64_push_dummy_call): Likewise.
+
+ * ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Use REGCACHE
+ parameter instead of current_regcache.
+
+ * xtensa-tdep.c (xtensa_register_write_masked): Add REGCACHE parameter.
+ Use it instead of read_register and write_register.
+ (xtensa_register_read_masked): Likewise.
+ (xtensa_pseudo_register_read): Update call.
+ (xtensa_pseudo_register_write): Likewise.
+ (xtensa_frame_cache): Use register values unwound from NEXT_FRAME
+ instead of calling read_register.
+ (xtensa_push_dummy_call): Update comment.
+
+2007-06-15 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * mips-tdep.c (mips16_scan_prologue): Replace read_next_frame_reg
+ by frame_unwind_register_signed calls.
+ (mips32_scan_prologue): Likewise. Skip analysis of alloca stack
+ frame allocations when called with NULL NEXT_FRAME parameter.
+ (read_next_frame_reg): Remove.
+
+ * sh-tdep.c (sh_analyze_prologue): Add FPSCR parameter. Use it
+ instead of reading the FPSCR register.
+ (sh_frame_cache): Pass unwound FPSCR register value to
+ sh_analyze_prologue.
+ (sh_skip_prologue): Pass dummy FPSCR value to sh_analyze_prologue.
+
+ * v850-tdep.c (v850_analyze_prologue): Add CTBP parameter. Use it
+ instead of reading the CTBP register.
+ (v850_frame_cache): Pass unwound CTBP register value to
+ v850_analyze_prologue.
+
+2007-06-15 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * sh-tdep.h (sh_show_regs): Add FRAME parameter.
+ * sh-tdep.c (sh_show_regs): Likewise.
+ (sh_show_regs_command): Pass current frame to sh_show_regs routine.
+ (sh_generic_show_regs): Add FRAME parameter. Use register
+ values from that frame instead of calling read_register.
+ (sh3_show_regs, sh2e_show_regs, sh2a_show_regs, sh2a_nofpu_show_regs,
+ sh3e_show_regs, sh3_dsp_show_regs, sh4_show_regs, sh4_nofpu_show_regs,
+ sh_dsp_show_regs): Likewise.
+ * sh64-tdep.c (sh64_show_media_regs, sh64_show_compact_regs,
+ sh64_show_regs): Likewise.
+
+2007-06-15 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * mips-tdep.c (deprecated_mips_set_processor_regs_hack): Read from
+ current regcache instead of calling read_register.
+
+2007-06-15 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * mep-tdep.c (current_me_module): Read from current regcache
+ instead of calling read_register.
+ (current_options): Likewise.
+
+2007-06-15 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * cris-tdep.c (cris_stopped_data_address): Read register values
+ from current frame instead of calling read_register.
+ * frv-tdep.c (frv_stopped_data_address): Likewise.
+
+2007-06-15 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * solib-sunos.c (sunos_solib_create_inferior_hook): Use write_pc
+ instead of write_register (PC_REGNUM, ...).
+
+2007-06-15 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * solib-sunos.c (sunos_solib_create_inferior_hook): Add comment
+ explaining why the PC adjustment code is necessary.
+
+2007-06-15 Vladimir Prus <vladimir@codesourcery.com>
+
+ * m68k-tdep.h (enum m68k_flavour): New.
+ (struct gdbarch_tdep): New fields
+ float_return, flavour and fpregs_present.
+ * m68k-tdep.c (m68k_register_type): Use
+ fpregs_present and conditionalize floating
+ registers type on flavour.
+ (m68k_register_names): New.
+ (m68k_register_name): Use the above.
+ (m68k_convert_register_p): Consult fpregs_present.
+ (m68k_register_to_value, m68k_value_to_register):
+ Use register_type to obtain the type of floating
+ point registers.
+ (m68k_svr4_extract_return_value): Check tdep->float_return.
+ Use register_type to get the type of floating
+ point regiters.
+ (m68k_svr4_store_return_value): Likewise.
+ (m68k_dwarf_reg_to_regnum): Check tdep->fpregs_present.
+ (m68k_analyze_register_saves): Likewise.
+ (m68k_gdbarch_init): Extract infromation
+ from XML description, if present. Guess coldfire by
+ looking at the file, if present. Conditionalize
+ setting of long double format. Set decr_pc_after_break
+ to 2 on coldfire and fido. Enable XML-driven
+ register description.
+ * m68kbsd-tdep.c (m68kbsd_fpreg_offset): Use
+ size of tdep->fpreg_type, as opposed to hardcoded value.
+ * Makefile.in (m68k-tdep.o): Update dependencies.
+