summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Piggin <npiggin@gmail.com>2017-05-21 16:15:48 +0300
committerMichael Ellerman <mpe@ellerman.id.au>2017-06-20 15:22:01 +0300
commitdbeea1d6b4bd9fff10e125e5516156fb52ddeae8 (patch)
treeed9c029145c21a47a7f8bd07d4e8485b2e1a5ab0
parent36670fcf01aa22c7de2e96b4a6fb5fbd4dfe4a33 (diff)
downloadlinux-dbeea1d6b4bd9fff10e125e5516156fb52ddeae8.tar.xz
powerpc/64s/paca: EX_LR can be merged with EX_DAR
EX_LR is used only for a small section of the SLB miss handler. Merge it with EX_DAR. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
-rw-r--r--arch/powerpc/include/asm/exception-64s.h17
1 files changed, 12 insertions, 5 deletions
diff --git a/arch/powerpc/include/asm/exception-64s.h b/arch/powerpc/include/asm/exception-64s.h
index f3c6272f430f..90f4b771df02 100644
--- a/arch/powerpc/include/asm/exception-64s.h
+++ b/arch/powerpc/include/asm/exception-64s.h
@@ -46,12 +46,19 @@
#define EX_DSISR 48
#define EX_CCR 52
#define EX_R3 56
-#define EX_LR 64
-#define EX_CFAR 72
-#define EX_PPR 80 /* SMT thread status register (priority) */
-#define EX_CTR 88
+#define EX_CFAR 64
+#define EX_PPR 72
+#define EX_CTR 80
-#define EX_SIZE 12 /* size in u64 units */
+#define EX_SIZE 11 /* size in u64 units */
+
+/*
+ * EX_LR is only used in EXSLB and where it does not overlap with EX_DAR
+ * EX_CCR similarly with DSISR, but being 4 byte registers there is a hole
+ * in the save area so it's not necessary to overlap them. Could be used
+ * for future savings though if another 4 byte register was to be saved.
+ */
+#define EX_LR EX_DAR
#ifdef CONFIG_RELOCATABLE
#define __EXCEPTION_RELON_PROLOG_PSERIES_1(label, h) \