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: Anton Blanchard <anton@samba.org>
This commit is contained in:
parent
008d7a914e
commit
169c7cee31
3 changed files with 14 additions and 2 deletions
|
@ -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: \
|
||||||
.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 @@
|
||||||
#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 @@
|
||||||
#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
|
||||||
|
|
Loading…
Add table
Reference in a new issue