2018-01-02  Nick Clifton  <nickc@redhat.com>

	PR 22663
	* maverick.c (DSPCDP4): Add missing parameter to debug print
	statement.

2017-09-21  Yao Qi  <yao.qi@linaro.org>

	* wrapper.c (print_insn): Use disassembler instead of
	print_insn_little_arm.

2017-09-06  John Baldwin  <jhb@FreeBSD.org>

	* configure: Regenerate.

2017-02-13  Mike Frysinger  <vapier@gentoo.org>

	* armos.c: Include libiberty.h.
	(SWIopen): Use ARRAY_SIZE.
	* armsupp.c: Include libiberty.h.
	(ModeToBank): Use ARRAY_SIZE.
	* wrapper.c (sim_target_parse_command_line): Likewise.

2016-07-14  Nick Clifton  <nickc@redhat.com>

	* armemu.c (Multiply64): Only issue error messages about invalid
	arguments if debugging is enabled.
	* armos.c (ARMul_OSHandleSWI): Ignore invalid flags.

2016-01-10  Mike Frysinger  <vapier@gentoo.org>

	* config.in, configure: Regenerate.

2016-01-10  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2016-01-10  Mike Frysinger  <vapier@gentoo.org>

	* configure.ac (SIM_AC_OPTION_ENVIRONMENT): Delete call.
	* configure: Regenerate.

2016-01-10  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2016-01-10  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2016-01-10  Mike Frysinger  <vapier@gentoo.org>

	* configure.ac (SIM_AC_OPTION_INLINE): Delete call.
	* configure: Regenerate.

2016-01-10  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2016-01-10  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2016-01-09  Mike Frysinger  <vapier@gentoo.org>

	* config.in, configure: Regenerate.

2016-01-06  Mike Frysinger  <vapier@gentoo.org>

	* wrapper.c (sim_create_inferior): Mark argv and env const.
	(sim_open): Mark argv const.

2016-01-04  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2016-01-03  Mike Frysinger  <vapier@gentoo.org>

	* wrapper.c (sim_open): Update sim_parse_args comment.

2016-01-03  Mike Frysinger  <vapier@gentoo.org>

	* wrapper.c (sim_target_parse_arg_array): Replace for loop with
	a call to countargv.

2016-01-03  Mike Frysinger  <vapier@gentoo.org>

	* configure.ac (SIM_AC_OPTION_HOSTENDIAN): Delete.
	* configure: Regenerate.

2016-01-02  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.
	* wrapper.c (init): Change BIG_ENDIAN to BFD_ENDIAN_BIG.

2015-12-30  Mike Frysinger  <vapier@gentoo.org>

	* wrapper.c (sim_store_register): Rename to ...
	(arm_reg_store): ... this.
	(sim_fetch_register): Rename to ...
	(arm_reg_fetch): ... this.
	(sim_open): Call CPU_REG_FETCH/CPU_REG_STORE.

2015-12-27  Mike Frysinger  <vapier@gentoo.org>

	* Makefile.in (SIM_OBJS): Delete sim-hload.o.

2015-12-26  Mike Frysinger  <vapier@gentoo.org>

	* config.in, configure: Regenerate.

2015-12-25  Mike Frysinger  <vapier@gentoo.org>

	* Makefile.in (SIM_OBJS): Delete bag.o.
	* armdefs.h (struct ARMul_State): Delete ErrorCode.
	(ResetPin, FIQPin, IRQPin, AbortPin, TransPin, BigEndPin, Prog32Pin,
	Data32Pin, LateAbortPin, ARMul_OSExit, ARMul_OSLastErrorP,
	ARMul_Debug, ARMul_OSException,rdi_log, SpinCursor, HOURGLASS,
	HOURGLASS_RATE): Delete.
	* armemu.c (ARMul_Emulate26): Delete ARMul_Debug call.
	* arminit.c (ARMul_Reset): Do not set state->ErrorCode.
	(ARMul_Abort): Delete ARMul_OSException call.
	* armopts.h: Delete file.
	* armos.c (isatty_, ARMul_OSExit, ARMul_OSException,
	ARMul_OSLastErrorP, ARMul_Debug, BUFFERSIZE, UNIQUETEMPS, NOOP,
	BINARY, READOP, WRITEOP, FIXCRLF): Delete.
	(struct OSblock): Delete Time0, ErrorP, FileTable, FileFlags, and
	tempnames.
	(ARMul_OSInit): Do not set OSptr->ErrorP, OSptr->FileTable, or
	OSptr->tempnames.
	* armrdi.c: Delete file.
	* armvirt.c: Delete armopts.h include.
	(ARMul_LoadInstrS): Delete HOURGLASS logic.
	* bag.c, bag.h, communicate.c, communicate.h, dbg_conf.h, dbg_cp.h,
	dbg_hif.h: Delete files.
	* dbg_rdi.h (RDP_*, RDI*): Delete defines.
	(PointHandle, ThreadHandle, Dbg_ConfigBlock, Dbg_HostosInterface,
	Dbg_MCState, getbufferproc): Delete.
	(rdi_*): Delete Functions.
	(RDI_ConfigAspect, RDI_ConfigMatchType, RDI_NameList): Delete
	(struct RDIProcVec): Delete.
	* gdbhost.c, gdbhost.h, kid.c, main.c, parent.c: Delete files.
	* wrapper.c (ARMul_Debug): Delete.

2015-12-15  Dominik Vogt  <vogt@linux.vnet.ibm.com>

	* thumbemu.c (handle_T2_insn): Fix left shift of negative value.
	* armemu.c (handle_v6_insn): Likewise.

2015-11-14  Mike Frysinger  <vapier@gentoo.org>

	* wrapper.c (sim_close): Delete.

2015-07-14  Nick Clifton  <nickc@redhat.com>

	* armcopro.c: Remove extraneous whitespace.
	* armdefs.h: Likewise.
	* armfpe.h: Likewise.
	* arminit.c: Likewise.
	* armopts.h: Likewise.
	* armos.c: Likewise.
	* armos.h: Likewise.
	* armrdi.c: Likewise.
	* armsupp.c: Likewise.
	* armvirt.c: Likewise.
	* bag.c: Likewise.
	* bag.h: Likewise.
	* communicate.c: Likewise.
	* communicate.h: Likewise.
	* dbg_conf.h: Likewise.
	* dbg_cp.h: Likewise.
	* dbg_hif.h: Likewise.
	* dbg_rdi.h: Likewise.
	* gdbhost.c: Likewise.
	* gdbhost.h: Likewise.
	* iwmmxt.c: Likewise.
	* iwmmxt.h: Likewise.
	* kid.c: Likewise.
	* main.c: Likewise.
	* maverick.c: Likewise.
	* parent.c: Likewise.
	* thumbemu.c: Likewise.
	* wrapper.c: Likewise.

2015-07-02  Nick Clifton  <nickc@redhat.com>

	* Makefile.in (SIM_EXTRA_CFLAGS): Revert previous delta.
	(SIM_EXTRA_LIBS): Add -lm.

