Detect installation of SWI vector by running program as well as loading program.

This commit is contained in:
Nick Clifton 2001-02-01 00:14:40 +00:00
parent 27b82ed26e
commit 88694af3f9
5 changed files with 18 additions and 7 deletions

View File

@ -1,3 +1,12 @@
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

View File

@ -171,6 +171,8 @@ ARMul_OSInit (ARMul_State * state)
for (i = ARMul_ResetV; i <= ARMFIQV; i += 4)
ARMul_WriteWord (state, i, instr); /* write hardware vectors */
SWI_vector_installed = 0;
for (i = ARMul_ResetV; i <= ARMFIQV + 4; i += 4)
{
ARMul_WriteWord (state, ADDRSOFTVECTORS + i, SOFTVECTORCODE + i * 4);
@ -628,8 +630,6 @@ ARMul_OSHandleSWI (ARMul_State * state, ARMword number)
default:
{
/* If there is a SWI vector installed use it. */
extern int SWI_vector_installed;
if (state->is_XScale && saved_number != -1)
number = saved_number;

View File

@ -93,3 +93,5 @@
extern unsigned long fpecode[];
extern unsigned long fpesize;
extern int SWI_vector_installed;

View File

@ -49,6 +49,8 @@ defined to generate aborts. */
#define PAGEBITS 16
#define OFFSETBITS 0xffff
int SWI_vector_installed = FALSE;
/***************************************************************************\
* Get a Word from Virtual Memory, maybe allocating the page *
\***************************************************************************/
@ -111,6 +113,9 @@ PutWord (ARMul_State * state, ARMword address, ARMword data)
*(pagetable + page) = pageptr;
}
if (address == 0x8)
SWI_vector_installed = TRUE;
*(pageptr + offset) = data;
}

View File

@ -114,8 +114,6 @@ ARMul_Debug (ARMul_State * state ATTRIBUTE_UNUSED, ARMword pc ATTRIBUTE_UNUSED,
return 0;
}
int SWI_vector_installed = FALSE;
int
sim_write (sd, addr, buffer, size)
SIM_DESC sd ATTRIBUTE_UNUSED;
@ -127,9 +125,6 @@ sim_write (sd, addr, buffer, size)
init ();
if ((addr <= 0x8) && ((addr + size) >= 0x8))
SWI_vector_installed = TRUE;
for (i = 0; i < size; i++)
ARMul_WriteByte (state, addr + i, buffer[i]);