mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-03-16 23:07:00 +00:00
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:
parent
e97ac4780d
commit
e75d791c50
2 changed files with 5 additions and 2 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -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];
|
||||
|
|
Loading…
Add table
Reference in a new issue