2012-06-15  Joel Brobecker  <brobecker@adacore.com>

	* config.in, configure: Regenerate.

2012-05-24  Pedro Alves  <palves@redhat.com>

	PR gdb/7205

        Replace TARGET_SIGNAL_ with GDB_SIGNAL_ throughout.

2012-03-24  Mike Frysinger  <vapier@gentoo.org>

	* aclocal.m4, config.in, configure: Regenerate.

2012-03-22  Mike Frysinger  <vapier@gentoo.org>

	* configure.ac (CYCLE_ACCURATE): Add template with AC_DEFINE call.
	(CYCLE_STATS): Likewise.

2012-03-02  Kevin Buettner  <kevinb@redhat.com>

	* load.h (rx_load): Add `callback' parameter to function prototype.
	(gdb/callback.h): Include.
	* load.c (load.h): Include.
	(xprintf, find_section_name_by_offset): New functions.
	(rx_load): Add `callback' parameter.  Add code for printing
	section loaded using GDB's printf facilities.
	* gdb-if.c (sim_load, sim_create_inferior): Update calls to
	rx_load().
	* main.c (main): Likewise.
	* syscalls.c, syscalls.h (get_callbacks): New function.

2011-12-03  Mike Frysinger  <vapier@gentoo.org>

	* aclocal.m4: New file.
	* configure: Regenerate.

2011-10-17  Mike Frysinger  <vapier@gentoo.org>

	* configure.ac: Change include to common/acinclude.m4.

2011-10-17  Mike Frysinger  <vapier@gentoo.org>

	* configure.ac: Change AC_PREREQ to 2.64.  Delete AC_CONFIG_HEADER
	call.  Replace common.m4 include with SIM_AC_COMMON.
	* configure: Regenerate.

2011-07-11  Mike Frysinger  <vapier@gentoo.org>

	* configure.ac: Rename from configure.in.

2011-07-11  Mike Frysinger  <vapier@gentoo.org>

	* configure.in: Add "dnl" before copyright notice.

2011-04-16  Mike Frysinger  <vapier@gentoo.org>

	* gdb-if.c (sim_complete_command): New stub function.

2011-01-11  Andrew Burgess  <aburgess@broadcom.com>

	* gdb-if.c (sim_store_register): Update return value to
	match new API.

2010-12-14  DJ Delorie  <dj@redhat.com>

	* rx.c (decode_opcode): For "MVFC PC,", use the address of the
	opcode, not the address following the opcode.
	(decode_opcode): RXO_branchrel is relative to the opcode's PC, not
	the address following the opcode.

2010-11-11  DJ Delorie  <dj@redhat.com>

	* rx.c (lsb_count): New.
	(divu_cycles): New.
	(div_cycles): New.
	(decode_opcode): Fix cycle count math for div, divu, suntil, and
	swhile.

2010-09-29  Kevin Buettner  <kevinb@redhat.com>

	* mem.c (rx_mem_ptr): When invalidating the decode cache, account
	for the fact that the instruction decoder never uses swapped
	addresses.

2010-09-29  Nick Clifton  <nickc@redhat.com>

	* rx.c (decode_opcode: RXO_int): Only break out of the emulation
	loop if rx_syscall() does not return a RX_STEPPED result.

2010-09-23  Kevin Buettner  <kevinb@redhat.com>

	* rx.c (decode_opcode): Add cycle information for RXO_smovu.

2010-09-23  Kevin Buettner  <kevinb@redhat.com>

	* fpu.c, gdb-if.c, load.c, misc.c, syscalls.c (config.h): Include.

	* rx.c (decode_opcode): Declare `tx' as unsigned.

	* cpu.h (reset_decoder): Declare.
	* load.c (rx_load): Call `reset_decoder'.
	* rx.c (reset_decoder): New function.

2010-07-29  DJ Delorie  <dj@redhat.com>

	* rx.c (decode_cache_base): New.
	(id_names): Remove ediv and edivu.
	(optype_names): Add TwoReg.
	(maybe_get_mem_page): New.
	(rx_get_byte): Call it.
	(get_op): Add TwoReg support.
	(put_op): Likewise.
	(PD, PS, PS2, GD, GS, GS2, DSZ, SSZ, S2SZ, US1, US2, OM): "opcode"
	is a pointer now.
	(DO_RETURN): New.  We use longjmp to return an exception result.
	(decode_opcode): Make opcode a pointer to the decode cache.  Save
	decoded opcode information and re-use.  Call DO_RETURN instead of
	return throughout.  Remove ediv and edivu.
	* mem.c (ptdc): New.  Adds decode cache.
	(rx_mem_ptr): Support it.
	(rx_mem_decode_cache): New.
	* mem.h (enum mem_ptr_action): add MPA_DECODE_CACHE.
	(rx_mem_decode_cache): Declare.
	* gdb-if.c (sim_resume): Add decode_opcode's setjmp logic here...
	* main.c (main): ...and here.  Use a fast loop if neither trace
	nor disassemble is given.
	* cpu.h (RX_MAKE_STEPPED, RX_MAKE_HIT_BREAK, RX_MAKE_EXITED,
	RX_MAKE_STOPPED, RX_EXITED, RX_STOPPED): Adjust so that 0 is not a
	valid code for anything.

2010-07-27  DJ Delorie  <dj@redhat.com>

	* README.txt: New.
	* config.h (CYCLE_ACCURATE, CYCLE_STATS): New.
	* configure.in (--enable-cycle-accurate, --enable-cycle-stats):
	New.  Default to enabled.
	* configure: Regenerate.

	* cpu.h (regs_type): Add cycle tracking info.
	(reset_pipeline_stats): Declare.
	(halt_pipeline_stats): Declare.
	(pipeline_stats): Declare.
	* main.c (done): Call pipeline_stats().
	* mem.h (rx_mem_ptr): Moved to here ...
	* mem.c (mem_ptr): ... from here.  Rename throughout.
	(mem_put_byte): Move LEDs to Port A.  Add Port B to control cycle
	statistics.  Move UART to SCI4.
	(mem_put_hi): Add TPU 1-2.  TPU 1 and 2 count CPU cycles.
	* reg.c (init_regs): Set Rt reg to -1 (no reg).
	* rx.c: Add cycle counting and statistics throughout.
	(rx_get_byte): Optimize for speed.
	(decode_opcode): Likewise.
	(reset_pipeline_stats): New.
	(halt_pipeline_stats): New.
	(pipeline_stats): New.
	* trace.c (sim_disasm_one): Print cycle count.

2010-07-07  Kevin Buettner  <kevinb@redhat.com>

	* gdb-if.c (sim_store_register): Add case for sim_rx_acc_regnum.

2010-06-24  Kevin Buettner  <kevinb@redhat.com>

	* gdb-if.c (trace.h): Include.
	(reg_size, sim_fetch_register): Add cases for sim_rx_acc_regnum.

2010-06-07  Nick Clifton  <nickc@redhat.com>

	* reg.c (set_oszc): Use unsigned int for the mask.
	(set_szc, set_osz, set_sz): Likewise.

2010-05-28  Kevin Buettner  <kevinb@redhat.com>

	* gdb-if.c (sim_do_command): Add a "sim verbose noisy" command.

2010-04-14  Mike Frysinger  <vapier@gentoo.org>

	* gdb-if.c (sim_write): Add const to buf arg.

2010-01-30  Masaki Muranaka  <monaka@monami-software.com>

        * configure.in: Check if the host has getopt.h.
        * configure: Regenerate.
        * config.in: Regenerate.
        * main.c: Include config.h.
	Use HAVE_STDLIB_H, HAVE_UNISTD_H, HAVE_GETOPT_H.
	Include getopt.h in case HAVE_GETOPT_H is defined.

2009-12-22  Yoshinori Sato  <ysato@users.sourceforge.jp>

	* rx/rx.c (decode_opcode): btst bit address mask fix.

2009-11-30  DJ Delorie  <dj@redhat.com>

	* rx/rx.c (decode_opcode): fix SWHILE logic.

2009-10-27  DJ Delorie  <dj@redhat.com>
	    Kevin Buettner <kevinb@redhat.com>

	* load.h: New.
	* rx.c: New.
	* syscalls.c: New.
	* syscalls.h: New.
	* load.c: New.
	* configure.in: New.
	* gdb-if.c: New.
	* err.c: New.
	* cpu.h: New.
	* Makefile.in: New.
	* fpu.c: New.
	* mem.c: New.
	* config.in: New.
	* err.h: New.
	* reg.c: New.
	* mem.h: New.
	* main.c: New.
	* misc.h: New.
	* trace.c: New.
	* misc.c: New.
	* syscall.h: New.
	* trace.h: New.
	* fpu.h: New.
