+2018-02-21 Yao Qi <yao.qi@linaro.org>
+
+ * avr-tdep.c (avr_read_pc): Change parameter type to
+ readable_regcache.
+ * gdbarch.sh (read_pc): Likewise.
+ * gdbarch.c: Re-generated.
+ * gdbarch.h: Re-generated.
+ * hppa-tdep.c (hppa_read_pc): Change parameter type to
+ readable_regcache.
+ * ia64-tdep.c (ia64_read_pc): Likewise.
+ * mips-tdep.c (mips_read_pc): Likewise.
+ * spu-tdep.c (spu_read_pc): Likewise.
+
+2018-02-21 Yao Qi <yao.qi@linaro.org>
+
+ * Makefile.in (COMMON_SFILES): Add regcache-dump.c
+ * regcache-dump.c: New file.
+ * regcache.c: Move register_dump to regcache-dump.c.
+ (maintenance_print_registers): Likewise.
+ (maintenance_print_raw_registers): Likewise.
+ (maintenance_print_cooked_registers): Likewise.
+ (maintenance_print_register_groups): Likewise.
+ (maintenance_print_remote_registers): Likewise.
+ (_initialize_regcache): Likewise.
+ * regcache.h (register_dump): Moved from regcache.c.
+
+2018-02-21 Yao Qi <yao.qi@linaro.org>
+
+ * regcache.c (regcache::regcache): Update.
+ (regcache::invalidate): Move it to detached_regcache::invalidate.
+ (get_thread_arch_aspace_regcache): Update.
+ (regcache::raw_update): Update.
+ (regcache::cooked_read): Remove some code.
+ (regcache::cooked_read_value): Likewise.
+ (regcache::raw_write): Remove assert on m_readonly_p.
+ (regcache::raw_supply_integer): Move it to
+ detached_regcache::raw_supply_integer.
+ (regcache::raw_supply_zeroed): Likewise.
+ * regcache.h (detached_regcache) <raw_supply_integer>: New
+ declaration.
+ <raw_supply_zeroed, invalidate>: Likewise.
+ (regcache) <raw_supply_integer, raw_supply_zeroed>: Removed.
+ <invalidate>: Likewise.
+ <m_readonly_p>: Removed.
+
+2018-02-21 Yao Qi <yao.qi@linaro.org>
+
+ * infcmd.c (get_return_value): Let stop_regs point to
+ get_current_regcache.
+ * regcache.c (regcache::regcache): Remove.
+ (register_dump_reg_buffer): New class.
+ (regcache_print): Adjust.
+ * regcache.h (regcache): Remove constructors.
+
+2018-02-21 Yao Qi <yao.qi@linaro.org>
+
+ * regcache.c (class register_dump): New class.
+ (register_dump_regcache, register_dump_none): New class.
+ (register_dump_remote, register_dump_groups): New class.
+ (regcache_print): Update.
+ * regcache.h (regcache_dump_what): Move it to regcache.c.
+ (regcache) <dump>: Remove.
+
+2018-02-21 Yao Qi <yao.qi@linaro.org>
+
+ * jit.c (struct jit_unwind_private) <regcache>: Change its type to
+ reg_buffer_rw *.
+ (jit_unwind_reg_set_impl): Call raw_supply.
+ (jit_frame_sniffer): Use reg_buffer_rw.
+ * record-full.c (record_full_core_regbuf): Change its type.
+ (record_full_core_open_1): Use reg_buffer_rw.
+ (record_full_close): Likewise.
+ (record_full_core_fetch_registers): Use regcache->raw_supply.
+ (record_full_core_store_registers): Likewise.
+ * regcache.c (regcache::get_register_status): Move it to
+ reg_buffer.
+ (regcache_raw_set_cached_value): Remove.
+ (regcache::raw_set_cached_value): Remove.
+ (regcache::raw_write): Call raw_supply.
+ (regcache::raw_supply): Move it to reg_buffer_rw.
+ * regcache.h (regcache_raw_set_cached_value): Remove.
+ (reg_buffer_rw): New class.
+
+2018-02-21 Yao Qi <yao.qi@linaro.org>
+
+ * dummy-frame.c (dummy_frame_cache) <prev_regcache>: Use
+ readonly_detached_regcache.
+ (dummy_frame_prev_register): Use regcache->cooked_read.
+ * frame.c (frame_save_as_regcache): Change return type.
+ (frame_pop): Update.
+ * frame.h (frame_save_as_regcache): Update declaration.
+ * inferior.h (get_infcall_suspend_state_regcache): Update
+ declaration.
+ * infrun.c (infcall_suspend_state) <registers>: use
+ readonly_detached_regcache.
+ (save_infcall_suspend_state): Don't use regcache_dup.
+ (get_infcall_suspend_state_regcache): Change return type.
+ * linux-fork.c (struct fork_info) <savedregs>: Change to
+ readonly_detached_regcache.
+ <pc>: New field.
+ (fork_save_infrun_state): Don't use regcache_dup.
+ (info_checkpoints_command): Adjust.
+ * mi/mi-main.c (register_changed_p): Update declaration.
+ (mi_cmd_data_list_changed_registers): Use
+ readonly_detached_regcache.
+ (register_changed_p): Change parameter type to
+ readonly_detached_regcache.
+ * ppc-linux-tdep.c (ppu2spu_cache) <regcache>: Use
+ readonly_detached_regcache.
+ (ppu2spu_sniffer): Construct a new readonly_detached_regcache.
+ * regcache.c (readonly_detached_regcache::readonly_detached_regcache):
+ New.
+ (regcache::save): Move it to reg_buffer.
+ (regcache::restore): Change parameter type.
+ (regcache_dup): Remove.
+ * regcache.h (reg_buffer) <save>: New method.
+ (readonly_detached_regcache): New class.
+ * spu-tdep.c (spu2ppu_cache) <regcache>: Use
+ readonly_detached_regcache.
+ (spu2ppu_sniffer): Construct a new readonly_detached_regcache.
+
+2018-02-21 Yao Qi <yao.qi@linaro.org>
+
+ * frame.c (frame_save_as_regcache): Use regcache method save.
+ (frame_pop): Use regcache method restore.
+ * infrun.c (restore_infcall_suspend_state): Likewise.
+ * linux-fork.c (fork_load_infrun_state): Likewise.
+ * ppc-linux-tdep.c (ppu2spu_sniffer): User regcache method
+ save.
+ * regcache.c (regcache_save): Remove.
+ (regcache::restore): More asserts.
+ (regcache_cpy): Remove.
+ * regcache.h (regcache_save): Remove the declaration.
+ (regcache::restore): Move from private to public.
+ Remove the friend declaration of regcache_cpy.
+ (regcache_cpy): Remove declaration.
+
2018-02-21 Yao Qi <yao.qi@linaro.org>
* aarch64-tdep.c (aarch64_pseudo_register_read_value): Change