powerpc/64s/paca: EX_R3 can be merged with EX_DAR
authorNicholas Piggin <npiggin@gmail.com>
Sun, 21 May 2017 13:15:49 +0000 (23:15 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 20 Jun 2017 12:22:01 +0000 (22:22 +1000)
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>
arch/powerpc/include/asm/exception-64s.h

index 90f4b771df024da01e70487a4305d41a8b13bfc9..f42a49a274a6cee392d6dea7fcf5371cd61664f2 100644 (file)
 #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
  */
 #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 */                 \