forked from Imagelibrary/rtems
arm: Do not alter saved PSR in default FIQ handler
Make sure we save the real PSR of the previous context to the exception frame.
This commit is contained in:
@@ -56,6 +56,7 @@ _ARMV4_Exception_undef_default:
|
|||||||
sub sp, #MORE_CONTEXT_SIZE
|
sub sp, #MORE_CONTEXT_SIZE
|
||||||
stmdb sp!, {r0-r12}
|
stmdb sp!, {r0-r12}
|
||||||
mov r4, #1
|
mov r4, #1
|
||||||
|
mov r5, #ARM_PSR_I
|
||||||
|
|
||||||
b save_more_context
|
b save_more_context
|
||||||
|
|
||||||
@@ -65,6 +66,7 @@ _ARMV4_Exception_swi_default:
|
|||||||
sub sp, #MORE_CONTEXT_SIZE
|
sub sp, #MORE_CONTEXT_SIZE
|
||||||
stmdb sp!, {r0-r12}
|
stmdb sp!, {r0-r12}
|
||||||
mov r4, #2
|
mov r4, #2
|
||||||
|
mov r5, #ARM_PSR_I
|
||||||
|
|
||||||
b save_more_context
|
b save_more_context
|
||||||
|
|
||||||
@@ -74,6 +76,7 @@ _ARMV4_Exception_pref_abort_default:
|
|||||||
sub sp, #MORE_CONTEXT_SIZE
|
sub sp, #MORE_CONTEXT_SIZE
|
||||||
stmdb sp!, {r0-r12}
|
stmdb sp!, {r0-r12}
|
||||||
mov r4, #3
|
mov r4, #3
|
||||||
|
mov r5, #ARM_PSR_I
|
||||||
|
|
||||||
b save_more_context
|
b save_more_context
|
||||||
|
|
||||||
@@ -83,6 +86,7 @@ _ARMV4_Exception_data_abort_default:
|
|||||||
sub sp, #MORE_CONTEXT_SIZE
|
sub sp, #MORE_CONTEXT_SIZE
|
||||||
stmdb sp!, {r0-r12}
|
stmdb sp!, {r0-r12}
|
||||||
mov r4, #4
|
mov r4, #4
|
||||||
|
mov r5, #ARM_PSR_I
|
||||||
|
|
||||||
b save_more_context
|
b save_more_context
|
||||||
|
|
||||||
@@ -92,6 +96,7 @@ _ARMV4_Exception_reserved_default:
|
|||||||
sub sp, #MORE_CONTEXT_SIZE
|
sub sp, #MORE_CONTEXT_SIZE
|
||||||
stmdb sp!, {r0-r12}
|
stmdb sp!, {r0-r12}
|
||||||
mov r4, #5
|
mov r4, #5
|
||||||
|
mov r5, #ARM_PSR_I
|
||||||
|
|
||||||
b save_more_context
|
b save_more_context
|
||||||
|
|
||||||
@@ -101,6 +106,7 @@ _ARMV4_Exception_irq_default:
|
|||||||
sub sp, #MORE_CONTEXT_SIZE
|
sub sp, #MORE_CONTEXT_SIZE
|
||||||
stmdb sp!, {r0-r12}
|
stmdb sp!, {r0-r12}
|
||||||
mov r4, #6
|
mov r4, #6
|
||||||
|
mov r5, #ARM_PSR_I
|
||||||
|
|
||||||
b save_more_context
|
b save_more_context
|
||||||
|
|
||||||
@@ -110,14 +116,7 @@ _ARMV4_Exception_fiq_default:
|
|||||||
sub sp, #MORE_CONTEXT_SIZE
|
sub sp, #MORE_CONTEXT_SIZE
|
||||||
stmdb sp!, {r0-r12}
|
stmdb sp!, {r0-r12}
|
||||||
mov r4, #7
|
mov r4, #7
|
||||||
|
mov r5, #(ARM_PSR_I | ARM_PSR_F)
|
||||||
/*
|
|
||||||
* Don't enable FIQs yet. Set the FIQ disable bit in the SPSR
|
|
||||||
* (which we'll load into the CPSR in save_more_context).
|
|
||||||
*/
|
|
||||||
mrs r2, spsr
|
|
||||||
orr r2, #ARM_PSR_F
|
|
||||||
msr spsr_c, r2
|
|
||||||
|
|
||||||
save_more_context:
|
save_more_context:
|
||||||
|
|
||||||
@@ -125,7 +124,7 @@ save_more_context:
|
|||||||
mov r2, lr
|
mov r2, lr
|
||||||
mrs r3, spsr
|
mrs r3, spsr
|
||||||
mrs r7, cpsr
|
mrs r7, cpsr
|
||||||
orr r5, r3, #ARM_PSR_I
|
orr r5, r5, r3
|
||||||
bic r5, #ARM_PSR_T
|
bic r5, #ARM_PSR_T
|
||||||
msr cpsr, r5
|
msr cpsr, r5
|
||||||
mov r0, sp
|
mov r0, sp
|
||||||
|
|||||||
Reference in New Issue
Block a user