Changeset View
Changeset View
Standalone View
Standalone View
sys/powerpc/include/asm.h
Show First 20 Lines • Show All 108 Lines • ▼ Show 20 Lines | #define _ENTRY(name) \ | ||||
.section ".opd","aw"; \ | .section ".opd","aw"; \ | ||||
.p2align 3; \ | .p2align 3; \ | ||||
name: \ | name: \ | ||||
.quad DOT_LABEL(name),.TOC.@tocbase,0; \ | .quad DOT_LABEL(name),.TOC.@tocbase,0; \ | ||||
.previous; \ | .previous; \ | ||||
.p2align 4; \ | .p2align 4; \ | ||||
TYPE_ENTRY(name) \ | TYPE_ENTRY(name) \ | ||||
DOT_LABEL(name): | DOT_LABEL(name): | ||||
#define _NAKED_ENTRY(name) _ENTRY(name) | |||||
#else | #else | ||||
#define _ENTRY(name) \ | #define _ENTRY(name) \ | ||||
.text; \ | .text; \ | ||||
.p2align 4; \ | .p2align 4; \ | ||||
.globl name; \ | .globl name; \ | ||||
.type name,@function; \ | .type name,@function; \ | ||||
name: \ | name: \ | ||||
addis %r2, %r12, (.TOC.-name)@ha; \ | addis %r2, %r12, (.TOC.-name)@ha; \ | ||||
addi %r2, %r2, (.TOC.-name)@l; \ | addi %r2, %r2, (.TOC.-name)@l; \ | ||||
.localentry name, .-name; | .localentry name, .-name; | ||||
/* "Naked" function entry. No TOC prologue for ELFv2. */ | |||||
#define _NAKED_ENTRY(name) \ | |||||
.text; \ | |||||
.p2align 4; \ | |||||
.globl name; \ | |||||
.type name,@function; \ | |||||
name: \ | |||||
.localentry name, .-name; | |||||
#endif | #endif | ||||
#define _END(name) \ | #define _END(name) \ | ||||
.long 0; \ | .long 0; \ | ||||
.byte 0,0,0,0,0,0,0,0; \ | .byte 0,0,0,0,0,0,0,0; \ | ||||
END_SIZE(name) | END_SIZE(name) | ||||
#define LOAD_ADDR(reg, var) \ | #define LOAD_ADDR(reg, var) \ | ||||
lis reg, var@highest; \ | lis reg, var@highest; \ | ||||
ori reg, reg, var@higher; \ | ori reg, reg, var@higher; \ | ||||
rldicr reg, reg, 32, 31; \ | rldicr reg, reg, 32, 31; \ | ||||
oris reg, reg, var@h; \ | oris reg, reg, var@h; \ | ||||
ori reg, reg, var@l; | ori reg, reg, var@l; | ||||
#else /* !__powerpc64__ */ | #else /* !__powerpc64__ */ | ||||
#define _ENTRY(name) \ | #define _ENTRY(name) \ | ||||
.text; \ | .text; \ | ||||
.p2align 4; \ | .p2align 4; \ | ||||
.globl name; \ | .globl name; \ | ||||
.type name,@function; \ | .type name,@function; \ | ||||
name: | name: | ||||
#define _END(name) | #define _END(name) | ||||
#define _NAKED_ENTRY(name) _ENTRY(name) | |||||
#define LOAD_ADDR(reg, var) \ | #define LOAD_ADDR(reg, var) \ | ||||
lis reg, var@ha; \ | lis reg, var@ha; \ | ||||
ori reg, reg, var@l; | ori reg, reg, var@l; | ||||
#endif /* __powerpc64__ */ | #endif /* __powerpc64__ */ | ||||
#if defined(PROF) || (defined(_KERNEL) && defined(GPROF)) | #if defined(PROF) || (defined(_KERNEL) && defined(GPROF)) | ||||
# ifdef __powerpc64__ | # ifdef __powerpc64__ | ||||
▲ Show 20 Lines • Show All 53 Lines • Show Last 20 Lines |