From c7a7b500fda4d78720600b4f66c26b589496b91d Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Thu, 15 Aug 2002 14:28:55 +0000 Subject: [PATCH] Catch and ignore SWIs of -1, they can be caused by an interrupted system call being resumed by GDB. --- sim/arm/ChangeLog | 5 +++++ sim/arm/armos.c | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/sim/arm/ChangeLog b/sim/arm/ChangeLog index acd66adb5ae..9ce404ed6bd 100644 --- a/sim/arm/ChangeLog +++ b/sim/arm/ChangeLog @@ -1,3 +1,8 @@ +2002-08-15 Nick Clifton + + * 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 * armemu.c (ARMul_Emulate32): Add more tests for valid MIA, MIAPH diff --git a/sim/arm/armos.c b/sim/arm/armos.c index ccf9a576e87..7c0360c51f4 100644 --- a/sim/arm/armos.c +++ b/sim/arm/armos.c @@ -553,6 +553,13 @@ ARMul_OSHandleSWI (ARMul_State * state, ARMword number) /* R0 is a reason code. */ switch (state->Reg[0]) { + case -1: + /* This can happen when a SWI is interrupted (eg receiving a + ctrl-C whilst processing SWIRead()). The SWI will complete + returning -1 in r0 to the caller. If GDB is then used to + resume the system call the reason code will now be -1. */ + return FALSE; + /* Unimplemented reason codes. */ case AngelSWI_Reason_ReadC: case AngelSWI_Reason_IsTTY: @@ -685,6 +692,13 @@ ARMul_OSHandleSWI (ARMul_State * state, ARMword number) /* These are used by the FPE code. */ break; + case -1: + /* This can happen when a SWI is interrupted (eg receiving a + ctrl-C whilst processing SWIRead()). The SWI will complete + returning -1 in r0 to the caller. If GDB is then used to + resume the system call the reason code will now be -1. */ + return FALSE; + case 0x180001: /* RedBoot's Syscall SWI in ARM mode. */ if (swi_mask & SWI_MASK_REDBOOT) { -- 2.30.2