2015-06-28  Nick Clifton  <nickc@redhat.com>

	* Makefile.in (SIM_EXTRA_CFLAGS): Add -lm.
	* armdefs.h (ARMdval, ARMfval): New types.
	(ARM_VFP_reg): New union.
	(struct ARMul_State): Add VFP_Reg and FPSCR fields.
	(VFP_fval, VFP_uword, VFP_sword, VFP_dval, VFP_dword): Accessor
	macros for the new VFP_Reg field.
	* armemu.c (handle_v6_insn): Add code to handle MOVW, MOVT,
	QADD16, QASX, QSAX, QSUB16, QADD8, QSUB8, UADD16, USUB16, UADD8,
	USUB8, SEL, REV, REV16, RBIT, BFC, BFI, SBFX and UBFX
	instructions.
	(handle_VFP_move): New function.
	(ARMul_Emulate16): Add checks for newly supported v6
	instructions.  Add support for VMRS, VMOV and MRC instructions.
	(Multiply64): Allow nRdHi == nRm and/or nRdLo == nRm when
	operating in v6 mode.
	* armemu.h (t_resolved): Define.
	* armsupp.c: Include math.h.
	(handle_VFP_xfer): New function.  Handles VMOV, VSTM, VSTR, VPUSH,
	VSTM, VLDM and VPOP instructions.
	(ARMul_LDC): Test for co-processor 10 or 11 and pass call to the
	new handle_VFP_xfer function.
	(ARMul_STC): Likewise.
	(handle_VFP_op): New function.  Handles VMLA, VMLS, VNMLA, VNMLS,
	VNMUL, VMUL, VADD, VSUB, VDIV, VMOV, VABS, VNEG, VSQRT, VCMP,
	VCMPE and VCVT instructions.
	(ARMul_CDP): Test for co-processor 10 or 11 and pass call to the
	new handle_VFP_op function.
	* thumbemu.c (tBIT, tBITS, ntBIT, ntBITS): New macros.
	(test_cond): New function.  Tests a condition and returns non-zero
	if the condition has been met.
	(handle_IT_block): New function.
	(in_IT_block): New function.
	(IT_block_allow): New function.
	(ThumbExpandImm): New function.
	(handle_T2_insn): New function.  Handles T2 thumb instructions.
	(handle_v6_thumb_insn): Add next_instr and pc parameters.
	(ARMul_ThumbDecode): Add support for IT blocks.  Add support for
	v6 instructions.
	* wrapper.c (sim_create_inferior): Detect a thumb address and call
	SETT appropriately.

2015-06-23  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2015-06-23  Mike Frysinger  <vapier@gentoo.org>

	* armdefs.h: Always include stdint.h.
	[!__STDC__]: Delete.
	[!HAVE_STDINT_H]: Delete.
	* dbg_hif.h [!__STDC__]: Delete.

2015-06-12  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2015-06-12  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2015-04-18  Mike Frysinger  <vapier@gentoo.org>

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

2015-04-18  Mike Frysinger  <vapier@gentoo.org>

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

2015-04-17  Mike Frysinger  <vapier@gentoo.org>

	* sim-main.h (CIA_GET, CIA_SET): Delete.

2015-04-17  Mike Frysinger  <vapier@gentoo.org>

	* wrapper.c (arm_pc_get, arm_pc_set): New functions.
	(sim_open): Declare new local var i.  Call CPU_PC_FETCH &
	CPU_PC_STORE for all cpus.

2015-04-15  Mike Frysinger  <vapier@gentoo.org>

	* Makefile.in (SIM_OBJS): Delete sim-cpu.o.
	* sim-main.h (STATE_CPU): Delete.

2015-04-13  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2015-04-12  Mike Frysinger  <vapier@gentoo.org>

	* Makefile.in (SIM_OBJS): Move wrapper.o to the start of the list.

2015-04-06  Mike Frysinger  <vapier@gentoo.org>

	* Makefile.in (SIM_OBJS): Delete sim-engine.o.

2015-04-01  Mike Frysinger  <vapier@gentoo.org>

	* Makefile.in (armos.o, armcopro.o, maverick.o, iwmmxt.o, arminit.o,
	armrdi.o, armsupp.o, thumbemu.o, bag.o, wrapper.o): Delete rules.
	* tconfig.h: Delete file.

2015-03-31  Mike Frysinger  <vapier@gentoo.org>

	* config.in, configure: Regenerate.

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

	* Makefile.in (SIM_RUN_OBJS): Delete.
	(SIM_EXTRA_CFLAGS): Delete -DSIM_TARGET_SWITCHES and
	-DSIM_USE_DEPRECATED_RUN_FRONTEND.
	(SIM_OBJS): Change to $(SIM_NEW_COMMON_OBJS).
	* sim-main.h: New file.
	* wrapper.c: Delete armdefs.h, sim-utils.h, and run-sim.h includes.
	Add sim-main.h and sim-options.h includes.
	(sim_callback, mem_size, trace): Add TODO comments.
	(state): Delete static and add TODO comment.
	(sim_kind, myname, big_endian): Delete.
	(init): Change big_endian to CURRENT_TARGET_BYTE_ORDER check.
	(sim_size, sim_trace, sim_info, sim_target_display_usage, sim_load,
	sim_do_command, sim_set_callbacks, sim_complete_command): Delete.
	(sim_target_parse_command_line): Mark static.
	(free_state): New function.
	(sim_open): Rewrite to use new common logic.
	(sim_close): Delete body.

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

	* Makefile.in (SIM_EXTRA_CFLAGS): Delete -DNEED_UI_LOOP_HOOK.
	* interp.c [NEED_UI_LOOP_HOOK] (UI_LOOP_POLL_INTERVAL,
	ui_loop_hook_counter, deprecated_ui_loop_hook): Delete.
	(sim_resume) [NEED_UI_LOOP_HOOK]: Delete ui code.

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

	* armemu.c [MODE32] (handle_v6_insn): Move definition.
	(ARMul_Emulate26): Initialize do_int after label target.
	* armemu.h (UNDEF_Test, UNDEF_Shift, UNDEF_MSRPC, UNDEF_MRSPC,
	UNDEF_MULPCDest, UNDEF_MULDestEQOp1, UNDEF_LSRBPC,
	UNDEF_LSRBaseEQOffWb, UNDEF_LSRBaseEQDestWb, UNDEF_LSRPCBaseWb,
	UNDEF_LSRPCOffWb, UNDEF_LSMNoRegs, UNDEF_LSMPCBase,
	UNDEF_LSMUserBankWb, UNDEF_LSMBaseInListWb, UNDEF_SWPPC,
	UNDEF_CoProHS, UNDEF_MCRPC, UNDEF_LSCPCBaseWb,
	UNDEF_UndefNotBounced, UNDEF_ShortInt, UNDEF_IllegalMode,
	UNDEF_Prog32SigChange, UNDEF_Data32SigChange): Define to while(0).
	* armsupp.c (ARMul_Align): Convert old style prototype.
	* bag.c (addtolist, killwholelist): Mark static.
	(BAG_newbag): Convert old style prototype.
	* maverick.c (mv_compute_host_endianness): Delete.
	* wrapper.c (verbosity, sim_set_verbose): Delete.
	(init): Set state->verbose to 0.

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

	* configure.ac: Call SIM_AC_OPTION_ENDIAN, SIM_AC_OPTION_ALIGNMENT,
	SIM_AC_OPTION_HOSTENDIAN, SIM_AC_OPTION_ENVIRONMENT,
	SIM_AC_OPTION_INLINE, and SIM_AC_OPTION_WARNINGS.
	* config.in, configure: Regenerate.

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

	* Makefile.in (COPRO): Delete.
	(SIM_OBJS): Expand COPRO.
	* configure.ac: Deletd stdint.h check.
	(COPRO): Delete.
	* configure: Regenerate.

2015-03-16  Mike Frysinger  <vapier@gentoo.org>

	* config.in, configure: Regenerate.
	* tconfig.in: Rename file ...
	* tconfig.h: ... here.

2015-03-14  Mike Frysinger  <vapier@gentoo.org>

	* Makefile.in (SIM_EXTRA_CFLAGS): Add
	-DSIM_USE_DEPRECATED_RUN_FRONTEND.
	(SIM_RUN_OBJS): Set to run.o.

2015-03-14  Mike Frysinger  <vapier@gentoo.org>

	* configure.ac (AC_CHECK_HEADERS): Delete unistd.h.
	* aclocal.m4, configure: Regenerate.

2014-08-19  Alan Modra  <amodra@gmail.com>

	* configure: Regenerate.

2014-08-15  Roland McGrath  <mcgrathr@google.com>

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

2014-03-18  Nick Clifton  <nickc@redhat.com>

	* wrapper.c: Convert function declarations to ISO C format.
	(sim_open): Delete code for handling t,d and z command line
	options.

