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.


