This is the mail archive of the gdb-patches@sourceware.cygnus.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

patch for ARM simulator


This patch was originally posted to the linux-7110 mailing list a few months 
back.  It corrects a couple of bugs relating to aborted LDM instructions in 
the ARM simulator.

p.

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

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

Index: armemu.c
===================================================================
RCS file: /cvs/src/src/sim/arm/armemu.c,v
retrieving revision 1.2
diff -u -p -u -r1.2 armemu.c
--- armemu.c	2000/02/08 20:54:27	1.2
+++ armemu.c	2000/04/09 11:02:24
@@ -3457,7 +3457,7 @@ LoadMult (ARMul_State * state, ARMword i
 	  state->Aborted = ARMul_DataAbortV;
       }
 
-  if (BIT (15))
+  if (BIT (15) && !state->Aborted)
     {				/* PC is in the reg list */
 #ifdef MODE32
       state->Reg[15] = PC;
@@ -3520,13 +3520,13 @@ LoadSMult (ARMul_State * state, ARMword 
       {				/* load this register */
 	address += 4;
 	dest = ARMul_LoadWordS (state, address);
-	if (!state->abortSig || state->Aborted)
+	if (!state->abortSig && !state->Aborted)
 	  state->Reg[temp] = dest;
 	else if (!state->Aborted)
 	  state->Aborted = ARMul_DataAbortV;
       }
 
-  if (BIT (15))
+  if (BIT (15) && !state->Aborted)
     {				/* PC is in the reg list */
 #ifdef MODE32
       if (state->Mode != USER26MODE && state->Mode != USER32MODE)



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]