public inbox for linuxppc-dev@ozlabs.org 
 help / color / mirror / Atom feed
From: Anton Blanchard <anton@samba•org>
To: benh@kernel•crashing.org, paulus@samba•org,
	rusty@rustcorp•com.au, ulrich.weigand@de•ibm.com,
	amodra@gmail•com, mikey@neuling•org, mjw@linux•vnet.ibm.com
Cc: linuxppc-dev@lists•ozlabs.org
Subject: [PATCH 02/33] powerpc: Remove superflous function descriptors in assembly only code
Date: Tue, 25 Mar 2014 22:44:08 +1100	[thread overview]
Message-ID: <1395747879-5948-3-git-send-email-anton@samba.org> (raw)
In-Reply-To: <1395747879-5948-1-git-send-email-anton@samba.org>

We have a number of places where we load the text address of a local
function and indirectly branch to it in assembly. Since it is an
indirect branch binutils will not know to use the function text
address, so that trick wont work.

There is no need for these functions to have a function descriptor
so we can replace it with a label and remove the dot symbol.

Signed-off-by: Anton Blanchard <anton@samba•org>
---
 arch/powerpc/kernel/entry_64.S                 | 10 +++++-----
 arch/powerpc/kernel/exceptions-64s.S           | 18 +++++++++---------
 arch/powerpc/kernel/head_64.S                  |  9 +++++----
 arch/powerpc/platforms/powernv/opal-wrappers.S |  4 ++--
 4 files changed, 21 insertions(+), 20 deletions(-)

diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S
index b629198..2d92eeb 100644
--- a/arch/powerpc/kernel/entry_64.S
+++ b/arch/powerpc/kernel/entry_64.S
@@ -1021,7 +1021,7 @@ _GLOBAL(enter_rtas)
         std	r6,PACASAVEDMSR(r13)
 
 	/* Setup our real return addr */	
-	LOAD_REG_ADDR(r4,.rtas_return_loc)
+	LOAD_REG_ADDR(r4,rtas_return_loc)
 	clrldi	r4,r4,2			/* convert to realmode address */
        	mtlr	r4
 
@@ -1045,7 +1045,7 @@ _GLOBAL(enter_rtas)
 	rfid
 	b	.	/* prevent speculative execution */
 
-_STATIC(rtas_return_loc)
+rtas_return_loc:
 	FIXUP_ENDIAN
 
 	/* relocation is off at this point */
@@ -1054,7 +1054,7 @@ _STATIC(rtas_return_loc)
 
 	bcl	20,31,$+4
 0:	mflr	r3
-	ld	r3,(1f-0b)(r3)		/* get &.rtas_restore_regs */
+	ld	r3,(1f-0b)(r3)		/* get &rtas_restore_regs */
 
 	mfmsr   r6
 	li	r0,MSR_RI
@@ -1071,9 +1071,9 @@ _STATIC(rtas_return_loc)
 	b	.	/* prevent speculative execution */
 
 	.align	3
-1:	.llong	.rtas_restore_regs
+1:	.llong	rtas_restore_regs
 
-_STATIC(rtas_restore_regs)
+rtas_restore_regs:
 	/* relocation is on at this point */
 	REST_GPR(2, r1)			/* Restore the TOC */
 	REST_GPR(13, r1)		/* Restore paca */
diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
index f0e6c1b..7e87b64 100644
--- a/arch/powerpc/kernel/exceptions-64s.S
+++ b/arch/powerpc/kernel/exceptions-64s.S
@@ -216,13 +216,13 @@ data_access_slb_pSeries:
 	b	slb_miss_realmode
 #else
 	/*
-	 * We can't just use a direct branch to .slb_miss_realmode
+	 * We can't just use a direct branch to slb_miss_realmode
 	 * because the distance from here to there depends on where
 	 * the kernel ends up being put.
 	 */
 	mfctr	r11
 	ld	r10,PACAKBASE(r13)
