2013-01-28  Nick Clifton  <nickc@redhat.com>

	* simops.c (v850_rotl): New function.
	(v850_bins): New function.
	* simops.h: Add prototypes fir v850_rotl and v850_bins.
	* v850-dc: Add entries for V850e3v5.
	* v850.igen: Add support for v850e3v5.
	(ld.dw, st.dw, rotl, bins): New patterns.

2013-01-10  Nick Clifton  <nickc@redhat.com>

	* interp.c (sim_open): Add support for bfd_arch_v850_rh850
	architecture type.  Add support for bfd_mach_v850e2 and
	bfd_mach_v850e2v3 machine numbers.
        * v850.igen (dbtrap): Add support for SIM_OPEN_DEBUG.
        (cmpf.d): Correct order of operands.
        (cmpf.s): Likewise.
        (trncf.dul): New pattern.
        (trncf.duw): New pattern.
        (trncf.sul): New pattern.
        (trncf.suw): New pattern.
        * v850-dc: Correct bitfield selection for TRNCF.SW and CVTF.SW.

2012-09-13  Nick Clifton  <nickc@redhat.com>

	* v850.igen (W,WWWW): Correct computation of register number.
	(JR32): Remove unnecessary comma.
	(cmovf.s): Register 0 is an invalid source register.
	(maddf.s): Remove bogus intermediary rounding.
	(nmaddf.s): Likewise.
	(trncf.sl): Remove bogus initial rounding.
	(trncf.dw): Likewise.
	(trncf.sl): Likewise.
	(trncf.sw): Likewise.

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

	* config.in, configure: Regenerate.

2012-03-28  Rathish C  <rathish.c@kpitcummins.com>

	* sim-main.h (struct _v850_regs): Add new fields mpu0_sregs,
	mpu1_sregs, and fpu_sregs.
	(MPU0_SR, MPU1_SR, FPU_SR): New macros for accessing new fields
	in _v850_regs struct.
	(SP_REGNO): Define.
	(SP): Redefine using SP_REGNO.
	(PSW_REGNO, EIIC, FEIC, DBIC, DIR, EIWR, FEWR, DBWR, BSEL, PSW_NPV)
	(PSW_DMP, PSW_IMP, ECR_EICC, ECR_FECC, FPSR, FPSR_REGNO, FPEPC)
	(FPST, FPST_REGNO, FPCC, FPCFG, FPCFG_REGNO, FPSR_DEM, FPSR_SEM)
	(FPSR_RM, FPSR_RN, FPSR_FS, FPSR_PR, FPSR_XC, FPSR_XCE, FPSR_XCV)
	(FPSR_XCZ, FPSR_XCO, FPSR_XCU, FPSR_XCI, FPSR_XE, FPSR_XEV)
	(FPSR_XEZ, FPSR_XEO, FPSR_XEU, FPSR_XEI, FPSR_XP, FPSR_XPV)
	(FPSR_XPZ, FPSR_XPO, FPSR_XPU, FPSR_XPI, FPST_PR, FPST_XCE)
	(FPST_XCV, FPST_XCZ, FPST_XCO, FPST_XCU, FPST_XCI, FPST_XPV)
	(FPST_XPZ, FPST_XPO, FPST_XPU, FPST_XPI, FPCFG_RM, FPCFG_XEV)
	(FPCFG_XEZ, FPCFG_XEO, FPCFG_XEU, FPCFG_XEI, GET_FPCC, CLEAR_FPCC)
	(SET_FPCC, TEST_FPCC, FPSR_GET_ROUND, MPM, MPC, MPC_REGNO, TID)
	(PPA, PPM, PPC, DCC, DCV0, DCV1, SPAL, SPAU, IPA0L, IPA0U, IPA1L)
	(IPA1U, IPA2L, IPA2U, IPA3L, IPA3U, DPA0L, DPA0U, DPA1L, DPA1U)
	(DPA2L, DPA2U, DPA3L, DPA3U, PPC_PPE, SPAL_SPE, SPAL_SPS, VIP)
	(VMECR, VMTID, VMADR, VPECR, VPTID, VPADR, VDECR, VDTID, MPM_AUE)
	(MPM_MPE, VMECR_VMX, VMECR_VMR, VMECR_VMW, VMECR_VMS, VMECR_VMRMW)
	(VMECR_VMMS, IPA2ADDR, IPA_IPE, IPA_IPX, IPA_IPR, IPE0, IPE1, IPE2)
	(IPE3, IPX0, IPX1, IPX2, IPX3, IPR0, IPR1, IPR2, IPR3, DPA2ADDR)
	(DPA_DPE, DPA_DPR, DPA_DPW, DPE0, DPE1, DPE2, DPE3, DPR0, DPR1)
	(DPR2, DPR3, DPW0, DPW1, DPW2, DPW3, DCC_DCE0, DCC_DCE1, PPA2ADDR)
	(PPC_PPC, PPC_PPE, PPC_PPM): New macros.
	(FPU_COMPARE): New enum.
	(TRACE_FP_INPUT_FPU1, TRACE_FP_INPUT_FPU2, TRACE_FP_INPUT_FPU3)
	(TRACE_FP_INPUT_BOOL1_FPU2, TRACE_FP_INPUT_WORD2)
	(TRACE_FP_RESULT_WORD1, TRACE_FP_RESULT_WORD2): New macros.
	* simops.c (Add32): Update prototype.
	(update_fpsr): New function.
	(SignalException): New function.
	(SignalExceptionFPE): New function.
	(check_invalid_snan): New function.
	(v850_float_compare): New function.
	(v850_div): New function.
	(v850_divu): New function.
	(v850_sar): New function.
	(v850_shl): New function.
	(v850_shr): New function.
	(v850_satadd): New function.
	(v850_satsub): New function.
	(load_data_mem): New function.
	(store_data_mem): New function.
	(mpu_load_mem_test): New function.
	(mpu_store_mem_test): New function.
	* simops.h: Add function prototype for above mentioned functions.
	(check_cvt_fi, check_cvt_if, check_cvt_ff): Define.
	* v850-dc: Add entry for v850e2 and v850e2v3.
	* v850.igen: Add support for v850e2 and v850e2v3.

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

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

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-05  Mike Frysinger  <vapier@gentoo.org>

	* interp.c (sim_do_command): Delete.

2011-03-21  Kevin Buettner  <kevinb@redhat.com>

	* simops (OP_10007E0): Update errno handling as most traps
	do not invoke the host's functionality directly.  Invoke
	sim_io_stat() instead of stat() for implementing TARGET_SYS_stat.
	Implement TARGET_SYS_fstat, TARGET_SYS_rename, and TARGET_SYS_unlink.