2014-03-14  Nick Clifton  <nickc@redhat.com>

	* wrapper.c (op_print): New function.
	(sim_dis_read): New function.
	(print_insn): New function - disassembles the given instruction.
	(sim_trace): Note that tracing is now allowed.
	(sim_create_inferior): Default to emulating v6.
	Initialise the disassembler machinery.
	(sim_target_parse_command_line): Add support for -t -d and -z
	options.
	(sim_target_display_usage): Note existence of -d and -z options.
	(sim_open): Parse -t -d and -z options.
	* armemu.h: Add exports of trace, disas and trace_funcs.
	Add prototype for print_insn.
	* armemu.c (ARMul_Emulate26): Add tracing code.
	Delete unused variables.
	* thumbemu (handle_v6_thumb_insn): Delete unused variable Rd.
	Move Rm variable into switch cases.
	Add tracing code.

	* armcopro.c (XScale_cp15_init): Add a return value.
	(XScale_cp13_init): Likewise.
	(XScale_cp14_init): Likewise.
	(XScale_cp15_LDC): Delete unused function.
	(XScale_cp15_STC): Likewise.
	* maverick.c: Delete comment inside comment.
	(DSPInit): Delete unused function.
	(DSPMCR4): Fix compile time warning about missing parenthesis.
	(DSPMCR5): Likewise.
	(DSPCDP6): Delete unused variable opcode2.

2014-03-14  David McQuillan  <dmcq@tao-group.com>

	PR sim/8388
	* armemu.c (WriteR15Load): New function.  Determines if the state
	can be changed upon a write to R15.
	(LoadMult): Use WriteR15Load.
	* armemu.h (WRITEDESTB): Use WriteR15Load.

2014-03-10  Mike Frysinger  <vapier@gentoo.org>

	* wrapper.c (sim_do_command): Add const to cmd.

2014-03-05  Mike Frysinger  <vapier@gentoo.org>

	* wrapper.c (sim_load): Add const to prog.

2013-09-23  Alan Modra  <amodra@gmail.com>

	* configure: Regenerate.

2013-06-03  Mike Frysinger  <vapier@gentoo.org>

	* aclocal.m4, configure: Regenerate.

2013-05-07  Jayant Sonar  <jayant.sonar@kpitcummins.com>
	    Kaushik Phatak <Kaushik.Phatak@kpitcummins.com>

	* armemu.c (ARMul_Emulate32): Emulate instructions MOVW and MOVT.

2012-12-19  Joel Brobecker  <brobecker@adacore.com>

	* COPYING: Update to GPL version 3.

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

	PR sim/14540
	* armsupp.c (ARMul_MRC): Return 0 if access to the MRC instruction
	is denied.

2012-08-01  Kevin Buettner  <kevinb@redhat.com>

	* wrapper.c (libiberty.h): Include.
	(sim_store_register, sim_fetch_register): On success, return
	length, instead of -1.

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

	* config.in, configure: Regenerate.

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

	* wrapper.c (sim_create_inferior): Treat WMMX2 binaries as iWMMXt
	binaries (for now).

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

	PR gdb/7205

	Replace TARGET_SIGNAL_ with GDB_SIGNAL_ throughout.

2012-05-18  Nick Clifton  <nickc@redhat.com>

	PR 14072
	* wrapper.c: Include config.h before system header files.

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-01  Nick Clifton  <nickc@redhat.com>

	PR sim/12737
	* iwmmxt.c (WCMPGT): Sign extend 32-bit values before performing a
	signed compare.
	(WMAC): Extend computed result before adding to result register.
	(WRSA): Sign extend 32-bit values before shifting.

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

	* wrapper.c (sim_complete_command): New stub function.

2010-05-26  Ozkan Sezer  <sezeroz@gmail.com>

	* communicate.c (MYread_char): Check error return from accept() call
	by its equality to -1 not by it being negative.
	(MYread_charwait): Likewise.
	* main.c (main): Likewise for both socket() and accept() calls.

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

	* wrapper.c (sim_write): Add const to buffer arg.

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-11-24  Joel Sherrill <joel.sherrill@oarcorp.com>

    * arminit.c, iwmmxt.c: Include <string.h> to
    eliminate warning.
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.
	* wrapper.c (sim_target_display_usage): Add help parameter.

2007-02-27  Mark Mitchell  <mark@codesourcery.com>

	* armos.c (SWIflen): Do not treate file descriptor zero as
	special.

2007-02-15  Nick Clifton  <nickc@redhat.com>

	* armemu.c (handle_v6_insn): Fix typo in sign extension test of
	the sext and sxtah instructions.

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

	Reported by timeless@gmail.com:
	* wrapper.c (sim_target_parse_arg_array): Do not return void value.

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.

2006-03-07  Paul Brook  <paul@codesourcery.com>

	* elfos.c (ARMul_OSHandleSWI): Call correct function for IsTTY.

2006-02-01  Shaun Jackman  <sjackman@gmail.com>

	* armos.c (ARMul_OSHandleSWI): Handle the RedBoot system
	call meminfo. Return ENOSYS for unhandled RedBoot syscalls.

2005-11-23  Mark Mitchell  <mark@codesourcery.com>

	* wrapper.c (gdb/signals.h): Include it.
	(SIGTRAP): Don't define.
	(SIGBUS): Likewise.
	(sim_stop_reason): Use TARGET_SIGNAL_* instead of SIG*.

2005-11-16  Shaun Jackman  <sjackman@gmail.com>

	* armos.c: Include limits.h
	(unlink): Remove this macro. It is unused in this file and
	conflicts with sim_callback->unlink.
	(PATH_MAX): Define as 1024 if not already defined.
	(ReadFileName): New function.
	(SWIopen): Fix a potential buffer overflow.
	(SWIremove): New function.
	(SWIrename): Ditto.
	(ARMul_OSHandleSWI): Handle the RDP calls SWI_IsTTY,
	SWI_Remove, and SWI_Rename, as well as the RDI calls
	AngelSWI_Reason_IsTTY, AngelSWI_Reason_Remove, and
	AngelSWI_Reason_Rename.

2005-09-19  Paul Brook  <paul@codesourcery.com>

	* armdefs.h: Define ARMsword and ARMsdword. Use stdint.h when
	available.
	* armemu.c: Use them.
	* armvirt.c (ARMul_MemoryInit): Use correct type for size.
	* configure.ac: Check for stdint.h.
	* config.in: Regenerate.
	* configure: Regenerate.

2005-05-24  Nick Clifton  <nickc@redhat.com>

	* thumbemu.c (handle_v6_thumb_insn): New function.
	(ARMul_ThumbDecode): Call handle_v6_thumb_insn() when an undefined
	instruction binary is encountered.

2005-05-12  Nick Clifton  <nickc@redhat.com>

	* Update the address and phone number of the FSF organization in
	the GPL notices in the following files:
	COPYING, Makefile.in, armcopro.c, armdefs.h, armemu.c,
	armemu.h, armfpe.h, arminit.c, armopts.h, armos.c, armos.h,
	armrdi.c, armsupp.c, armvirt.c, bag.c, bag.h, communicate.c,
	communicate.h, dbg_conf.h, dbg_cp.h, dbg_hif.h, dbg_rdi.h,
	gdbhost.c, gdbhost.h, iwmmxt.c, iwmmxt.h, kid.c, main.c,
	maverick.c, parent.c, thumbemu.c, wrapper.c

2005-04-20  Nick Clifton  <nickc@redhat.com>

	* armemu.c (handle_v6_insn): New function - emulate a few of the
	v6 instructions - the ones now generated by GCC.
	(ARMulEmulate32): Call handle_v6_insn when a possible v6 insn is
	found.
	* armdefs.h (struct ARMul_State): Add new field: is_v6.
	(ARM_v6_Prop): Define.
	* arminit.c (ARMul_NewState): Initialise the v6 flag.
	(ARMul_SelectProcessor): Determine if the v6 flag should be
	set.
	* wrapper.c (sim_create_inferior): For unknown architectures,
	default to allowing the v6 instructions.