-	LOAD_HANDLER(r10, .slb_miss_realmode)
+	LOAD_HANDLER(r10, slb_miss_realmode)
 	mtctr	r10
 	bctr
 #endif
@@ -249,7 +249,7 @@ instruction_access_slb_pSeries:
 #else
 	mfctr	r11
 	ld	r10,PACAKBASE(r13)
-	LOAD_HANDLER(r10, .slb_miss_realmode)
+	LOAD_HANDLER(r10, slb_miss_realmode)
 	mtctr	r10
 	bctr
 #endif
@@ -526,7 +526,7 @@ do_stab_bolted_pSeries:
 	std	r12,PACA_EXSLB+EX_R12(r13)
 	GET_SCRATCH0(r10)
 	std	r10,PACA_EXSLB+EX_R13(r13)
-	EXCEPTION_PROLOG_PSERIES_1(.do_stab_bolted, EXC_STD)
+	EXCEPTION_PROLOG_PSERIES_1(do_stab_bolted, EXC_STD)
 
 	KVM_HANDLER_SKIP(PACA_EXGEN, EXC_STD, 0x300)
 	KVM_HANDLER_SKIP(PACA_EXSLB, EXC_STD, 0x380)
@@ -834,13 +834,13 @@ data_access_slb_relon_pSeries:
 	b	slb_miss_realmode
 #else
 	/*
-	 * We can't just use a direct branch to .slb_miss_realmode
+	 * We can't just use a direct branch to slb_miss_realmode
 	 * because the distance from here to there depends on where
 	 * the kernel ends up being put.
 	 */
 	mfctr	r11
 	ld	r10,PACAKBASE(r13)
-	LOAD_HANDLER(r10, .slb_miss_realmode)
+	LOAD_HANDLER(r10, slb_miss_realmode)
 	mtctr	r10
 	bctr
 #endif
@@ -860,7 +860,7 @@ instruction_access_slb_relon_pSeries:
 #else
 	mfctr	r11
 	ld	r10,PACAKBASE(r13)
-	LOAD_HANDLER(r10, .slb_miss_realmode)
+	LOAD_HANDLER(r10, slb_miss_realmode)
 	mtctr	r10
 	bctr
 #endif
@@ -1470,7 +1470,7 @@ machine_check_handle_early:
  * r3 is saved in paca->slb_r3
  * We assume we aren't going to take any exceptions during this procedure.
  */
-_GLOBAL(slb_miss_realmode)
+slb_miss_realmode:
 	mflr	r10
 #ifdef CONFIG_RELOCATABLE
 	mtctr	r11
@@ -1648,7 +1648,7 @@ do_ste_alloc:
  * We assume (DAR >> 60) == 0xc.
  */
 	.align	7
-_GLOBAL(do_stab_bolted)
+do_stab_bolted:
 	stw	r9,PACA_EXSLB+EX_CCR(r13)	/* save CR in exc. frame */
 	std	r11,PACA_EXSLB+EX_SRR0(r13)	/* save SRR0 in exc. frame */
 	mfspr	r11,SPRN_DAR			/* ea */
diff --git a/arch/powerpc/kernel/head_64.S b/arch/powerpc/kernel/head_64.S
index afcfd63..8d7c868 100644
--- a/arch/powerpc/kernel/head_64.S
+++ b/arch/powerpc/kernel/head_64.S
@@ -639,7 +639,7 @@ __secondary_start:
 	stb	r0,PACAIRQHAPPENED(r13)
 
 	/* enable MMU and jump to start_secondary */
-	LOAD_REG_ADDR(r3, .start_secondary_prolog)
+	LOAD_REG_ADDR(r3, start_secondary_prolog)
 	LOAD_REG_IMMEDIATE(r4, MSR_KERNEL)
 
 	mtspr	SPRN_SRR0,r3
@@ -652,7 +652,7 @@ __secondary_start:
  * zero the stack back-chain pointer and get the TOC virtual address
  * before going into C code.
  */
