forked from Imagelibrary/rtems
45 lines
863 B
ArmAsm
45 lines
863 B
ArmAsm
/*
|
|
* asmfault.s
|
|
* Last change : 31. 1.95
|
|
*/
|
|
|
|
.text
|
|
.globl _faultHndlEntry
|
|
|
|
.text
|
|
|
|
_faultHndlEntry :
|
|
/* Raise priority. */
|
|
ldconst 0x1F0000, r4
|
|
ldconst 0xFFFFFFFF, r5
|
|
modpc r4, r4, r5
|
|
/* Where to keep state of the faulted code. */
|
|
ldconst _faultBuffer, r3
|
|
/* Save global registers. */
|
|
stq g0, 64+0(r3)
|
|
stq g4, 64+16(r3)
|
|
stq g8, 64+32(r3)
|
|
stt g12, 64+48(r3)
|
|
/* Faulted code's fp (g15) is our pfp. */
|
|
st pfp, 64+60(r3)
|
|
/* Make sure locals are in stack. */
|
|
flushreg
|
|
/* g3 = & previosFrame[0] */
|
|
andnot 0xF, pfp, g3
|
|
/* Save local registers of faulted procedure. */
|
|
ldq 0(g3), r4
|
|
stq r4, 0(r3)
|
|
ldq 16(g3), r4
|
|
stq r4, 16(r3)
|
|
ldq 32(g3), r4
|
|
stq r4, 32(r3)
|
|
ldq 48(g3), r4
|
|
stq r4, 48(r3)
|
|
/* To handling. */
|
|
mov fp, g0
|
|
mov r3, g1
|
|
callx _faultTblHandler
|
|
/* This point will never be reached ... */
|
|
|
|
/* End of file */
|