EX_R3 is used only for a small section of the bad stack handler.
Merge it with EX_DAR.

Signed-off-by: Nicholas Piggin <npig...@gmail.com>
---
 arch/powerpc/include/asm/exception-64s.h | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/arch/powerpc/include/asm/exception-64s.h 
b/arch/powerpc/include/asm/exception-64s.h
index ba03db14e1e8..aaee57f0e5ad 100644
--- a/arch/powerpc/include/asm/exception-64s.h
+++ b/arch/powerpc/include/asm/exception-64s.h
@@ -34,12 +34,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
@@ -49,6 +48,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 __ASSEMBLY__
 
 /*
-- 
2.11.0

Reply via email to