2005-04-18  Nick Clifton  <nickc@redhat.com>

	* iwmmxt.c (WMAC, WMADD): Move casts from the LHS of an assignment
	operator to the RHS.
	(WSLL, WSRA, WSRL, WUNPCKEH, WUNPACKEL): Use ULL suffix to
	indicate an unsigned long long constant.

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-06-28  Andrew Cagney  <cagney@gnu.org>

	* armemu.c: Rename ui_loop_hook to deprecated_ui_loop_hook.

2003-12-29  Mark Mitchell  <mark@codesourcery.com>

	* armos.c (fcntl.h): Do not include it.
	(O_RDONLY): Do not define.
	(O_WRONLY): Likewise.
	(O_RDWR): Likewise.
	(targ-vals.h): Include it.
	(translate_open_mode): Use TARGET_O_* instead of O_*.
	(SWIopen): Likewise.
	* Makefile.in (armos.o): Depend on targ-vals.h.

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

	* armvirt.c (GetWord): Only call XScale_check_memacc if in XScale
	mode.
	(PutWord): Likewise.

2003-03-30  Nick Clifton  <nickc@redhat.com>

	* configure.in (CON_FLAGS): Remove.
	(COPRO): Unconditionally include iwmmxt.o.
	* configure: Regenerate.
	* Makefile.in (CON_FLAGS): Remove.
	* armcopro.c: Remove use of __IWMMXT__ flag.
	* wrapper.c: Likewise.
	* armemu.c: Likewise.
	Add explanatory comment for suppressed code.

2003-03-27  Nick Clifton  <nickc@redhat.com>

	* armos.c (ARMul_OsHandleSWI): Catch SWIs for unhandled vectors.

2003-03-27  Nick Clifton  <nickc@redhat.com>

	* configure.in: (CON_FLAGS): Define and intialise.
	(COPRO): Add iwmmxt.o if configuring for XScale.
	* configure: Regenerate.
	* Makefile.in (iwmmxt.o): Add rule to build.
	(COM_FLAGS): Define.
	(ALL_FLAGS): Add CON_FLAGS.
	* armcopro.c (ARMul_CoProInit): Initialise iWMMXt coprocessors.
	* armdefs.h (struct ARMul_State): Add 'is_iWMMXt' field.
	(ARM_iWMMXt_Prop): Define.
	* armemu.c (ARMul_Emulate16): Intercept iWMMXt instructions and
	pass to coprocessor.
	* arminit.c (ARMul_NewState): Initialise 'is_iWMMXt'.
	(ARMul_Abort): Catch branches through uninitialised vectors.
	* armos.c (softevtorcode): Update comment.
	(ARMul_OsInit): Use ARMUndefinedInstrV.
	* wrapper.c (sim_create_inferior): Handle iWMMXt processor type.
	(sim_store_register): Handle iWMMXt registers.
	(sim_fetch_register): Handle iWMMXt registers.
	* iwmmxt.h: New file. Exported iWMMXt coprocessor emulator
	functions.
	* iwmmxt.c: New file: iWMMXt emulator.

2003-03-20  Nick Clifton  <nickc@redhat.com>

	* Contribute support for Cirrus Maverick ARM co-processor,
	written by Aldy Hernandez  <aldyh@redhat.com> and
	Andrew Cagney  <cagney@redhat.com>:

	* maverick.c: New file: Support for Maverick floating point
	co-processor.
	* Makefile.in: Add maverick.o target.
	* configure.in (COPRO): Add maverick.o.
	* configure: Regenerate.
	* armcopro.c (ARMul_CoProInit): Only initialise co-processors
	available on target processor.  Add code to initialse Maverick
	co-processor support code.
	* armdefs.h (ARMul_state): Add is_ep9312 field.
	(ARM_ep9312_Prop): Define.
	* armemu.h: Add prototypes for Maverick co-processor
	functions.
	* arminit.c (ARMul_SelectProcessor): Initialise the
	co-processor support once the chip has been selected.
	* wrapper.c: Add support for Maverick co-processor.
	(init): Do not call ARMul_CoProInit.  Delays this until the
	chip has been selected.

2003-03-02  Nick Clifton  <nickc@redhat.com>

	* armos.c (SWIWrite0): Catch big-endian bug when printing
	characters.

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

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

2003-01-10  Ben Elliston  <bje@redhat.com>

	* README.Cygnus: Rename from this ..
	* README: .. to this.

2002-09-27  Andrew Cagney  <ac131313@redhat.com>

	* wrapper.c (sim_open): Add support for -m<mem-size>.
	(mem_size): Reduce to 2MB.
	Fix PR gdb/433.

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

	* armos.c (ARMul_OSHandleSWI): Catch and ignore SWIs of -1, they
	can be caused by an interrupted system call being resumed by GDB.

2002-07-05  Nick Clifton  <nickc@cambridge.redhat.com>

	* armemu.c (ARMul_Emulate32): Add more tests for valid MIA, MIAPH
	and MIAxy instructions.