-_GLOBAL(start_secondary_prolog)
+start_secondary_prolog:
 	ld	r2,PACATOC(r13)
 	li	r3,0
 	std	r3,0(r1)		/* Zero the stack frame pointer	*/
@@ -778,7 +778,7 @@ _INIT_STATIC(start_here_multiplatform)
 	mr	r3,r31
 	bl	early_setup		/* also sets r13 and SPRG_PACA */
 
-	LOAD_REG_ADDR(r3, .start_here_common)
+	LOAD_REG_ADDR(r3, start_here_common)
 	ld	r4,PACAKMSR(r13)
 	mtspr	SPRN_SRR0,r3
 	mtspr	SPRN_SRR1,r4
@@ -786,7 +786,8 @@ _INIT_STATIC(start_here_multiplatform)
 	b	.	/* prevent speculative execution */
 	
 	/* This is where all platforms converge execution */
-_INIT_GLOBAL(start_here_common)
+
+start_here_common:
 	/* relocation is on at this point */
 	std	r1,PACAKSAVE(r13)
 
diff --git a/arch/powerpc/platforms/powernv/opal-wrappers.S b/arch/powerpc/platforms/powernv/opal-wrappers.S
index 75c89df..d559122 100644
--- a/arch/powerpc/platforms/powernv/opal-wrappers.S
+++ b/arch/powerpc/platforms/powernv/opal-wrappers.S
@@ -32,7 +32,7 @@
 	std	r12,PACASAVEDMSR(r13);	\
 	andc	r12,r12,r0;		\
 	mtmsrd	r12,1;			\
-	LOAD_REG_ADDR(r0,.opal_return);	\
+	LOAD_REG_ADDR(r0,opal_return);	\
 	mtlr	r0;			\
 	li	r0,MSR_DR|MSR_IR|MSR_LE;\
 	andc	r12,r12,r0;		\
@@ -44,7 +44,7 @@
 	mtspr	SPRN_HSRR0,r12;		\
 	hrfid
 