2011-02-14  Mike Frysinger  <vapier@gentoo.org>

	* simops.c (OP_10007E0): Change zfree to free.

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

	* interp.c (sim_store_register): Update return value to
	match new API.

2010-03-30  Mike Frysinger  <vapier@gentoo.org>

	* interp.c (interrupt_names): Add const to pointer type.
	(do_interrupt): Add const to interrupt_name.

2010-01-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* configure: Regenerate.

2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* config.in: Regenerate.
	* configure: Likewise.

	* configure: Regenerate.

2008-07-11  Hans-Peter Nilsson  <hp@axis.com>

	* configure: Regenerate to track ../common/common.m4 changes.
	* config.in: Ditto.

2008-06-06  Vladimir Prus  <vladimir@codesourcery.com>
            Daniel Jacobowitz  <dan@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

	* configure: Regenerate.

2008-02-05  DJ Delorie  <dj@redhat.com>

	* simops.c (OP_1C007E0): Compensate for 64 bit hosts.
	(OP_18007E0): Likewise.
	(OP_2C007E0): Likewise.
	(OP_28007E0): Likewise.
	* v850.igen (divh): Likewise.
	
	* simops.c (OP_C0): Correct saturation logic.
	(OP_220): Likewise.
	(OP_A0): Likewise.
	(OP_660): Likewise.
	(OP_80): Likewise.

	* simops.c (OP_2A0): If the shift count is zero, clear the
	carry.
	(OP_A007E0): Likewise.
	(OP_2C0): Likewise.
	(OP_C007E0): Likewise.
	(OP_280): Likewise.
	(OP_8007E0): Likewise.

	* simops.c (OP_2C207E0): Correct PSW flags for special divu
	conditions.
	(OP_2C007E0): Likewise, for div.
	(OP_28207E0): Likewise, for divhu.
	(OP_28007E0): Likewise, for divh.  Also, sign-extend the correct
	operand.
	* v850.igen (divh): Likewise, for 2-op divh.
	
	* v850.igen (bsh): Fix carry logic.

2007-02-20  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (interp.o): Uncomment and update.

2006-12-21  Hans-Peter Nilsson  <hp@axis.com>

	* acconfig.h: Remove.
	* config.in: Regenerate.

2006-06-13  Richard Earnshaw  <rearnsha@arm.com>

	* configure: Regenerated.

2006-06-05  Daniel Jacobowitz  <dan@codesourcery.com>

	* configure: Regenerated.

2006-05-31  Daniel Jacobowitz  <dan@codesourcery.com>

	* configure: Regenerated.

2005-03-23  Mark Kettenis  <kettenis@gnu.org>

	* configure: Regenerate.

2005-01-14  Andrew Cagney  <cagney@gnu.org>

	* configure.ac: Sinclude aclocal.m4 before common.m4.  Add
	explicit call to AC_CONFIG_HEADER.
	* configure: Regenerate.

2005-01-12  Andrew Cagney  <cagney@gnu.org>

	* configure.ac: Update to use ../common/common.m4.
	* configure: Re-generate.

2005-01-11  Andrew Cagney  <cagney@localhost.localdomain>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

2005-01-07  Andrew Cagney  <cagney@gnu.org>

	* configure.ac: Rename configure.in, require autoconf 2.59.
	* configure: Re-generate.

2004-12-08  Hans-Peter Nilsson  <hp@axis.com>

	* configure: Regenerate for ../common/aclocal.m4 update.

2004-01-18  Mark Kettenis  <kettenis@gnu.org>

	* simops.c: Include <sys/types.h>.

2003-09-05  Andrew Cagney  <cagney@redhat.com>
	    Nick Clifton  <nickc@redhat.com>

	* interp.c (sim_open): Accept bfd_mach_v850e1.
	* v850-dc: Add entry for v850e1.
	* v850.igen: Add support for v850e1.
	Add code for DBTRAP and DBRET instructions.
	(dbtrap): Create a separate v850e1 specific instruction.
	Only generate a trap if the target is not the v850e1.
	Otherwise treat it as a special kind of branch.
	(break): Mark as v850/v850e specific.
	
2003-05-16  Ian Lance Taylor  <ian@airs.com>

	* Makefile.in (SHELL): Make sure this is defined.
	(tmp-igen): Use $(SHELL) whenever we invoke move-if-change.

2003-04-06  Nick Clifton  <nickc@redhat.com>

	* simops.c (OP_40): Delete.  Move code to...
	* v850-igen.c (): ...Here. Sign extend the first operand.
	* simops.h (OP_40): Remove prototype.

2003-02-27  Andrew Cagney  <cagney@redhat.com>

	* interp.c (sim_open, sim_create_inferior): Rename _bfd to bfd.

2002-11-30  Andrew Cagney  <cagney@redhat.com>

	* simops.c: Use int, 1, 0 instead of boolean, true and false.
	* sim-main.h: Ditto.

2002-09-27  Jim Wilson  <wilson@redhat.com>

	* simops.c (OP_E6077E0): And op1 with 7 after reading register, not
	before.
	(BIT_CHANGE_OP): Likewise.

2002-09-26  Jim Wilson  <wilson@redhat.com>

	* simops (OP_10007E0): Don't subtract 4 from PC.

2002-09-19  Nick Clifton  <nickc@redhat.com>

	* interp.c (sim_open): Remove reference to v850ea.
	(sim_create_inferior): Likewise.
	* v850-dc: Likewise.
	* v850.igen: Remove all references to v850ea, including v850ea
	specific instructions.

2002-08-29  Nick Clifton  <nickc@redhat.com>

	From 2001-08-23  Catherine Moore  <clm@redhat.com>

	* Makefile.in: Add gen-zero-r0 option.
	* sim-main.h (GPR_SET, GPR_CLEAR): Define.
	* simops.c (OP_24007E0):  Sign extend the imm9
	operand of a mul instruction.

2002-06-17  Andrew Cagney  <cagney@redhat.com>

	* simops.c (trace_result): Fix printf formatting.

2002-06-16  Andrew Cagney  <ac131313@redhat.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

2001-12-02  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (simops.h, table.c): Delete targets.
	(tmp-gencode, gencode.o, gencode): Delete targets.
	(simops.h): New file.
	($(BUILT_SRC_FROM_IGEN)): Do not depend on simops.h.
	* gencode.c: Delete file.
	
2001-04-15  J.T. Conklin  <jtc@redback.com>

	* Makefile.in (simops.o): Add simops.h to dependency list.

2001-03-14  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (gencode): Link with libintl.