2002-06-21  Nick Clifton  <nickc@cambridge.redhat.com>

	* armos.h (ADP_Stopped_RunTimeError): Set correct value.

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

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

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

	* Makefile.in: Update copyright.
	(wrapper.o): Specify dependencies.
	* wrapper.c: Include "gdb/sim-arm.h".
	(sim_store_register, sim_fetch_register): Rewrite using `enum
	arm_sim_regs' and a switch.

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

	* wrapper.c: Include "gdb/callback.h" and "gdb/remote-sim.h".
	* armos.c: Include "gdb/callback.h".

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

	* armcopro.c (XScale_check_memacc): Set the FSR and FAR registers
	if a Data Abort is detected.

2002-05-27  Nick Clifton  <nickc@cambridge.redhat.com>

	* armvirt.c (GetWord): Only perform access checks if 'check'
	is set.
	(PutWord): Likewise.
	* wrapper.c (sim_create_inferior): Report unknown machine
	numbers.
	* thumbemu.c (ARMul_ThumbDecode, Case 31): Do not set LR to pc +
	2, it has already been advanced.

2002-05-23  Nick Clifton  <nickc@cambridge.redhat.com>

	* thumbemu.c (ARMul_ThumbDecode): When decoding a BLX(1)
	instruction do not add in the second bit of the base address -
	this has already been accounted for.

2002-05-21  Nick Clifton  <nickc@cambridge.redhat.com>

	* armcopro.c (check_cp13_access): Allow access to register 1 when
	CRm is 1.
	(write_cp13_reg): Allow bit 0 of reg 1 of CRm 1 to be written to.

2002-05-17  Nick Clifton  <nickc@cambridge.redhat.com>

	* Makefile.in (SIM_TARGET_SWITCHES): Define.
	* armos.c (swi_mask): Define.  Initialise to supporting all
	SWI emulations.
	(ARMul_OSInit): For XScale targets, only support the ANGEL
	SWI interface.  (This is at the request if Intel).
	(ARMul_OSHandleSWI): Examine swi_mask to see if a particular
	SWI call should be emulated.
	Do not fall through from AngelSWI_Reason_WriteC.
	Propagate exit code from RedBoot Exit SWI.
	* rdi-dgb.h (swi_mask): Prototype.
	(SWI_MASK_DEMON, SWI_MASK_ANGEL, SWI_MASK_REDBOOT): Define.
	* wrapper.c (sim_target_parse_command_line): New function.
	Look for and handle --swi-support switch.
	(sim_target_parse_arg_array): New function.  Process an argv
	array for parsing by sim_target_parse_command_line.
	(sim_target_display_usage): New function.  Describe syntax of
	--swi-suppoort switch.
	(sim_open): Add call to sim_target_parse_arg_array).

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

	* armos.c (ARMul_OSHandleSWI): Support the RedBoot SWI in ARM
	mode and some of its system calls.

2002-03-17  Anthony Green  <green@redhat.com>

	* wrapper.c (mem_size): Increase the default target memory to 8MB.

2002-02-21  Keith Seitz  <keiths@redhat.com>

	* armos.c (SWIWrite0): Use generic host_callback mechanism
	for supported OS functions "open", "close", "write", etc.
	(SWIopen): Likewise.
	(SWIread): Likewise.
	(SWIwrite): Likewise.
	(SWIflen): Likewise.
	(ARMul_OSHandleSWI): Likewise.

2002-02-05  Nick Clifton  <nickc@cambridge.redhat.com>

	* wrapper.c (sim_create_inferior): Modify previous patch so that
	it is only triggered for COFF format executables.

2002-02-04  Nick Clifton  <nickc@cambridge.redhat.com>

	* wrapper.c (sin_create_inferior): If a v5 architecture is
	detected, assume it might be an XScale binary, since there is no
	way to distinguish between the two in the COFF file format.

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

	* arminit.c (ARMul_Abort): Fix parameters passed to CPRead[13].
	* armemu.c (ARMul_Emulate32): Fix parameters passed to CPRead[13]
	and CPRead[14].
	Fix formatting.  Improve layout.
	* armemu.h: Fix formatting.  Improve layout.

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

	* wrapper.c (sim_fetch_register): If fetching more than 4 bytes
	return zeroes in the other words.
	General formatting tidy ups.

2001-11-16  Ben Harris  <bjh21@netbsd.org>

	* Makefile.in (armemu32.o): Replace $< with autoconf recommended
	$(srcdir)/....
	(armemu26.o): Ditto.

2001-10-18  Nick Clifton  <nickc@cambridge.redhat.com>

	* armemu.h (CP_ACCESS_ALLOWED): New macro.
	Fix formatting.
	* armcopro.c (read_cp14_reg): Make static.
	(write_cp14_reg): Make static.
	(check_cp13_access): Use CP_ACCESS_ALLOWED macro.
	Fix formatting.
	* armsupp.c (ARMul_LDC): Check CP_ACCESS_ALLOWED.
	(ARMul_STC): Check CP_ACCESS_ALLOWED.
	(ARMul_MCR): Check CP_ACCESS_ALLOWED.
	(ARMul_MRC): Check CP_ACCESS_ALLOWED.
	(ARMul_CDP): Check CP_ACCESS_ALLOWED.
	Fix formatting.
	* armemu.c (MCRR): Check CP_ACCESS_ALLOWED.  Test Rd and Rn not
	equal to 15.
	(MRRC): Check CP_ACCESS_ALLOWED.  Test Rd and Rn not equal to 15.
	Fix formatting.

2001-05-11  Nick Clifton  <nickc@cambridge.redhat.com>

	* armemu.c (ARMul_Emulate32): Fix handling of XScale LDRD and STRD
	instructions with post indexed addressing modes.

2001-05-08  Jens-Christian Lache  <lache@tu-harburg.de>

	* armsupp.c (ARMul_FixCPSR): Check Mode not Bank in order to
	determine rocesor mode.

2001-04-18  matthew green  <mrg@redhat.com>

	* armcopro.c (write_cp15_reg): Set CHANGEMODE if endianness changes.
	(read_cp15_reg): Make non-static.
	(XScale_cp15_LDC): Update for write_cp15_reg() change.
	(XScale_cp15_MCR): Likewise.
	(XScale_cp15_write_reg): Likewise.
	(XScale_check_memacc): New function. Check for breakpoints being
	activated by memory accesses.  Does not support the Branch Target
	Buffer.
	(XScale_set_fsr_far): New function. Set FSR and FAR for XScale.
	(XScale_debug_moe): New function. Set the debug Method Of Entry,
	if configured.
	(write_cp14_reg): Reset count counter if requested.
	* armdefs.h (struct ARMul_State): New members `LastTime' and
	`CP14R0_CCD' used for the timer/counters.
	(ARMul_CP13_R0_FIQ, ARMul_CP13_R0_IRQ, ARMul_CP13_R8_PMUS,
	ARMul_CP14_R0_ENABLE, ARMul_CP14_R0_CLKRST, ARMul_CP14_R0_CCD,
	ARMul_CP14_R0_INTEN0, ARMul_CP14_R0_INTEN1, ARMul_CP14_R0_INTEN2,
	ARMul_CP14_R0_FLAG0, ARMul_CP14_R0_FLAG1, ARMul_CP14_R0_FLAG2,
	ARMul_CP14_R10_MOE_IB, ARMul_CP14_R10_MOE_DB, ARMul_CP14_R10_MOE_BT,
	ARMul_CP15_R1_ENDIAN, ARMul_CP15_R1_ALIGN, ARMul_CP15_R5_X,
	ARMul_CP15_R5_ST_ALIGN, ARMul_CP15_R5_IMPRE, ARMul_CP15_R5_MMU_EXCPT,
	ARMul_CP15_DBCON_M, ARMul_CP15_DBCON_E1, ARMul_CP15_DBCON_E0): New
	defines for XScale registers.
	(XScale_check_memacc, XScale_set_fsr_far, XScale_debug_moe): Prototype.
	(ARMul_Emulate32, ARMul_Emulate26): Clean up function definition.
	(ARMul_Emulate32): Handle the clock counter and hardware instruction
	breakpoints.  Call XScale_set_fsr_far() for software breakpoints and
	software interrupts.
	(LoadMult): Call XScale_set_fsr_far() for data aborts.
	(LoadSMult): Likewise.
	(StoreMult): Likewise.
	(StoreSMult): Likewise.
	* armemu.h (write_cp15_reg): Update prototype.
	* arminit.c (ARMul_NewState): Initialise CP14R0_CCD and LastTime.
	(ARMul_Abort): If XScale, check for FIQ and IRQ being enabled in CP13
	register 0.
	* armvirt.c (GetWord): Call XScale_check_memacc().
	(PutWord): Likewise.

2001-03-20  Nick Clifton  <nickc@redhat.com>

	* armvirt.c (ARMul_ReLoadInstr): Do not enable alignment checking
	when loading unaligned thumb instructions.

2001-03-06  Nick Clifton  <nickc@redhat.com>

	* thumbemu.c (ARMul_ThumbDecode): Delete label bo_blx2.
	Compute destination address of BLX(1) instruction by
	taking bit 1 from PC and not from bit 0 of the offset.

2001-02-27  Nick Clifton  <nickc@redhat.com>

	* armvirt.c (GetWord): Add new parameter - check - to enable or
	disable the alignment checking.
	(PutWord):  Add new parameter - check - to enable or disable the
	alignment checking.
	(ARMul_ReLoadInstr): Pass extra parameter to GetWord.
	(ARMul_ReadWord): Pass extra parameter to GetWord.
	(ARMul_WriteWord): Pass extra parameter to PutWord.
	(ARMul_StoreHalfWord): Pass extra parameter to PutWord.
	(ARMul_WriteByte): Pass extra parameter to GetWord.
	(ARMul_SwapWord): Pass extra parameter to PutWord.
	(ARMul_SafeReadByte): New Function: Read a byte but do not abort.
	(ARMul_SafeWriteByte): New Function: Write a byte but do not abort.

	* armdefs.h: Add prototypes for ARMul_SafeReadByte and
	ARMul_SafeWriteByte.

	* wrapper.c (sim_write): Use ARMul_SafeWriteByte.
	(sim_read): Use ARMul_SafeReadByte.

	* armos.c (in_SWI_handler): Remove.
	(SWIWrite0): Use ARMul_SafeReadByte.
	(WriteCommandLineTo): Use ARMul_SafeWriteByte.
	(SWIopen): Use ARMul_SafeReadByte.
	(SWIread): Use ARMul_SafeWriteByte.
	(SWIwrite): Use ARMul_SafeReadByte.
	(ARMul_OSHandleSWI): Remove use of is_SWI_handler.
	(ARMul_OSException): Remove use of is_SWI_handler.

2001-02-16  Nick Clifton  <nickc@redhat.com>

	* armemu.c: Remove Prefetch abort for breakpoints.  Instead set
	the state to RESUME.

2001-02-14  Nick Clifton  <nickc@redhat.com>

	* armemu.c: Add code to preserve processor mode when a prefetch
	abort is signalled after processing a breakpoint.

	* wrapper.c (sim_create_inferior): Reset processor into ARM mode
	for any machine type except the early ARMs.

2001-02-13  Nick Clifton  <nickc@redhat.com>

	* armos.c (in_SWI_handler): New static variable.
	(ARMul_OSHandleSWI): Set in_SWI_handler whilst emulating a SWI.
	(ARMul_OSException): Ignore exceptions generated whilst emulating
	a SWI.

2001-02-12  Nick Clifton  <nickc@redhat.com>

	* armemu.h (NEGBRANCH): Fix defintion.

2001-02-01  Nick Clifton  <nickc@redhat.com>

	* armemu.c (LoadSMult): Update base address register after
	restoring register bank.
	(StoreMult): Update base address register after restoring register
	bank.

2001-01-31  Nick Clifton  <nickc@redhat.com>

	* armvirt.c (PutWord): Detect installation of SWI vector.
	(SWI_vector_installed): Define.
	* armos.c (ARMul_OsInit): Reset SWI_vector_installed.
	* armos.h (SWI_vector_installed): Declare.
	* wrapper.c (SWI_vector_installed): Remove definition.
	(sim_write): Remove check of SWI vector	installation

2000-12-18  Nick Clifton  <nickc@redhat.com>

	* armemu.c (ARMul_Emulate26): Fix test for StoreDouble
	instruction.

2000-12-10  Nick Clifton  <nickc@redhat.com>

	* armos.c (ARMul_OSHandleSWI): Add 0x91 as an FPE SWI.

2000-12-07  Nick Clifton  <nickc@redhat.com>

	* armemu.c (ARMul_Emulate26): Detect double word load and
	store instructions and call emulation routines.
	(Handle_Load_Double): Emulate a double word load instruction.
	(Handle_Store_Double): Emulate a double word store
	instruction.

2000-12-03  Nick Clifton  <nickc@redhat.com>

	* armos.c: Fix formatting.
	(ARMul_OSHandleSWI): Suppress support of DEMON SWIs when in xscale
	mode.

2000-11-29  Nick Clifton  <nickc@redhat.com>

	* armdefs.h (State): Add 'v5e' and 'xscale' fields.
	(ARM_v5e_Prop): Define.
	(ARM_XScale_Prop): Define.

	* wrapper.c (sim_create_inferior): Select processor based on
	machine number.
	(SWI_vector_installed): New boolean.  Set to true if the SWI
	vector address is written to by the executable.

	* arminit.c (ARMul_NewState): Switch default to 32 bit mode.
	(ARMul_SelectProcessor): Initialise v5e and xscale signals.
	(ARMul_Abort): Fix calculation of LR address.

	* armos.c (ARMul_OSHandleSWI): If a SWI vector has been installed
	and a SWI is not handled by the simulator, pass the SWI off to the
	vector, otherwise issue a warning message and continue.

	* armsupp.c (ARMul_CPSRAltered): Set S bit aswell.

	* thumbemu.c: Add v5 instruction simulation.
	* armemu.c: Add v5, XScale and El Segundo instruction simulation.

	* armcopro.c: Add XScale co-processor emulation.
	* armemu.h: Add exported XScale co-processor functions.

2000-09-15  Nick Clifton  <nickc@redhat.com>

	* armdefs.h: Rename StrongARM property to v4_ARM and add v5 ARM
	property.  Delete unnecessary processor names.
	(ARM_Strong_Prop): Delete.
	(STRONGARM): Delete.
	(ARM_v4_Prop): Add.
	(ARM_v5_Prop): Add
	(State): Delete is_StrongARM boolean.  Add is_v4 and is_v5
	booleans.

	* armemu.h (BUSUSEDINCPCS): Use is_v4 boolean.
	(BUSUSEDINCPCN): Use is_v4 boolean.

	* arminit.c (ARMul_NewState): Initialise is_v4 and is_v5 fields.
	(ARMul_SelectProcessor): Change second parameter from 'processor'
	to 'properties'.  Set is_v4 and is_v5 booleans in State.

	* armrdi.c: Remove use of ARM processor names.  Replace with ARM
	processor properties.

	* wrapper.c (sim_create_inferior): Choose properties passed to
	ARMul_SelectProcessor based on machine number.

2000-08-14  Nick Clifton  <nickc@redhat.com>

	* armemu.c (LHPOSTDOWN): Compute write back value before
	performing load in case the offset register is overwritten.
	(LHPOSTUP): Ditto.

2000-07-14  Fernando Nasser <fnasser@cygnus.com>

	* wrapper.c (sim_create_inferior): Fix typo in the previous patch.

2000-07-14  Fernando Nasser <fnasser@cygnus.com>

	* wrapper.c (sim_create_inferior): Reset mode to ARM when creating a
	new inferior.

2000-07-04  Alexandre Oliva  <aoliva@redhat.com>

	* armvirt.c (ABORTS): Do not define.

	* armdefs.h (struct ARMul_State): Add is_StrongARM.
	(ARM_Strong_Prop, STRONGARM): Define.
	* arminit.c (ARMul_NewState): Reset is_StrongARM.
	(ARMul_SelectProcessor): Set is_StrongARM.
	* wrapper.c (sim_create_inferior): Use bfd machine type to
	determine processor type to emulate.
	* armemu.h (BUSUSEDINCPCS, BUSUSEDINCPCN): Don't increment PC
	when emulating StrongARM.

	* armemu.c (ARMul_Emulate, t_undefined): Proceed to next insn.

	* armemu.h (INSN_SIZE): New macro.
	(SET_ABORT): Save CPSR in SPSR and set LR.
	* armemu.c (ARMul_Emulate, isize): Set to INSN_SIZE.
	(WriteR15, WriteSR15): Do not discard bit 1 in Thumb mode.
	* arminit.c (ARMul_Abort): Use new SETABORT and INSN_SIZE.

	* armemu.c (LoadSMult): Use WriteR15() to discard the least
	significant bits of PC.

	* armemu.h (WRITEDESTB): New macro.
	* armemu.c (ARMul_Emulate26, bl): Use WriteR15Branch() to
	modify PC.  Moved the existing logic...
	(WriteR15Branch): ... here.  New function.
	(WriteR15, WriteSR15): Drop the two least significant bits.
	(LoadSMult): Use WriteR15Branch() to modify PC.
	(LoadMult): Use WRITEDESTB() instead of WRITEDEST().

	* armemu.h (GETSPSR): Call ARMul_GetSPSR().
	* armsupp.c (ARMul_CPSRAltered): Zero out bits as they're
	extracted from state->Cpsr, but preserve the unused bits.
	(ARMul_GetCPSR): Get bits preserved in state->Cpsr.
	(ARMul_GetSPSR, ARMul_FixCPSR): Use ARMul_GetCPSR() to
	get the full CPSR word.

	* armemu.h (PSR_FBITS, PSR_SBITS, PSR_XBITS, PSR_CBITS): New.
	(SETPSR_F, SETPSR_S, SETPSR_X, SETPSR_C): New macros.
	(SETPSR, SET_INTMODE, SETCC): Removed.
	* armsupp.c (ARMul_FixCPSR, ARMul_FixSPSR): Do not test bit
	mask.  Use SETPSR_* to modify PSR.
	(ARMul_SetCPSR): Load all bits from value.
	* armemu.c (ARMul_Emulate, msr): Do not test bit mask.

	* armemu.c (ARMul_Emulate): Compute writeback value before
	loading, since the offset register may be the destination
	register.

	* armdefs.h (SYSTEMBANK): Define as USERBANK.
	* armsupp.c (ARMul_SwitchMode): Remove SYSTEMBANK cases.

2000-06-22  Alexandre Oliva  <aoliva@cygnus.com>

	* armemu.c (Multiply64): Fix computation of flag N.

	* armemu.c (MultiplyAdd64): Fix computation of flag N.

2000-06-20  Alexandre Oliva  <aoliva@cygnus.com>

	* armemu.h (NEGBRANCH): Do not overwrite the two most significant
	bits of the offset.

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

	* armcopro.c (MMUMCR): Only indicate mode change if a singal has
	really changed.
	(MMUWrite): Only indicate mode change if a singal has really
	changed.

	* armdefs.h (SYSTEMMODE): Define.
	(BANK_CAN_ACEESS_SPSR): Define.

	* armemu.c (ARM_Emulate26): If the mode has changed allow the PC
	to advance before stopping the emulation.

	* arminit.c (ARMul_Reset): Ensure Mode field of State is set
	correctly.

	* armos.c (ARMul_OSInit): Create a initial stack pointer for
	System mode.

	* armsupp.c (ModeToBank): Remove unused first parameter.
	Add support for System Mode.
	(ARMul_GetSPSR): Use BANK_CAN_ACCESS_SPSR macro.
	(ARMul_SetSPSR): Use BANK_CAN_ACCESS_SPSR macro.
	(ARMul_FixSPSR): Use BANK_CAN_ACCESS_SPSR macro.
	(ARMulSwitchMode): Add support for System Mode.

Wed May 24 14:40:34 2000  Andrew Cagney  <cagney@b1.cygnus.com>

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

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

	* wrapper.c (sim_store_register): Special handling for CPSR
	register.

2000-03-11  Philip Blundell  <philb@gnu.org>

	* armemu.c (LoadSMult, LoadMult): Correct handling of aborts.
	Patch from Allan Skillman <Allan.Skillman@arm.com>.

Wed Mar 22 15:24:21 2000  glen mccready  <gkm@pobox.com>

	* wrapper.c (sim_open,sim_close): Copy into myname, free myname.

2000-02-08  Nick Clifton  <nickc@cygnus.com>

	* wrapper.c: Fix compile time warning messages.
	* armcopro.c: Fix compile time warning messages.
	* armdefs.h: Fix compile time warning messages.
	* armemu.c: Fix compile time warning messages.
	* armemu.h: Fix compile time warning messages.
	* armos.c: Fix compile time warning messages.
	* armsupp.c: Fix compile time warning messages.
	* armvirt.c: Fix compile time warning messages.
	* bag.c: Fix compile time warning messages.

2000-02-02  Bernd Schmidt  <bernds@cygnus.co.uk>

	* *.[ch]: Use indent to make readable.

1999-11-22  Nick Clifton  <nickc@cygnus.com>

	* armos.c (SWIread): Generate an error message if a huge read is
	performed.
	(SWIwrite): Generate an error message if a huge write is
	performed.

1999-10-27  Nick Clifton  <nickc@cygnus.com>

	* thumbemu.c (ARMul_ThumbDecode): Accept 0xbebe as a thumb
	breakpoint.

1999-10-08  Ulrich Drepper  <drepper@cygnus.com>

	* armos.c (SWIopen): Always pass third parameter with 0666 since
	otherwise uninitialized memory gets access if the O_CREAT bit is
	set and so we possibly cannot access the file afterwards.

1999-09-29  Doug Evans  <devans@casey.cygnus.com>

	* armos.c (SWIWrite0): Send output to stdout instead of stderr.
	(ARMul_OSHandleSWI, case SWI_WriteC,AngelSWI_Reason_WriteC): Ditto.

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.

1999-04-06  Keith Seitz  <keiths@cygnus.com>

	* wrapper.c (stop_simulator): New global.
	(sim_stop): Set sim state to STOP and set
	stop_simulator.
	(sim_resume): Reset stop_simulator.
	(sim_stop_reason): If stop_simulator is set, tell gdb
	that the we took SIGINT.
	* armemu.c (ARMul_Emulate26): Don't loop forever. Stop if
	stop_simulator is set.

1999-04-02  Keith Seitz  <keiths@cygnus.com>

	* armemu.c (ARMul_Emulate26): If NEED_UI_LOOP_HOOK, call ui_loop_hook
	whenever the counter expires.
	* Makefile.in (SIM_EXTRA_CFLAGS): Include define NEED_UI_LOOP_HOOK.

1999-03-24  Nick Clifton  <nickc@cygnus.com>

	* armemu.c (ARMul_Emulate26): Handle new breakpoint value.
	* thumbemu.c (ARMul_ThumbDecode): Handle new breakpoint value.

Mon Sep 14 09:00:05 1998  Nick Clifton  <nickc@cygnus.com>

	* wrapper.c (sim_open): Set endianness according to BFD or command
	line switch.

	* tconfig.in: Define SIM_HAVE_BIENDIAN.

Thu Aug 27 11:00:05 1998  Nick Clifton  <nickc@cygnus.com>

	* armemu.c (Multiply64): Test for Rm (rather than Rs) not being
	the same as either RdHi or RdLo.

Thu Jul  2 10:24:35 1998  Nick Clifton  <nickc@cygnus.com>

	* armos.c (ARMul_OSHandleSWI: AngelSWI_Reason_ReportException):
	Set Reg[0] based on reason for for the exception.

Thu Jun  4 15:22:03 1998  Jason Molenda  (crash@bugshack.cygnus.com)

	* armos.c (SWIwrite0): New function.
	(WriteCommandLineTo): New function.
	(SWIopen): New function.
	(SWIread): New function.
	(SWIwrite): New function.
	(SWIflen): New function.
	(ARMul_OSHandleSWI): Call new functions instead of handling
	these here.
	(ARMul_OSHandleSWI): Handle Angel SWIs correctly.
	(*): Reformat spacing to be a bit more GNUly.
	Most code taken from a patch by Anthony Thompson
	(athompso@cambridge.arm.com)

Tue Jun  2 15:22:22 1998  Nick Clifton  <nickc@cygnus.com>

	* armos.h: Add Angel SWI and its reason codes.
	* armos.c (ARMul_OSHandleSWI): Ignore Angel SWIs (for now).

Mon Jun  1 17:14:19 1998  Anthony Thompson (athompso@cambridge.arm.com)

	* armos.c (ARMul_OSHandleSWI::SWI_Open): Handle special case
	of ":tt" to catch stdin in addition to stdout.
	(ARMul_OSHandleSWI::SWI_Seek): Return 0 or 1 to indicate failure
	or success of lseek().

Wed May 20 17:36:25 1998  Nick Clifton  <nickc@cygnus.com>

	* armos.c (ARMul_OSHandleSWI): Special case code to catch attempts
	to open stdout.

Wed Apr 29 15:29:55 1998  Jeff Johnston  <jjohnstn@cygnus.com>

	* armos.c (ARMul_OSHandleSWI): Added code for SWI_Clock,
	SWI_Flen, and SWI_Time.  Also fixed SWI_Seek code to only
	seek from offset 0 and not to use R2 for whence since it is
	not passed as part of the SWI call.

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:20:26 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:20:19 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.

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.

Wed Mar 18 12:38:12 1998  Andrew Cagney  <cagney@b1.cygnus.com>

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

Tue Mar 10 09:26:38 1998  Nick Clifton  <nickc@cygnus.com>

	* armopts.h: Remove definition of LITTLEND - it is not used.

Tue Feb 17 12:35:54 1998  Andrew Cagney  <cagney@b1.cygnus.com>

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

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.

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.

Tue Dec  9 11:30:48 1997  Nick Clifton  <nickc@cygnus.com>

	* Makefile.in: Updated with changes from branch.
	* armdefs.h:   ditto
	* armemu.c:    ditto   these changes
	* armemu.h:    ditto   add support for
	* armos.c:     ditto   the Thumb instruction
	* armsupp.c:   ditto   set and the new v4
	* armvirt.c:   ditto   architecture.
	* wrapper.c:   ditto
	* thumbemu.c:  New file from branch.


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

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

Thu Oct 30 13:54:06 1997  Nick Clifton  <nickc@cygnus.com>

	* armos.c (ARMul_OSHandleSWI): Add support for GetEnv SWI.  Patch
	from Tony Thompson at ARM: athompso@arm.com

	* wrapper.c (sim_create_inferior): Add code to create an execution
	environment.  Patch from Tony Thompson at ARM: athompso@arm.com

Wed Oct 22 14:43:00 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* wrapper.c (sim_load): Pass lma_p and sim_write args to
 	sim_load_file.

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

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

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

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

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

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

Mon Sep 22 11:46:20 1997  Andrew Cagney  <cagney@b1.cygnus.com>

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

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

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

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

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

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

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

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:37:27 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* wrapper.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 15:35:45 1997  Andrew Cagney  <cagney@b1.cygnus.com>

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

Tue May 20 10:13:26 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* wrapper.c (sim_open): Add callback argument.
	(sim_set_callbacks): Drop SIM_DESC argument.

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

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

Fri Apr 18 13:32:23 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* wrapper.c (sim_stop): Stub sim_stop function.

Thu Apr 17 18:33:01 1997  Fred Fish  <fnf@cygnus.com>

	* arminit.c (ARMul_NewState): Preinitialize the state to
	all zero/NULL.

Thu Apr 17 02:39:02 1997  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (SIM_OBJS): Add sim-load.o.
	* wrapper.c (sim_kind,myname): New static locals.
	(sim_open): Set sim_kind, myname.
	(sim_load): Call sim_load_file to do work.  Set start address from bfd.
	(sim_create_inferior): Return SIM_RC.  Delete start_address arg.

Thu Apr 17 11:48:25 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* wrapper.c (sim_trace): Update so that it matches prototype.

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

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

Mon Apr  7 12:01:17 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* Makefile.in (armemu32.o): Replace $< with autoconf recommended
 	$(srcdir)/....
	(armemu26.o): Ditto.

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

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

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

Wed Apr  2 14:50:44 1997  Ian Lance Taylor  <ian@cygnus.com>

	* COPYING: Update FSF address.

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 12:38:56 1997  Doug Evans  <dje@canuck.cygnus.com>

	* wrapper.c (sim_open): Has result now.
	(sim_*): New SIM_DESC argument.

Tue Feb  4 13:22:21 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.

Wed Nov 20 01:05:10 1996  Doug Evans  <dje@canuck.cygnus.com>

	* run.c: Deleted, use one in ../common now.
	* Makefile.in: Delete everything that's been moved to
	../common/Make-common.in.
	(SIM_OBJS): Define.
	* configure.in: Simplify using macros in ../common/aclocal.m4.
	* configure: Regenerated.
	* config.in: New file.
	* armos.c: #include config.h.
	* wrapper.c (mem_size): Value is in bytes now.
	(sim_callback): New global.
	(arm_sim_set_profile{,_size}): Delete.
	(arm_sim_set_mem_size): Rename to sim_size.
	(sim_do_command): Call printf_filtered via callback.
	(sim_set_callbacks): Record callback.

Thu Oct  3 16:10:27 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Makefile.in (mostlyclean): Remove config.log.

Wed Jun 26 12:17:24 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Makefile.in (bindir, libdir, datadir, mandir, infodir, includedir,
	INSTALL_PROGRAM, INSTALL_DATA): Use autoconf-set values.
	(docdir): Removed.
	* configure.in (AC_PREREQ): autoconf 2.5 or higher.
	(AC_PROG_INSTALL): Added.
	* configure: Rebuilt.

Wed Feb 21 12:14:31 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Regenerate with autoconf 2.7.

Fri Dec 15 16:27:30 1995  Ian Lance Taylor  <ian@cygnus.com>

	* run.c (main): Use new bfd_big_endian macro.

Mon Nov 20 17:40:38 1995  Doug Evans  <dje@canuck.cygnus.com>

	* run.c: Include "getopt.h".
	(verbose): Delete.
	(usage): Make static.
	(main): Call arm_sim_set_verbosity.
	Only load sections marked SEC_LOAD.
	* wrapper.c (mem_size, verbosity): New static global.
	(arm_sim_set_mem_size): Renamed from sim_size.	Callers updated.
	(arm_sim_set_profile{,_size}): Renamed from sim_foo.  Callers updated.

Fri Nov 17 19:35:11 1995  Doug Evans  <dje@canuck.cygnus.com>

	* armdefs.h (ARMul_State): New member `verbose'.
	* armrdi.c (ARMul_ConsolePrint): Add missing va_end.
	* run.c (verbose): Make global.
	* wrapper.c (init): Set state->verbose.
	(ARMul_ConsolePrint): Don't print anything if !verbose.