-_STATIC(opal_return)
+opal_return:
 	/*
 	 * Fixup endian on OPAL return... we should be able to simplify
 	 * this by instead converting the below trampoline to a set of
-- 
1.8.3.2

  parent reply	other threads:[~2014-03-25 11:44 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-25 11:44 [PATCH 00/33] Build ppc64le kernel using ABIv2 Anton Blanchard
2014-03-25 11:44 ` [PATCH 01/33] powerpc: No need to use dot symbols when branching to a function Anton Blanchard
2014-03-25 11:44 ` Anton Blanchard [this message]
2014-03-25 11:44 ` [PATCH 03/33] powerpc: Don't use a function descriptor for system call table Anton Blanchard
2014-03-25 11:44 ` [PATCH 04/33] powerpc: Remove some unnecessary uses of _GLOBAL() and _STATIC() Anton Blanchard
2014-03-25 11:44 ` [PATCH 05/33] powerpc: Remove _INIT_GLOBAL(), _STATIC() and _INIT_STATIC() Anton Blanchard
2014-03-25 11:44 ` [PATCH 06/33] powerpc: Remove dot symbol usage in exception macros Anton Blanchard
2014-03-25 11:44 ` [PATCH 07/33] powerpc: Create DOTSYM to wrap dot symbol usage Anton Blanchard
2014-03-25 11:44 ` [PATCH 08/33] powerpc: Remove function descriptors and dot symbols on new ABI Anton Blanchard
2014-03-25 11:44 ` [PATCH 09/33] powerpc: ABIv2 function calls must place target address in r12 Anton Blanchard
2014-03-25 11:44 ` [PATCH 10/33] powerpc: Ignore TOC relocations Anton Blanchard
2014-03-26  9:36   ` Alan Modra
2014-04-22 22:02     ` Anton Blanchard
2014-03-25 11:44 ` [PATCH 11/33] powerpc: Add ABIv2 support to ppc_function_entry Anton Blanchard
2014-03-25 11:44 ` [PATCH 12/33] powerpc: Use ppc_function_entry instead of open coding it Anton Blanchard
2014-03-25 11:44 ` [PATCH 13/33] powerpc: Fix branch patching code for ABIv2 Anton Blanchard
2014-03-25 11:44 ` [PATCH 14/33] powerpc: Fix kernel thread creation on ABIv2 Anton Blanchard
2014-03-25 11:44 ` [PATCH 15/33] powerpc: Fix ABIv2 issues with stack offsets in assembly code Anton Blanchard
2014-03-26 10:04   ` Alan Modra
2014-03-26 10:06     ` Alan Modra
2014-04-01 13:54   ` Philippe Bergheaud
2014-03-25 11:44 ` [PATCH 16/33] powerpc: Fix unsafe accesses to parameter area in ELFv2 Anton Blanchard
2014-03-25 11:44 ` [PATCH 17/33] powerpc/tm: Use STK_PARAM Anton Blanchard
2014-03-25 11:44 ` [PATCH 18/33] powerpc/tm: Fix GOT save offset for ABIv2 Anton Blanchard
2014-03-25 11:44 ` [PATCH 19/33] powerpc/tracing: TRACE_WITH_FRAME_BUFFER creates invalid stack frames Anton Blanchard
2014-03-25 11:44 ` [PATCH 20/33] powerpc: Fix SMP issues with ppc64le ABIv2 Anton Blanchard
2014-03-25 11:44 ` [PATCH 21/33] powerpc: Fix ABIv2 issue with dereference_function_descriptor Anton Blanchard
2014-03-25 11:44 ` [PATCH 22/33] powerpc: make module stub code endian independent Anton Blanchard
2014-03-25 11:44 ` [PATCH 23/33] powerpc: modules implement R_PPC64_TOCSAVE relocation Anton Blanchard
2014-03-25 11:44 ` [PATCH 24/33] powerpc: EXPORT_SYMBOL(.TOC.) Anton Blanchard
2014-03-25 11:44 ` [PATCH 25/33] powerpc: module: handle MODVERSION for .TOC Anton Blanchard
2014-03-25 11:44 ` [PATCH 26/33] powerpc: Fix up TOC. for modules Anton Blanchard
2014-03-25 11:44 ` [PATCH 27/33] powerpc: Handle new ELFv2 module relocations Anton Blanchard
2014-03-26 10:28   ` Alan Modra
2014-03-25 11:44 ` [PATCH 28/33] powerpc: modules: comment about de-dotifying symbols when using the ELFv2 ABI Anton Blanchard
2014-03-25 11:44 ` [PATCH 29/33] powerpc: modules: change r2 save/restore offset for " Anton Blanchard
2014-03-25 11:44 ` [PATCH 30/33] powerpc: modules: use r12 for stub jump address Anton Blanchard
2014-03-25 11:44 ` [PATCH 31/33] powerpc: modules: skip r2 setup for ELFv2 Anton Blanchard
2014-03-25 11:44 ` [PATCH 32/33] powerpc: modules: implement stubs for ELFv2 ABI Anton Blanchard
2014-03-25 11:44 ` [PATCH 33/33] powerpc: Build little endian ppc64 kernel with ABIv2 Anton Blanchard
2014-03-25 13:18 ` [PATCH 00/33] Build ppc64le kernel using ABIv2 Ulrich Weigand
2014-03-26 11:20   ` Anton Blanchard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1395747879-5948-3-git-send-email-anton@samba.org \
    --to=anton@samba$(echo .)org \
    --cc=amodra@gmail$(echo .)com \
    --cc=benh@kernel$(echo .)crashing.org \
    --cc=linuxppc-dev@lists$(echo .)ozlabs.org \
    --cc=mikey@neuling$(echo .)org \
    --cc=mjw@linux$(echo .)vnet.ibm.com \
    --cc=paulus@samba$(echo .)org \
    --cc=rusty@rustcorp$(echo .)com.au \
    --cc=ulrich.weigand@de$(echo .)ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox