[PATCH 03/41] powerpc/64: use gas sections for arranging exception vectors

Nicholas Piggin npiggin at gmail.com
Thu Sep 22 14:40:36 AEST 2016


On Wed, 21 Sep 2016 17:43:29 +1000
Nicholas Piggin <npiggin at gmail.com> wrote:

> Use assembler sections of fixed size and location to arrange pseries
> exception vector code (64e also using it in head_64.S for 0x0..0x100).
> 
> This allows better flexibility in arranging exception code and hiding
> unimportant details behind macros.
> 
> Gas sections can be a bit painful to use this way, mainly because the
> assembler does not know where they will be finally linked. Taking
> absolute addresses requires a bit of trickery for example, but it can
> be hidden behind macros for the most part.
> 
> Generated code is mostly the same except locations, offsets, alignments.

Okay, this patch requires the following change that I missed when
rebasing it. In some configurations it causes linker stubs to be
inserted in a way that shifts code and breaks things.

I thought I'd caught all such linker stub breakages at link time with
the linker script change, but not so. I'll keep working on that.


From f03ff61077b775c4d094eff152fb3ca2b98a2c59 Mon Sep 17 00:00:00 2001
From: Nicholas Piggin <npiggin at gmail.com>
Date: Thu, 22 Sep 2016 13:49:57 +1000
Subject: [PATCH] powerpc/64s: hmi_exception_early is "unrelocated" so must be in trampoline section

---
 arch/powerpc/kernel/exceptions-64s.S | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
index 11a7b28..df58681 100644
--- a/arch/powerpc/kernel/exceptions-64s.S
+++ b/arch/powerpc/kernel/exceptions-64s.S
@@ -1168,7 +1168,7 @@ COMMON_HANDLER(cbe_thermal_common, 0x1800, cbe_thermal_exception)
 #endif /* CONFIG_CBE_RAS */
 
 
-COMMON_HANDLER_BEGIN(hmi_exception_early)
+TRAMP_HANDLER_BEGIN(hmi_exception_early)
 	EXCEPTION_PROLOG_1(PACA_EXGEN, KVMTEST_HV, 0xe60)
 	mr	r10,r1			/* Save r1			*/
 	ld	r1,PACAEMERGSP(r13)	/* Use emergency stack		*/
@@ -1216,7 +1216,7 @@ hmi_exception_after_realmode:
 	SET_SCRATCH0(r13)
 	EXCEPTION_PROLOG_0(PACA_EXGEN)
 	b	tramp_real_hmi_exception
-COMMON_HANDLER_END(hmi_exception_early)
+TRAMP_HANDLER_END(hmi_exception_early)
 
 
 #define MACHINE_CHECK_HANDLER_WINDUP			\
-- 
2.9.3



More information about the Linuxppc-dev mailing list