This is the mail archive of the
gdb-patches@sourceware.cygnus.com
mailing list for the GDB project.
patch for ARM simulator
- To: gdb-patches at sourceware dot cygnus dot com
- Subject: patch for ARM simulator
- From: Philip Blundell <Philip dot Blundell at pobox dot com>
- Date: Sun, 09 Apr 2000 12:06:33 +0100
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)