aboutsummaryrefslogtreecommitdiff
path: root/asm
diff options
context:
space:
mode:
authorNicholas Piggin <npiggin@gmail.com>2019-01-08 00:04:17 +1000
committerStewart Smith <stewart@linux.ibm.com>2019-02-12 15:08:17 +1100
commit9c58bbd720b73b9c9c3bf9e86797077f053a9eb3 (patch)
tree1b04f4adb8a4dc0b2ea7179624359346fd1b0ab0 /asm
parent9e075d75274c50da4135c55afccc9f6d24dd2cfe (diff)
downloadskiboot-9c58bbd720b73b9c9c3bf9e86797077f053a9eb3.zip
skiboot-9c58bbd720b73b9c9c3bf9e86797077f053a9eb3.tar.gz
skiboot-9c58bbd720b73b9c9c3bf9e86797077f053a9eb3.tar.bz2
core/exceptions: save current MSR in exception frame
Save and print the MSR of the interrupt context. This can be derived from the interrupt type, SRR1, and other system register settings. But it can be useful to quickly verify what's happening. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
Diffstat (limited to 'asm')
-rw-r--r--asm/asm-offsets.c1
-rw-r--r--asm/head.S2
2 files changed, 3 insertions, 0 deletions
diff --git a/asm/asm-offsets.c b/asm/asm-offsets.c
index 3eac592..45f4243 100644
--- a/asm/asm-offsets.c
+++ b/asm/asm-offsets.c
@@ -87,6 +87,7 @@ int main(void)
OFFSET(STACK_CTR, stack_frame, ctr);
OFFSET(STACK_LR, stack_frame, lr);
OFFSET(STACK_PC, stack_frame, pc);
+ OFFSET(STACK_MSR, stack_frame, msr);
OFFSET(STACK_CFAR, stack_frame, cfar);
OFFSET(STACK_SRR0, stack_frame, srr0);
OFFSET(STACK_SRR1, stack_frame, srr1);
diff --git a/asm/head.S b/asm/head.S
index 1189fc4..336afc9 100644
--- a/asm/head.S
+++ b/asm/head.S
@@ -217,8 +217,10 @@ _exception:
std %r6,STACK_HSRR1(%r1)
mfspr %r3,SPR_DSISR
mfspr %r4,SPR_DAR
+ mfmsr %r5
stw %r3,STACK_DSISR(%r1)
std %r4,STACK_DAR(%r1)
+ std %r5,STACK_MSR(%r1)
mr %r3,%r1
LOAD_IMM64(%r4, SKIBOOT_BASE)
LOAD_IMM32(%r5, exception_entry_foo - __head)