Fri Oct 13 15:30:30 1995  Doug Evans  <dje@canuck.cygnus.com>

	* armos.c: #include dbg_rdi.h.
	(ARMul_OSHandleSWI): Handle SWI_Breakpoint.
	* armos.h (SWI_Breakpoint): Define.
	* wrapper.c: #include armemu.h, dbg_rdi.h.
	(rc): Delete.
	(sim_resume): Use state->EndCondition to record stop state.
	Call FLUSHPIPE before returning.
	(sim_stop_reason): Determine reason from state->EndCondition.

Fri Oct 13 15:04:05 1995  steve chamberlain  <sac@slash.cygnus.com>

	* wrapper.c (sim_set_callbacks): New.

Thu Sep 28 19:45:56 1995  Doug Evans  <dje@deneb.cygnus.com>

	* armos.c (ARMul_OSHandleSWI): Result of read/write calls is
	number of bytes not read/written (or -1).

Wed Sep 20 13:35:54 1995  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (maintainer-clean): New synonym for realclean.

Fri Sep  8 14:27:20 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Remove AC_PROG_INSTALL.
	* configure: Rebuild.
	* Makefile.in (INSTALL): Revert to using install.sh.
	(INSTALL_PROGRAM, INSTALL_DATA): Set to $(INSTALL).
	(INSTALL_XFORM, INSTALL_XFORM1): Restore.
	(mostlyclean): Make the same as clean, not distclean.
	(clean): Remove config.log.
	(install): Don't install in $(tooldir).

Thu Sep  7 12:00:17 1995  Doug Evans  <dje@canuck.cygnus.com>

	(Try to) Update to new bfd autoconf scheme.
	* run.c: Don't include sysdep.h.
	* Makefile.in (INSTALL{,_PROGRAM,_DATA}): Use autoconf computed value.
	(CC, CFLAGS, AR, RANLIB): Likewise.
	(HDEFINES, TDEFINES): Define.
	(CC_FOR_BUILD): Delete.
	(host_makefile_frag): Delete.
	(Makefile): Don't depend on frags.
	* configure.in (sysdep.h): Don't create symlink.
	(host_makefile_frag, frags): Deleted.
	(CC, CFLAGS, AR, RANLIB, INSTALL): Compute values.
	* configure: Regenerated.

Thu Aug  3 10:45:37 1995  Fred Fish  <fnf@cygnus.com>

	* Update all FSF addresses except those in COPYING* files.

Wed Jul  5 16:15:54 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* Makefile.in (clean): Remove run, libsim.a.

 	* Makefile.in, configure.in: converted to autoconf.
	* configure: New file, generated with autconf 2.4.

	* arm.mt: Removed.

Fri Jun 30 16:49:47 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* wrapper.c (sim_do_command): New function.

Tue Jun 13 10:57:32 1995  Steve Chamberlain  <sac@slash.cygnus.com>

	* armos.c (ARMul_OSHandleSWI): New version to work with
	newlib simply.

Thu Jun  8 14:37:14 1995  Steve Chamberlain  <sac@slash.cygnus.com>

	* run.c (main): Grab return value from right register.

Wed May 24 14:37:31 1995  Steve Chamberlain  <sac@slash.cygnus.com>

	* New.


