arm64: Save spsr in pt_regs

This register holds "pstate" which includes (among other things) the
instruction mode the CPU was in when the exception was taken. This is
necessary to correctly interpret instructions at elr.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
This commit is contained in:
Sean Anderson 2022-03-22 16:59:28 -04:00 committed by Tom Rini
parent e97ac4780d
commit e75d791c50
2 changed files with 5 additions and 2 deletions

View file

@ -77,15 +77,18 @@ _save_el_regs:
switch_el x11, 3f, 2f, 1f
3: mrs x1, esr_el3
mrs x2, elr_el3
mrs x3, spsr_el3
b 0f
2: mrs x1, esr_el2
mrs x2, elr_el2
mrs x3, spsr_el2
b 0f
1: mrs x1, esr_el1
mrs x2, elr_el1
mrs x3, spsr_el1
0:
stp x1, x0, [sp, #-16]!
stp xzr, x2, [sp, #-16]!
stp x3, x2, [sp, #-16]!
mov x0, sp
ret

View file

@ -21,7 +21,7 @@
* on the stack during an exception.
*/
struct pt_regs {
unsigned long unused;
unsigned long spsr;
unsigned long elr;
unsigned long esr;
unsigned long regs[31];