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

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
...@@ -207,6 +207,16 @@ END_FW_FTR_SECTION_IFSET(FW_FEATURE_SPLPAR) ...@@ -207,6 +207,16 @@ END_FW_FTR_SECTION_IFSET(FW_FEATURE_SPLPAR)
.globl name; \ .globl name; \
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) \ #define _KPROBE(name) \
.section ".kprobes.text","a"; \ .section ".kprobes.text","a"; \
.align 2 ; \ .align 2 ; \
...@@ -235,6 +245,8 @@ name: \ ...@@ -235,6 +245,8 @@ name: \
.type GLUE(.,name),@function; \ .type GLUE(.,name),@function; \
GLUE(.,name): GLUE(.,name):
#define _GLOBAL_TOC(name) _GLOBAL(name)
#define _KPROBE(name) \ #define _KPROBE(name) \
.section ".kprobes.text","a"; \ .section ".kprobes.text","a"; \
.align 2 ; \ .align 2 ; \
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
#endif #endif
.align 7 .align 7
_GLOBAL(__copy_tofrom_user) _GLOBAL_TOC(__copy_tofrom_user)
BEGIN_FTR_SECTION BEGIN_FTR_SECTION
nop nop
FTR_SECTION_ELSE FTR_SECTION_ELSE
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
#include <asm/ppc_asm.h> #include <asm/ppc_asm.h>
.align 7 .align 7
_GLOBAL(memcpy) _GLOBAL_TOC(memcpy)
BEGIN_FTR_SECTION BEGIN_FTR_SECTION
std r3,-STACKFRAMESIZE+STK_REG(R31)(r1) /* save destination pointer for return value */ std r3,-STACKFRAMESIZE+STK_REG(R31)(r1) /* save destination pointer for return value */
FTR_SECTION_ELSE FTR_SECTION_ELSE
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment