Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 169c7cee authored by Anton Blanchard's avatar Anton Blanchard
Browse files

powerpc: Add _GLOBAL_TOC for ABIv2 assembly functions exported to modules



If an assembly function that calls back into c code is exported to
modules, we need to ensure r2 is setup correctly. There are only
two places crazy enough to do it (two of which are my fault).

Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
parent 008d7a91
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -207,6 +207,16 @@ END_FW_FTR_SECTION_IFSET(FW_FEATURE_SPLPAR)
	.globl name; \
name:

#define _GLOBAL_TOC(name) \
	.section ".text"; \
	.align 2 ; \
	.type name,@function; \
	.globl name; \
name: \
0:	addis r2,r12,(.TOC.-0b)@ha; \
	addi r2,r2,(.TOC.-0b)@l; \
	.localentry name,.-name

#define _KPROBE(name) \
	.section ".kprobes.text","a"; \
	.align 2 ; \
@@ -235,6 +245,8 @@ name: \
	.type GLUE(.,name),@function; \
GLUE(.,name):

#define _GLOBAL_TOC(name) _GLOBAL(name)

#define _KPROBE(name) \
	.section ".kprobes.text","a"; \
	.align 2 ; \
+1 −1
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@
#endif

	.align	7
_GLOBAL(__copy_tofrom_user)
_GLOBAL_TOC(__copy_tofrom_user)
BEGIN_FTR_SECTION
	nop
FTR_SECTION_ELSE
+1 −1
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@
#include <asm/ppc_asm.h>

	.align	7
_GLOBAL(memcpy)
_GLOBAL_TOC(memcpy)
BEGIN_FTR_SECTION
	std	r3,-STACKFRAMESIZE+STK_REG(R31)(r1)	/* save destination pointer for return value */
FTR_SECTION_ELSE