2001-01-31  Jonathan Larmour  <jlarmour@redhat.com>

	* Makefile.in (gencode): Link with libopcodes in build tree rather
	than building source files from there.

2000-05-30  Nick Clifton  <nickc@cygnus.com>

	* v850.igen: Remove illegal instruction pattern, since it is the
	same as the breakpoint pattern.

Tue May 23 21:39:23 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

2000-04-14  Gary Thomas  <gthomas@redhat.com>

	* v850.igen: Define 'br *' as illegal since this is the only
	way to provide a breakpoint on some v850 family processors.

2000-03-24  Frank Ch. Eigler  <fche@redhat.com>

	* v850.igen (ilgop): New insn pattern for four-byte breakpoints.

Thu Sep  2 18:15:53 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

1999-05-08  Felix Lee  <flee@cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	
Tue Dec  1 17:25:16 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (NL_TARGET): Define as -DNL_TARGET_v850.

Wed Nov 25 17:52:58 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (simops.o): Depends on targ-vals.h
	* simops.c: Include targ-vals.h instead of
 	libgloss/.../syscall.h. Replace SYS_* with TARGET_SYS_*.
	(divn, divun, OP_1C007E0, OP_18207E0, OP_1C207E0,OP_18007E0):
 	Replace signed long int with signed32.

Fri Oct  9 18:02:25 1998  Doug Evans  <devans@canuck.cygnus.com>

	* interp.c: #include "itable.h".
	(get_insn_name): New function.
	(sim_open): Initialize CPU_INSN_NAME,CPU_MAX_INSNS.
	* sim-main.h (MAX_INSNS,INSN_NAME): Delete.

