summaryrefslogtreecommitdiff
path: root/arch/powerpc/include/asm/exception-64s.h
diff options
context:
space:
mode:
authorNicholas Piggin <npiggin@gmail.com>2017-05-21 23:15:49 +1000
committerMichael Ellerman <mpe@ellerman.id.au>2017-06-20 22:22:01 +1000
commit635942ae53cc5d4049c2c4a5bd2ad819e3a47ee5 (patch)
tree0f69e05c2455cb8bfa38733973ce1a16f94871ed /arch/powerpc/include/asm/exception-64s.h
parentdbeea1d6b4bd9fff10e125e5516156fb52ddeae8 (diff)
powerpc/64s/paca: EX_R3 can be merged with EX_DAR
EX_R3 is used only for a small section of the bad stack handler. Merge it with EX_DAR. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/include/asm/exception-64s.h')
-rw-r--r--arch/powerpc/include/asm/exception-64s.h16
1 files changed, 11 insertions, 5 deletions
diff --git a/arch/powerpc/include/asm/exception-64s.h b/arch/powerpc/include/asm/exception-64s.h
index 90f4b771df02..f42a49a274a6 100644
--- a/arch/powerpc/include/asm/exception-64s.h
+++ b/arch/powerpc/include/asm/exception-64s.h
@@ -45,12 +45,11 @@
#define EX_DAR 40
#define EX_DSISR 48
#define EX_CCR 52
-#define EX_R3 56
-#define EX_CFAR 64
-#define EX_PPR 72
-#define EX_CTR 80
+#define EX_CFAR 56
+#define EX_PPR 64
+#define EX_CTR 72
-#define EX_SIZE 11 /* size in u64 units */
+#define EX_SIZE 10 /* size in u64 units */
/*
* EX_LR is only used in EXSLB and where it does not overlap with EX_DAR
@@ -60,6 +59,13 @@
*/
#define EX_LR EX_DAR
+/*
+ * EX_R3 is only used by the bad_stack handler. bad_stack reloads and
+ * saves DAR from SPRN_DAR, and EX_DAR is not used. So EX_R3 can overlap
+ * with EX_DAR.
+ */
+#define EX_R3 EX_DAR
+
#ifdef CONFIG_RELOCATABLE
#define __EXCEPTION_RELON_PROLOG_PSERIES_1(label, h) \
mfspr r11,SPRN_##h##SRR0; /* save SRR0 */ \