Wed May  6 19:43:27 1998  Doug Evans  <devans@canuck.cygnus.com>

	* sim-main.h (INSN_NAME): New arg `cpu'.

Tue Apr 28 18:33:31 1998  Geoffrey Noer  <noer@cygnus.com>

        * configure: Regenerated to track ../common/aclocal.m4 changes.

Sun Apr 26 15:31:55 1998  Tom Tromey  <tromey@creche>

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	* config.in: Ditto.

Sun Apr 26 15:19:14 1998  Tom Tromey  <tromey@cygnus.com>

	* acconfig.h: New file.
	* configure.in: Reverted change of Apr 24; use sinclude again.

Fri Apr 24 14:16:40 1998  Tom Tromey  <tromey@creche>

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	* config.in: Ditto.

Fri Apr 24 11:18:08 1998  Tom Tromey  <tromey@cygnus.com>

	* configure.in: Don't call sinclude.

Sat Apr  4 20:36:25 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	* sim-main.h (SIM_MAIN_H): Wrap header.

Fri Mar 27 16:15:52 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Wed Mar 25 12:35:29 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Tue Mar 10 15:54:50 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (sim_stop): Delete, second attempt.

Thu Feb 26 19:09:47 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (sim_info): Delete.

Wed Feb 18 10:47:32 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-main.h (TRACE_ALU_INPUT*): Delete.  Moved to sim-trace.[hc].

	* simops.c (trace_result): Call trace_generic instead of
 	trace_one_insn.
	(trace_module): Change variable type to integer.
	(trace_input): Initialize trace_module with TRACE_ALU_IDX.

	* sim-main.h (trace_module): Change variable decl to integer type.
	(TRACE_BRANCH*, TRACE_LD, TRACE_ST): Update.
	
Tue Feb 17 12:51:18 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (sim_store_register, sim_fetch_register): Pass in
 	length parameter.  Return -1.

Tue Feb  3 16:24:42 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-main.h (IMEM16, IMEM16_IMMED): Rename IMEM and
 	IMEM_IMMED. To match recent igen change.

Sun Feb  1 16:47:51 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Sat Jan 31 18:15:41 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Fri Jan 30 09:51:27 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-main.h (CPU_CIA): Delete, replaced by.
	(CIA_SET, CIA_SET): Define.

Mon Jan 19 22:26:29 1998  Doug Evans  <devans@seba>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Mon Dec 15 23:17:11 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	* config.in: Ditto.

Fri Dec  5 09:26:08 1997  Nick Clifton  <nickc@cygnus.com>

	* v850.igen: Revert break value back to its old value.

Thu Dec  4 09:21:05 1997  Doug Evans  <devans@canuck.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Wed Dec  3 17:27:19 1997  Nick Clifton  <nickc@cygnus.com>

	* v850.igen: Make break have a zero first field, since otherwise
	it clashes with the DIVH instruction.

Sat Nov 22 21:32:07 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c (OP_10007E0): Rename SIGABRT -> SIM_SIGABRT. Give
 	sim_stopped instead of sim_signalled.

	* v850.igen (BREAK), simops.c (OP_12007E0): Rename SIGTRAP to
 	SIM_SIGTRAP.
	(illegal): Rename SIGILL to SIM_SIGILL.
	
	* sim-main.h, simops.c, interp.c: Do not include signal.h.

	* sim-main.h: Include sim-signal.h instead of signal.h.
	(SIGTRAP, SIGQUIT): Delete definition.
	(SIG_V850_EXIT): Delete definition.

Tue Nov 18 15:33:48 1997  Doug Evans  <devans@canuck.cygnus.com>

	* Makefile.in (SIM_OBJS): Use $(SIM_NEW_COMMON_OBJS).

Fri Oct 31 10:33:40 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (sim_open): Check state magic number.
	(sim-assert.h): Include.

Tue Oct 28 11:06:47 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* v850.igen: Add model filter field to records.

Fri Oct  3 09:28:00 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Fri Sep 26 11:56:02 1997  Felix Lee  <flee@cygnus.com>

	* sim-main.h: delete null override of SIM_ENGINE_HALT_HOOK and
 	SIM_ENGINE_RESTART_HOOK.
	
Wed Sep 24 17:38:57 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Wed Sep 24 17:28:26 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-main.h (WITH_TARGET_WORD_MSB): Delete.

	* configure.in (SIM_AC_OPTION_BITSIZE): Specify 32 bit
 	architecture with MSB == 31.

Wed Sep 24 14:04:20 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* v850.igen: Make divh insn with RRRRR==0 breakpoint.

Tue Sep 23 11:04:38 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Tue Sep 23 10:19:51 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (SIM_WARNINGS, SIM_ALIGNMENT, SIM_ENDIAN,
 	SIM_HOSTENDIAN, SIM_RESERVED_BITS): Delete, moved to common.
	(SIM_EXTRA_CFLAGS): Update.
	
Mon Sep 22 11:46:20 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	* configure.in: Really specify NONSTRICT_ALIGNMENT as the default.

Fri Sep 19 17:45:25 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in: Specify NONSTRICT_ALIGNMENT as the default.
	* configure: Regenerated to track ../common/aclocal.m4 changes.

Fri Sep 19 10:37:20 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* v850.igen (disp16): Use EXTEND16 to sign extend disp.
	(disp22): Only shift left by 1, not 2.
	("jmp"): Ensure PC is 2 byte aligned.

	* simops.c, v850.igen: Move "Bcond", "jr", "jarl" code to
 	v850.igen. Fix tracing.

	* simops.c (OP_300, OP_400, OP_500): Move "sdl.b", "sld.h",
 	"sld.w" insns to v850.igen.  Fix tracing.
	(OP_70): Ditto for "sld.hu".

	* v850.igen: Clarify tracing of "sld.b", "sld.h" et.al.

	* simops.c (condition_met): Make global.

	* sim-main.h (TRACE_ALU_INPUT3, TRACE_BRANCH0, TRACE_LD,
 	TRACE_ST): Define.
	(TRACE_LD_NAME): Define.

	* simops.c: Move "cmov", "cmov imm" to v850.igen, fix.

Wed Sep 17 16:21:08 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c: Move "mov", "reti", to v850.igen, fix tracing.
	
	* interp.c (hash): Delete.

	* v850.igen (nop): Really do nothing.

	* interp.c (do_interrupt): Mask interrupts after PSW is saved, not
 	before.
	* v850.igen (reti): Return to current PC not previous.

Wed Sep 17 14:02:10 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c: Move "ctret", "bsw", "hsw" to v850.igen, fix tracing.
	(trace_module): Global, save component/module name across insn.

	* simops.c: Move "bsh" to v850.igen, fix.
	
	* v850.igen (callt): Load correct number of bytes. Fix tracing.
	(stsr, ldsr): Correct src, dest fields. Fix tracing.
	(ctret): Force alignment.  Fix tracing.
	
Tue Sep 16 22:14:01 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c (trace_output): Add result argument.
	(trace_result): New function.  Simpler version of trace_output,
 	assumes trace needed.
	(trace_output): Call trace_result.
	(trace_output): For IMM_REG_REG, trace correct register.
	(trace_input): Add case for 16bit immediates.
	(OP_600, OP_640, OP_680, OP_6C0, OP_6A0): Use.

	* sim-main.h (TRACE_ALU_INPUT, TRACE_ALU_RESULT): Define.
	(trace_values, trace_name, trace_pc, trace_num_values): Make
 	global.
	(GR, SR): Define.
	
	v850.insn (movea, stsr): Use.
	(sxb, sxh, zxb, zxh): Ditto.
	
Tue Sep 16 21:14:01 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c: Move "movea" from here.
	* v850.igen: To here.

	* v850.igen (simm16): Define, sign extend imm16.
	(uimm16): Define, no sign extension.
	(addi, andi, movea, movhi, mulhi, ori, satsubi, xori): Use.
	
	* simops.c: Move "sxh", "switch", "sxb", "callt", "dispose",
 	"mov32" from here.
	* v850.igen: To here.
	(switch): Fix off by two error in NIA calc.
	
Tue Sep 16 15:14:01 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c (trace_pc, trace_name, trace_values, trace_num_values):
 	New static globals.
	(trace_input): Just save pc, name and values for trace_output.
	(trace_output): Write trace values to a buffer.  Use
 	trace_one_insn to print trace info and buffer.
	(SIZE_OPERANDS, SIZE_LOCATION): Delete.
	
Tue Sep 16 09:02:00 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-main.h (struct _sim_cpu): Add psw_mask so that reserved bits
 	can be masked out.

	* simops.c (OP_2007E0, OP_4007E0): Move "ldsr", "stsr"
 	instructions from here.
	* v850.igen (ldsr, stsr): To here.  Mask out reserved bits when
 	setting PSW.
	
	* interp.c (sim_open): Set psw_mask if machine known.

Tue Sep 16 10:20:00 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* v850-dc: Add rule to diferentiate between breakpoint and divh.
	* v850.igen (break): New instruction, breakpoint simulator.
	* v850.igen (breakpoint): Enable.  Change to a 32bit instruction.

Mon Sep 15 18:44:05 1997  Jim Wilson  <wilson@cygnus.com>

	* simops.c (Multiply64): Don't store into register zero.

Tue Sep 16 09:02:00 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (semantics.o): Add dependency.

	* sim-main.h (SAVE_1, SAVE_2): Perform backward compatible save,
 	do not adjust CIA/NIA.

Mon Sep 15 17:36:15 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c (OP_300, OP_400, OP_70): Make behavour depend on PSW[US].
	
	* simops.c: Move "divun", "sld.bu", "divhn", "divhun", "divn",
 	"divun", "pushml" code from here to v850.igen.
	(divun): Make global.
	(type3_regs): Make global
	
	* v850.igen: Move simops.c code to here.

	* interp.c (sim_create_inferior): For v850eq set US bit by
 	default.

	* interp.c (sim_open): Don't set arch, now set by
 	sim_analyze_program.

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Mon Sep 15 14:39:34 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c (op_types): Move from here.
	sim-main.h: To here.

	* sim-main.h (trace_input, trace_output), simops.c: Make global.

	* simops.c (OP_60): Move "jmp" code from here.
	* v850.igen (jmp): To here.

	* simops.c (OP_60): Move "sld.bu" code from here.
	* v850.igen (sld.bu): To here.

Fri Sep 12 15:11:03 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* v850.igen (prepare, ...): Add to v850eq architecture.

	* interp.c (sim_open): Default to v850eq.
	
	* interp.c (sim_open): Default to v850e.
	* sim-main.h (signal.h): Include.

	* v850.igen (illegal): Report/halt illegal instructions.

	* Makefile.in (SIM_EXTRA_CFLAGS): Add SIM_RESERVED_BITS.

	* configure.in: Add reserved bits option.
	* configure: Regenerate.

Thu Sep 11 08:40:03 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (sim_open): Use sim_do_commandf instead of asprintf.

	* sim-main.h (INSN_NAME): 

	* Makefile.in (INCLUDE): Add SIM_EXTRA_DEPS.
	(SIM_EXTRA_DEPS): Add itable.h
	(tmp-gencode): Does not depend on simops.h

	* sim-main.h (itable.h): Include.
	(MAX_INSNS, INSN_NAME): Define.

	* interp.c: Compute inttype from the interrupt_names index that
 	was passed in.

Wed Sep 10 10:25:40 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c (trace_input): Use trace_printf instead of
 	sim_io_printf.
	(trace_output): Ditto.
	(trace_input): Only trace when TRACE_ALU_P.  Delete code
 	disasembling instruction.
	(trace_output): Only trace when TRACE_ALU_P.

Tue Sep  9 01:29:50 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c (trace_input, trace_output): Use sim_io_printf.
	(OP_620): Pass correct argument to trace.
	(OP_E607E0): Ditto.
	(trace_input): Obtain prog_bfd, text_start et.al from simulator
 	struct.

Mon Sep  8 21:03:52 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* v850.igen: New file.
	* v850-dc: New file.

Mon Sep  8 18:33:04 1997  Andrew Cagney  <cagney@b1.cygnus.com>


	* sim-main.h (SEXT16): Delete, use EXTEND16.
	(SEXT8): Delete, use EXTEND8.
	(SEXT32): Delete, used?
	(SEXT40, SEXT44, SEXT64): Use UNSIGNED64 for constants, not ...LL.
	(WITH_TARGET_WORD_MSB): Define as 31. v850 little bit endian.
	
	* simops.c: Use EXTEND15 from sim-bits instead of SEXT16.

	* sim-main.h (DEBUG_TRACE, DEBUG_VALUES, v850_debug): Delete,
 	replace with TRACE_INSN_P and TRACE_ALU_P.

	* simops.c (trace_input, trace_output): Update.

	* interp.c (sim_engine_run): Delete.
	(lookup_hash): Delete.
	(sim_open): Do not fill hash table.
	(sim_trace): Delete.

Fri Sep  5 17:04:48 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c (OP_FFFF): Use sim_engine_halt.
	(OP_12007E0): Ditto.
	(OP_10007E0): Ditto.

	* sim-main.h (struct sim_cpu): Delete member exception. Using
 	sim-engine et.al.

	* interp.c (sim_info): Do not do anything in sim-info.
	(sim_stop): Delete, replace with sim-stop.
	(sim_stop_reason): Delete, replace with sim-reason.

	* sim-main.h (WITH_WATCHPOINTS): Define.
	(WITH_MODULO_MEMORY): Define
	
	* Makefile.in (SIM_OBJS): Add sim-resume, sim-watch, sim-stop,
 	sim-reason.

	* interp.c (enum interrupt_cond_type): Delete.
	(struct interrupt_generator): Delete.
	(enum interrupt_type): Drop int_none.
	(sim_open): Initialize WATCHPOINT module.
	(sim_resume, sim_run): Rename sim_resume to sim_run.
	(sim_engine_run): Replace interrupt code with call to sim-events.
	(sim_set_interrupt): Delete.
	(sim_parse_number): Delete.

Thu Sep  4 17:21:23 1997  Doug Evans  <dje@seba>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Thu Sep  4 18:11:37 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c (fetch_argv): New function, fetch a arg vector from
 	simulator memory.

	* configure.in: Check for fork, execve, execv.
	* configure: Regenerate.

	* interp.c (sim_store_register, sim_fetch_register): Use H2T_4 and
 	T2H_4 for byte swapping.

	* sim-main.h, interp.c (get_word, get_half, get_byte, put_word,
 	put_half, put_byte): Delete.

	* Makefile.in (SIM_OBJS): Add sim-memopt.o module.

	* sim-main.h (load_mem, store_mem): Redefine as macros.
	(IMEM, IMEM_IMMED): New macros - fetch instructions.

	* simops.c (OP_10007E0): For SYS_read, SYS_write, SYS_open
 	transfer data via a buffer.
	(fetch_str): New function, fetch string from memory.

	* Makefile.in (SIM_OBJS): Add sim-hrw.o module.

	* interp.c (sim_open): Establish memory maps using sim-memopt.c
 	via sim_do_command.
	(sim_do_command): Print error if memory-map command is used. Call
 	sim_args_command.
	(map): Delete, replaced by sim-core.
	(sim_memory_init): Delete, replaced by sim-core.
	(sim_set_memory_map): Delete, replaced by sim-memopt.
	(load_mem): Delete, replaced by sim-core.
	(store_mem): Delete, replaced by sim-core.
	(sim_write): Delete, replaced by sim-hrw.
	(sim_read): Delete, replaced by sim-hrw.

	* sim-main.h (struct sim_state): Remove memory members, using
 	sim-core.c

Wed Sep  3 10:18:55 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-main.h: Replace SIM_HAVE_FLATMEM with mem ptr.
	* interp.c (map): Do not add to a void pointer.
	
	* Makefile.in (INCLUDE): Add sim-main.h

	* configure.in: Check for time.h
	* configure: Re-generate.

	* interp.c (struct interrupt_generator): Make time unsigned long,
 	address SIM_ADDR.
	(sim_resume): Make oldpc SIM_ADDR.
	(struct hash_entry): Make mask/opcode unsigned.

	* v850_sim.h (struct simops ): Make opcode and mask unsigned.

	* simops.c (utime.h): Include if available.
	(OP_10007E0): Check for UTIME function.
	(divun): Put parentheses around shift argument.
	(OP_640): Put parentheses around shift argument, was wrong.
	(OP_107F0): Return something.

	* interp.c (sim_parse_number): Use strtoul not strtol.
	(sim_resume): Use sim_elapsed_time_get to keep track of the time.

	* configure.in (SIM_AC_OPTION_WARNINGS): Add.
 	(SIM_AC_OPTION_ENDIAN): Set to hardwired big.
	(SIM_AC_OPTION_HOST_ENDIAN): Add.
	(AC_CHECK_FUNCS): Add utime.
	(AC_CHECK_HEADERS): Add stdlib.h, string.h, strings.h, utime.h
	configure: Regenerate.
	

	* Makefile.in (SIM_RUN_OBJS): Use nrun.o.
	(SIM_OBJS): Add sim-io.o, sim-hload.o, sim-utils.o, sim-options.o,
 	sim-config.o, sim-module.o, sim-events.o, sim-core.o,
 	sim-endian.o, sim-engine.o, sim-trace.o, sim-profile.o
	(SIM_ENDIAN, SIM_WARNGINS): Define.

	* simops.c (OP_10007E0): Use sim_io_* for transfers.

	* interp.c (sim_resume): Pass sd around.

	* simops.c (sim-main.h): Include.

	* gencode.c (write_template): Generate #include sim-main.h.
	(write_opcodes): Ditto.
	
	* interp.c (prog_bfd, prog_bfd_was_opened_p): Delete.
	(v850_callback): Ditto.
	(sim_kind, myname): Ditto.
	(lookup_hash): Pass SD. Use sim_io_error.
	(sim_set_memory_map): Pass in SD, use.
	(init_system): Pass in SD, use.
	(sim_open): Update.
	(sim_set_profile): Delete.
	(sim_set_profile_size): Delete.
	(do_interrupt): Pass in SD, use.
	(sim_info): Use sim_io_printf.
	(sim_create_inferior): Reset registers.  Set PC from prog_bfd
 	argument.
	(sim_load): Delete, use common/sim-hload.c
	(sim_size): Rename to sim_memory_init.
	(sim_write): Remove call to init_system.
	(init_system): Delete.
	(sim_set_callbacks): Delete.
	(sim_set_interrupt): Pass in SD, use.
	(start_time): Delete.
	
	* v850_sim.h: Remove everything except `struct simops' from here.
 	* sim-main.h: Move most to here.
	* gencode.c: Move #includes to here.

	* sim-main.h(struct _sim_cpu): Rename struct _state.
	(#define PC, et.al.): Update
	(v850_callback): Delete.  Replaced with SIM_DESC arg.
	(int8, uint8, int16, uint16, int32, uint32): Define types using
 	unsigned8 et.al from common/sim-types.h.
	* sim-main.h (State): Define as STATE_CPU.

Mon Sep  1 12:07:55 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in: Check for time, chmod.
	* configure: Regenerate.
	* simops.c (SYS_time, SYS_chmod): Use HAVE_TIME, HAVE_CHMOD.
	
	* simops.c (../../libgloss/v850/sys/syscall.h): Include instead of
 	sys/syscall.h.
	(OP_10007E0): Check the existance each SYS_* macro independantly.

	* v850_sim.h (SIGQUIT, SIGTRAP): Only define if missing.

Wed Aug 27 18:13:22 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	* config.in: Ditto.

Tue Aug 26 10:42:38 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (sim_kill): Delete.
	(sim_create_inferior): Add ABFD argument.
	(sim_load): Move setting of PC from here.
	(sim_create_inferior): To here.

Mon Aug 25 17:50:22 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	* config.in: Ditto.

Mon Aug 25 11:31:23 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (sim_open): Add ABFD argument.

Fri Aug 22 10:39:28 1997  Nick Clifton  <nickc@cygnus.com>

	* simops.c (bsh): Only set CY flag if either of the bottom
	bytes is zero.
	
	* simops.c (prepare, dispose): Lower numbered
	registers go to higher numbered address.

	* simops.c (unsigned divide instructions): S bit set if result has
	top bit set.
	
	* simops.c (pushml, pushmh, popml, popmh): Lower numbered
	registers go to higher numbered address.
	
Wed Aug 20 13:56:35 1997  Nick Clifton  <nickc@cygnus.com>

	* simops.c (OP_107E0, OP_107F0, OP_307E0, OP_307F0): Use correct
	interpretation of SR bit in list18 structure.
	(divn, divun): New functions to perform N step divide functions.

Mon Aug 18 10:59:02 1997  Nick Clifton  <nickc@cygnus.com>

	* simops.c (OP_300, OP_400, OP_60, OP_70): Support variant opcodes
	with US bit set in the PSW.

Wed Aug 13 19:06:55 1997  Nick Clifton  <nickc@cygnus.com>

	* interp.c (sim_resume): Opcode functions return amount to be
	added to PC and all opcodes take a standard format in the OP[]
	array.
	
	(do_format_*): Functions removed.

	* v850_sim.h (SP, EP): New register mnemonics.
	
	* gencode.c (write_header): Functions prototypes return an
	integer.

	* simops.c: Opcode functions return amount to be added to PC.
	
	* v850_sim.h (CTPC, CTPSW, CTBP): New register mnemonics.
	
	* simops.c: Add support for v850e instructions.
	
	* simops.c: Add support for v850eq instructions.
	
Tue May 20 10:24:14 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (sim_open): Add callback argument.
	(sim_set_callbacks): Delete SIM_DESC argument.

Thu Apr 24 00:39:51 1997  Doug Evans  <dje@canuck.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Wed Apr 23 17:20:16 1997  Doug Evans  <dje@canuck.cygnus.com>

	* interp.c (prog_bfd_was_opened_p): New static local.
	(prog_bfd): New global variable.
	(sim_open): Undo patch to add -E support.
	(sim_close): Close prog_bfd if sim_load opened it.
	(sim_load): Record bfd of loaded file in prog_bfd.
	* simops.c (prog_bfd): Renamed from exec_bfd.

Fri Apr 18 14:17:12 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (sim_stop): Stub function.

Thu Apr 17 03:53:18 1997  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (SIM_OBJS): Add sim-load.o.
	* interp.c (sim_kind, myname): New static locals.
	(sim_open): Set sim_kind, myname.  Ignore -E arg.
	(sim_load): Return SIM_RC.  New arg abfd.  Call sim_load_file to
	load file into simulator.  Set start address from bfd.
	(sim_create_inferior): Return SIM_RC.  Delete arg start_address.

Wed Apr 16 19:53:55 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c (OP_10007E0): Only provide system calls SYS_execv,
 	SYS_wait, SYS_wait, SYS_utime, SYS_time if defined by the host.

Mon Apr  7 15:45:02 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	* config.in: Ditto.

Wed Apr  2 15:06:28 1997  Doug Evans  <dje@canuck.cygnus.com>

	* interp.c (sim_open): New arg `kind'.

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Wed Apr  2 14:34:19 1997 Andrew Cagney <cagney@kremvax.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Wed Mar 19 01:14:00 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Mon Mar 17 15:10:07 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* configure: Re-generate.

Fri Mar 14 10:34:11 1997  Michael Meissner  <meissner@cygnus.com>

	* configure: Regenerate to track ../common/aclocal.m4 changes.

Thu Mar 13 13:00:54 1997  Doug Evans  <dje@canuck.cygnus.com>

	* interp.c (sim_open): New SIM_DESC result.  Argument is now
	in argv form.
	(other sim_*): New SIM_DESC argument.

Tue Feb  4 13:33:30 1997  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (@COMMON_MAKEFILE_FRAG): Use
	COMMON_{PRE,POST}_CONFIG_FRAG instead.
	* configure.in: sinclude ../common/aclocal.m4.
	* configure: Regenerated.

Thu Jan 23 11:46:23 1997  Stu Grossman  (grossman@critters.cygnus.com)

	* configure configure.in Makefile.in:  Update to new configure
	scheme which is more compatible with WinGDB builds.
	* configure.in:  Improve comment on how to run autoconf.
	* configure:  Re-run autoconf to get new ../common/aclocal.m4.
	* Makefile.in:  Use autoconf substitution to install common
	makefile fragment.

Mon Jan 20 16:05:34 1997  Michael Meissner  <meissner@tiktok.cygnus.com>

	* simops.c (OP_{E0,2E0,6E0}): The multiply operations sign extend,
	not zero extend.

Tue Jan 14 17:06:03 1997  Stu Grossman  (grossman@critters.cygnus.com)

	* simops.c:  Put ifdefs around things to make MSVC happy.  Get rid
	of unistd.h.  Disable SYS_stat, SYS_chown, SYS_time, SYS_times,
	SYS_gettimeofday and SYS_utime from MSVC.

Tue Dec 31 18:11:13 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* simops.c (OP_10007E0): Know that kill encodes the signal number
	via: 0xdead0000 | signal and turn it back into a signal.

Fri Dec 27 14:44:06 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* v850_sim.h (SIG_V850_EXIT): Define as -1.

	* interp.c (sim_open): Cast calloc function.
	(sim_stop_reason): If signal is SIG_V850_EXIT, inform gdb the
	program exited with the appropriate exit code.
	(sim_set_interrupt): Declare buildargv.

	* simops.c (OP_10007E0): Make exit signal normal exit.  Make time
	type correct and work on big endian systems.

Wed Nov 20 02:18:44 1996  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in: Delete stuff moved to ../common/Make-common.in.
	(SIM_OBJS,SIM_EXTRA_CFLAGS,SIM_EXTRA_CLEAN): Define.
	* configure.in: Simplify using macros in ../common/aclocal.m4.
	Call AC_CHECK_HEADERS(unistd.h).
	* configure: Regenerated.
	* config.in: New file.
	* simops.c: #include "config.h".  #include <unistd.h> if present.

Sun Nov  3 23:02:54 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* v850_sim.h (State): New slots dummy_mem, pending_nmi.
	(EIPC, etc): New macros for system registers.
	* simops.c, interp.c: Use everywhere.

	* interp.c: Add support for interrupts issued by interrupt
	generators, either PC- or time-based.  Controlled by simulator
	command "sim interrupt".

	* interp.c: Add support for variable-size allocation of memory,
	via simulator command "sim memory-map".
	(map): Issue SIGSEGV for references to invalid memory regions.
	
Thu Oct 31 14:44:10 1996  Gavin Koch  <gavin@cygnus.com>
        
        * simops.c: Include <sys/time.h> for struct timeval and 
        struct timezone.
        
Wed Oct 30 08:49:10 1996  Jeffrey A Law  (law@cygnus.com)

	* simops.c (OP_10007E0): Handle SYS_times and SYS_gettimeofday.

	* simops.c (OP_10007E0): Handle SYS_time.

Tue Oct 29 14:22:55 1996  Jeffrey A Law  (law@cygnus.com)

	* simops.c: Include <sys/stat.h>.
	(OP_10007E0): Handle SYS_stat.

Thu Oct 24 12:26:35 1996  Jeffrey A Law  (law@cygnus.com)

	* simops.c (OP_10007E0): Don't declare errno.

	* simops.c (OP_500): Mask off low bit in displacement
	for sld.w.
	(OP_501): Similarly.

	* simops.c (OP_500): Fix displacement handling for sld.w.
	(OP_501): Similarly for sst.w.

	* simops.c (trace_input): Remove all references to SEXT7.
	(OP_300, OP_400, OP_500, OP_380, OP_480, OP_501): Displacement
	is zero extended for sst/sld instructions.
	* v850_sim.h (SEX7): Delete.  It's no longer needed (and it
	was incorrect anyway).

Thu Oct 24 10:33:33 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* Makefile.in:  Get rid of srcroot.  Set all INSTALL macros via
	autoconf.
	* gencode.c (write_opcodes):  Pad operands field to account for
	MSVC braindamage.
	* simops.c:  Include errno.h.  Exclude SYS_chown, since MSVC
	doesn't support it.  (Why is this here in the first place?!?)
	* v850_sim.h:  Get rid of 64 bit defs.  Also, get rid of #elif's.
	Change number of operands in struct simops from 9 to 6.  Define
	SIGTRAP and SIGQUIT for MSVC.

Tue Oct 15 16:19:51 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* interp.c (MEM_SIZE):  It's now bytes, not a power of 2.
	* (map):  Add support for external mem in the 1->2 meg range.
	Also, abort() when memory access is way out of bounds.  (Better to
	die than to give wrong result.  (This will be fixed later.))
	* (sim_size):  MEM_SIZE is now bytes, not shift factor.

Tue Oct  1 15:53:24 1996  Gavin Koch <gavin@cygnus.com>
        
        * simops.c (trace_input): Swapped order of operands for output
        output of OP_IMM_REG.  Changed the fetching of the operands for
        OP_LOAD32, and OP_STORE32 to work like op-function.
        
Mon Sep 30 15:46:33 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* interp.c:  Move includes of remote-sim.h and callback.h to
	v850-sim.h.
	* (lookup_hash): Add PC to report of hash failure.
	* (map load_mem store_mem):  New memory subsystem.  Models V851
	memory system.
	* (sim_write sim_read):  Use new memory subsystem.
	* (sim_resume):  Don't load and save PC into EIPC anymore.  Needed
	to make user-defined traps work right.
	* simops.c (OP_*):  Use new memory subsystem.
	* (OP_14007E0 (reti)):  Implement reti.
	* (OP_14996E0 (trap)):  Implement user-defined traps.  Move I/O to
	trap 31.  Use new memory subsystem.
	* v850_sim.h:  Prototypes for load_mem, store_mem and map.  Use
	load_mem in RLW macro.

Fri Sep 27 18:34:09 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* gencode.c (write_opcodes):  Output hex values for opcode mask
	and patterns.
	* interp.c (sim_resume):  Save and restore PC from the appropriate
	register.
	* (sim_fetch_register sim_store_register):  Fix byte-order problem
	with reading and writing registers.
	* simops.c (OP_FFFF):  Implement pseudo-breakpoint insn.

Fri Sep 27 17:42:37 1996  Jeffrey A Law  (law@cygnus.com)

	* simops.c (trace_input): Fix thinko. 

Wed Sep 18 09:54:12 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* simops.c (exec_bfd): Rename from sim_bfd.
	(trace_input): Ditto.

Thu Sep 12 12:03:05 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* simops.c (trace_input): Use find_nearest_line to print line
	number, function name or file name of PC.

Wed Sep 11 16:44:37 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* simops.c: Add tracing support.  Use SEXTxx macros instead of
	doing hardwired shifts.

	* configure.in (--enable-sim-cflags): Add switch to add additional
	flags to simulator buld.  If --enable-sim-cflags=trace, turn on
	tracing.
	* configure: Regenerate.

	* Makefile.in: Don't require a VPATH capable make if configuring
	in the same directory.  Don't use CFLAGS for configuration flags.
	Add flags from --enable-sim-cflags.  Support canadian cross
	builds.  Rebuild whole simulator if include files change.

	* interp.c (v850_debug): New global for debugging.
	(lookup_hash,sim_size,sim_set_profile): Use
	printf_filtered callback, instead of calling printf directly.
	(sim_{open,trace}): Enable tracing if -t and compiled for tracing.

	* v850_sim.h: Use limits.h to set the various sized types.
	(SEXT{5,7,16,22}): New macros.

Mon Sep  9 20:50:46 1996  Jeffrey A Law  (law@cygnus.com)

	* interp.c (hash): Make this an inline function
	when compiling with GCC.  Simplify.
	* simpos.c: Explicitly include "sys/syscall.h".  Remove
	some #if 0'd code.  Enable more emulated syscalls.

Wed Sep  4 01:48:55 1996  Jeffrey A Law  (law@cygnus.com)

	* interp.c: Fix sign bit handling for add and sub instructions.

Tue Sep  3 10:20:30 1996  Jeffrey A Law  (law@cygnus.com)

	* gencode.c: Fix various indention & style problems.
	Remove test code.  Remove #if 0 code.
	* interp.c: Provide prototypes for all static functions.
	Fix minor indention problems.
	(sim_open, sim_resume): Remove unused variables.
	(sim_read): Return type is "int".
	* simops.c: Remove unused variables.
	(divh): Make result of divide-by-zero zero.
	(setf): Initialize result to keep compiler quiet.
	(sar instructions): These just clear the overflow bit.
	* v850_sim.h: Provide prototypes for put_byte, put_half
	and put_word.

	* interp.c: OP should be an array of 32bit operands!
	(v850_callback): Declare.
	(do_format_5): Fix extraction of OP[0].
	(sim_size): Remove debugging printf.
	(sim_set_callbacks): Do something useful.
	(sim_stop_reason): Gross hacks to get c-torture running.
	* simops.c: Simplify code for computing targets of bCC
	insns.   Invert 's' bit if 'ov' bit is set for some
	instructions.  Fix 'cy' bit handling for numerous
	instructions.  Make the simulator stop when a halt
	instruction is encountered.  Very crude support for
	emulated syscalls (trap 0).
	* v850_sim.h: Include "callback.h" and declare
	v850_callback.  Items in the operand array are 32bits.

Sun Sep  1 22:35:35 1996  Jeffrey A Law  (law@cygnus.com)

	* interp.c (sim_resume): Fix code to check for a format 3
	opcode.
	* simops.c: bCC insns only argument is a constant, not a
	register value (duh...)

Fri Aug 30 10:33:49 1996  Jeffrey A Law  (law@cygnus.com)

	* simops.c: Fix "not1" and "set1".

	* simops.c: Don't forget to initialize temp for
	"ld.h" and "ld.w"

	* interp.c: Remove various debugging printfs.

	* simops.c: Fix satadd, satsub boundary case handling.

	* interp.c (hash): Fix.
	* interp.c (do_format_8): Get operands correctly and
	call the target function.
	* simops.c: Rough cut at "clr1", "not1", "set1", and "tst1".

Thu Aug 29 13:53:29 1996  Jeffrey A Law  (law@cygnus.com)

	* interp.c (do_format_4): Get operands correctly and
	call the target function.
	* simops.c: Rough cut at "sld.b", "sld.h", "sld.w", "sst.b",
	"sst.h", and "sst.w".

	* v850_sim.h: The V850 doesn't have split I&D spaces.  Change
	accordingly.  Remove many unused definitions.
	* interp.c: The V850 doesn't have split I&D spaces.  Change
	accordingly.
	(get_longlong, get_longword, get_word): Deleted.
	(write_longlong, write_longword, write_word): Deleted.
	(get_operands): Deleted.
	(get_byte, get_half, get_word): New functions.
	(put_byte, put_half, put_word): New functions.
	* simops.c: Remove unused functions.  Rough cut at
	"ld.b", "ld.h", "ld.w", "st.b", "st.h", "st.w" insns.

	* v850_sim.h (struct _state): Remove "psw" field.  Add
	"sregs" field.
	(PSW): Remove bogus definition.
	* simops.c: Change condition code handling to use the psw
	register within the sregs array.  Handle "ldsr" and "stsr".

	* simops.c: Handle "satadd", "satsub", "satsubi", "satsubr".

	* interp.c (do_format_5): Get operands correctly and
	call the target function.
	(sim_resume): Don't do a PC update for format 5 instructions.
	* simops.c: Handle "jarl" and "jmp" instructions.

	* simops.c: Fix minor typos.  Handle "cmp", "setf", "tst"
	"di", and "ei" instructions correctly.

	* interp.c (do_format_3): Get operands correctly and call
	the target function.
	* simops.c: Handle bCC instructions.

	* simops.c: Add condition code handling to shift insns.
	Fix minor typos in condition code handling for other insns.

	* Makefile.in: Fix typo.
	* simops.c: Add condition code handling to "sub" "subr" and
	"divh" instructions.

	* interp.c (hash): Update to be more accurate.
	(lookup_hash): Call hash rather than computing the hash
	code here.
	(do_format_1_2): Handle format 1 and format 2 instructions.
	Get operands correctly and call the target function.
	(do_format_6): Get operands correctly and call the target
	function.
	(do_formats_9_10): Rough cut so shift ops will work.
	(sim_resume): Tweak to deal with format 1 and format 2
	handling in a single funtion.  Don't update the PC
	for format 3 insns.  Fix typos.
	* simops.c: Slightly reorganize.  Add condition code handling
	to "add", "addi", "and", "andi", "or", "ori", "xor", "xori"
	and "not" instructions.
	* v850_sim.h (reg_t): Registers are 32bits.
	(_state): The V850 has 32 general registers.  Add a 32bit
	psw and pc register too.  Add accessor macros

	* Makefile.in, interp.c, v850_sim.h: Bring over endianness
	changes from the d10v simulator.

	* simops.c: Add shift support.

	* simops.c: Add multiply & divide support.  Abort for system
	instructions.

	* simops.c: Add logicals, mov, movhi, movea, add, addi, sub
	and subr.  No condition codes yet.

Wed Aug 28 13:53:22 1996  Jeffrey A Law  (law@cygnus.com)

	* ChangeLog, Makefile.in, configure, configure.in, v850_sim.h, 
	gencode.c, interp.c, simops.c: Created.

