summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/libc/powerpc/SYS.h6
-rw-r--r--lib/libc/powerpc64/SYS.h6
-rw-r--r--lib/libc/powerpc64/sys/cerror.S1
-rw-r--r--lib/libthr/arch/i386/i386/_umtx_op_err.S5
-rw-r--r--lib/msun/i387/e_logf.S1
-rw-r--r--lib/msun/i387/e_remainderl.S1
-rw-r--r--lib/msun/i387/e_sqrtl.S1
-rw-r--r--lib/msun/i387/s_llrintl.S1
-rw-r--r--lib/msun/i387/s_logbl.S1
-rw-r--r--lib/msun/i387/s_lrintl.S1
-rw-r--r--lib/msun/i387/s_remquol.S1
-rw-r--r--lib/msun/i387/s_rintl.S1
-rw-r--r--libexec/rtld-elf/aarch64/rtld_start.S9
-rw-r--r--libexec/rtld-elf/powerpc/rtld_start.S6
-rw-r--r--libexec/rtld-elf/powerpc64/rtld_start.S2
-rw-r--r--stand/libsa/powerpc/_setjmp.S2
-rw-r--r--stand/powerpc/kboot/host_syscall.S13
-rw-r--r--stand/powerpc/uboot/start.S1
-rw-r--r--sys/arm64/include/asm.h5
-rw-r--r--sys/arm64/linux/linux_locore.asm4
-rw-r--r--sys/arm64/linux/linux_support.s5
-rw-r--r--sys/crypto/des/arch/i386/des_enc.S12
-rw-r--r--sys/i386/bios/smapi_bios.S1
-rw-r--r--sys/i386/include/asm.h19
-rw-r--r--sys/powerpc/aim/locore.S1
-rw-r--r--sys/powerpc/aim/locore64.S3
-rw-r--r--sys/powerpc/aim/trap_subr64.S1
-rw-r--r--sys/powerpc/booke/locore.S10
-rw-r--r--sys/powerpc/booke/trap_subr.S3
-rw-r--r--sys/powerpc/include/asm.h16
-rw-r--r--sys/powerpc/mambo/mambocall.S2
-rw-r--r--sys/powerpc/ofw/ofwcall32.S3
-rw-r--r--sys/powerpc/ofw/ofwcall64.S3
-rw-r--r--sys/powerpc/powernv/opalcall.S2
-rw-r--r--sys/powerpc/powerpc/cpu_subr64.S1
-rw-r--r--sys/powerpc/powerpc/setjmp.S2
-rw-r--r--sys/powerpc/powerpc/support.S27
-rw-r--r--sys/powerpc/powerpc/swtch32.S4
-rw-r--r--sys/powerpc/powerpc/swtch64.S4
-rw-r--r--sys/powerpc/ps3/ps3-hvcall.S91
-rw-r--r--sys/powerpc/pseries/phyp-hvcall.S3
41 files changed, 242 insertions, 39 deletions
diff --git a/lib/libc/powerpc/SYS.h b/lib/libc/powerpc/SYS.h
index e9b6d3226c973..8d019144cdd6d 100644
--- a/lib/libc/powerpc/SYS.h
+++ b/lib/libc/powerpc/SYS.h
@@ -58,7 +58,8 @@ ENTRY(__sys_##name); \
WEAK_REFERENCE(__sys_##name, _##name); \
_SYSCALL(name); \
bnslr; \
- b CNAME(HIDENAME(cerror))
+ b CNAME(HIDENAME(cerror)); \
+END(__sys_##name)
#define RSYSCALL(name) \
.text; \
@@ -68,4 +69,5 @@ ENTRY(__sys_##name); \
WEAK_REFERENCE(__sys_##name, _##name); \
_SYSCALL(name); \
bnslr; \
- b CNAME(HIDENAME(cerror))
+ b CNAME(HIDENAME(cerror)); \
+END(__sys_##name)
diff --git a/lib/libc/powerpc64/SYS.h b/lib/libc/powerpc64/SYS.h
index cc1c268adf293..9ca5af4b70edf 100644
--- a/lib/libc/powerpc64/SYS.h
+++ b/lib/libc/powerpc64/SYS.h
@@ -74,7 +74,8 @@ ENTRY(__sys_##name); \
addi %r1,%r1,48; \
ld %r0,16(%r1); \
mtlr %r0; \
- blr;
+ blr; \
+END(__sys_##name)
#define RSYSCALL(name) \
.text; \
@@ -93,4 +94,5 @@ ENTRY(__sys_##name); \
addi %r1,%r1,48; \
ld %r0,16(%r1); \
mtlr %r0; \
- blr;
+ blr; \
+END(__sys_##name)
diff --git a/lib/libc/powerpc64/sys/cerror.S b/lib/libc/powerpc64/sys/cerror.S
index 515d7e541cab8..3362c9fdf0461 100644
--- a/lib/libc/powerpc64/sys/cerror.S
+++ b/lib/libc/powerpc64/sys/cerror.S
@@ -56,5 +56,6 @@ ENTRY_NOPROF(HIDENAME(cerror))
li %r3,-1
li %r4,-1
blr
+END(HIDENAME(cerror))
.section .note.GNU-stack,"",%progbits
diff --git a/lib/libthr/arch/i386/i386/_umtx_op_err.S b/lib/libthr/arch/i386/i386/_umtx_op_err.S
index 113412c851000..dad6495132f70 100644
--- a/lib/libthr/arch/i386/i386/_umtx_op_err.S
+++ b/lib/libthr/arch/i386/i386/_umtx_op_err.S
@@ -31,7 +31,10 @@
#define SYSCALL_ERR(x) \
ENTRY(__CONCAT(x, _err)); \
- mov __CONCAT($SYS_,x),%eax; int $0x80; ret
+ mov __CONCAT($SYS_,x),%eax; \
+ int $0x80; \
+ ret; \
+ END(__CONCAT(x, _err))
SYSCALL_ERR(_umtx_op)
diff --git a/lib/msun/i387/e_logf.S b/lib/msun/i387/e_logf.S
index 51f12e76e04fa..01511af1c7509 100644
--- a/lib/msun/i387/e_logf.S
+++ b/lib/msun/i387/e_logf.S
@@ -13,5 +13,6 @@ ENTRY(logf)
flds 4(%esp)
fyl2x
ret
+END(logf)
.section .note.GNU-stack,"",%progbits
diff --git a/lib/msun/i387/e_remainderl.S b/lib/msun/i387/e_remainderl.S
index bdbd2ba2bdaa7..3dac088364051 100644
--- a/lib/msun/i387/e_remainderl.S
+++ b/lib/msun/i387/e_remainderl.S
@@ -46,5 +46,6 @@ ENTRY(remainderl)
jp 1b
fstp %st(1)
ret
+END(remainderl)
.section .note.GNU-stack,"",%progbits
diff --git a/lib/msun/i387/e_sqrtl.S b/lib/msun/i387/e_sqrtl.S
index 3a5ef3e666f5e..aec8fbd9e533e 100644
--- a/lib/msun/i387/e_sqrtl.S
+++ b/lib/msun/i387/e_sqrtl.S
@@ -40,5 +40,6 @@ ENTRY(sqrtl)
fldt 4(%esp)
fsqrt
ret
+END(sqrtl)
.section .note.GNU-stack,"",%progbits
diff --git a/lib/msun/i387/s_llrintl.S b/lib/msun/i387/s_llrintl.S
index 0fe97b82f1b03..aa349cbc1aaee 100644
--- a/lib/msun/i387/s_llrintl.S
+++ b/lib/msun/i387/s_llrintl.S
@@ -34,5 +34,6 @@ ENTRY(llrintl)
popl %eax
popl %edx
ret
+END(llrintl)
.section .note.GNU-stack,"",%progbits
diff --git a/lib/msun/i387/s_logbl.S b/lib/msun/i387/s_logbl.S
index 685da943c5103..f175e7b51a408 100644
--- a/lib/msun/i387/s_logbl.S
+++ b/lib/msun/i387/s_logbl.S
@@ -41,5 +41,6 @@ ENTRY(logbl)
fxtract
fstp %st
ret
+END(logbl)
.section .note.GNU-stack,"",%progbits
diff --git a/lib/msun/i387/s_lrintl.S b/lib/msun/i387/s_lrintl.S
index fb7f2612013aa..9a8b467a3c13b 100644
--- a/lib/msun/i387/s_lrintl.S
+++ b/lib/msun/i387/s_lrintl.S
@@ -33,5 +33,6 @@ ENTRY(lrintl)
fistpl (%esp)
popl %eax
ret
+END(lrintl)
.section .note.GNU-stack,"",%progbits
diff --git a/lib/msun/i387/s_remquol.S b/lib/msun/i387/s_remquol.S
index df149dff4aef2..59a62cbefe7d3 100644
--- a/lib/msun/i387/s_remquol.S
+++ b/lib/msun/i387/s_remquol.S
@@ -61,5 +61,6 @@ ENTRY(remquol)
movl 28(%esp),%ecx
movl %eax,(%ecx)
ret
+END(remquol)
.section .note.GNU-stack,"",%progbits
diff --git a/lib/msun/i387/s_rintl.S b/lib/msun/i387/s_rintl.S
index edb9573ffc634..8be8d96ebcdbf 100644
--- a/lib/msun/i387/s_rintl.S
+++ b/lib/msun/i387/s_rintl.S
@@ -40,5 +40,6 @@ ENTRY(rintl)
fldt 4(%esp)
frndint
ret
+END(rintl)
.section .note.GNU-stack,"",%progbits
diff --git a/libexec/rtld-elf/aarch64/rtld_start.S b/libexec/rtld-elf/aarch64/rtld_start.S
index e6804ba0b9282..e9d25f2ab170e 100644
--- a/libexec/rtld-elf/aarch64/rtld_start.S
+++ b/libexec/rtld-elf/aarch64/rtld_start.S
@@ -55,7 +55,6 @@ END(.rtld_start)
* x17 = &_rtld_bind_start
*/
ENTRY(_rtld_bind_start)
- .cfi_startproc
mov x17, sp
/* Save frame pointer and SP */
@@ -114,7 +113,6 @@ ENTRY(_rtld_bind_start)
/* Call into the correct function */
br x16
- .cfi_endproc
END(_rtld_bind_start)
/*
@@ -128,10 +126,8 @@ END(_rtld_bind_start)
* Resolver function for TLS symbols resolved at load time
*/
ENTRY(_rtld_tlsdesc_static)
- .cfi_startproc
ldr x0, [x0, #8]
ret
- .cfi_endproc
END(_rtld_tlsdesc_static)
/*
@@ -140,7 +136,6 @@ END(_rtld_tlsdesc_static)
* Resolver function for weak and undefined TLS symbols
*/
ENTRY(_rtld_tlsdesc_undef)
- .cfi_startproc
str x1, [sp, #-16]!
.cfi_adjust_cfa_offset 16
@@ -150,7 +145,6 @@ ENTRY(_rtld_tlsdesc_undef)
ldr x1, [sp], #16
.cfi_adjust_cfa_offset -16
- .cfi_endproc
ret
END(_rtld_tlsdesc_undef)
@@ -160,8 +154,6 @@ END(_rtld_tlsdesc_undef)
* Resolver function for TLS symbols from dlopen()
*/
ENTRY(_rtld_tlsdesc_dynamic)
- .cfi_startproc
-
/* Save registers used in fast path */
stp x1, x2, [sp, #(-2 * 16)]!
stp x3, x4, [sp, #(1 * 16)]
@@ -257,6 +249,5 @@ ENTRY(_rtld_tlsdesc_dynamic)
ldp x3, x4, [sp, #16]
ldp x1, x2, [sp], #(2 * 16)
.cfi_adjust_cfa_offset -2 * 16
- .cfi_endproc
ret
END(_rtld_tlsdesc_dynamic)
diff --git a/libexec/rtld-elf/powerpc/rtld_start.S b/libexec/rtld-elf/powerpc/rtld_start.S
index 36f795bc30fef..20f3001a021ae 100644
--- a/libexec/rtld-elf/powerpc/rtld_start.S
+++ b/libexec/rtld-elf/powerpc/rtld_start.S
@@ -101,6 +101,7 @@ _ENTRY(.rtld_start)
li %r0,1 /* _exit() */
sc
+_END(.rtld_start)
#ifdef __SPE__
/* stack space for 30 GPRs + SPEFSCR/ACC/lr/cr */
@@ -142,6 +143,7 @@ _ENTRY(_rtld_bind_secureplt_start)
ori %r11,%r11,0x15555556@l
mulhwu %r11,%r11,%r0 # get high half of multiplication
b 1f
+_END(_rtld_bind_secureplt_start)
/*
* _rtld_bind_start()
@@ -264,6 +266,7 @@ _ENTRY(_rtld_bind_start)
addi %r1,%r1,STACK_SIZE # restore stack
bctr # jump to target
+_END(_rtld_bind_start)
/*
@@ -284,6 +287,7 @@ _ENTRY(_rtld_powerpc_pltlongresolve)
subf %r11,%r12,%r11 # reloff
li %r12,2
srw %r11,%r11,%r12 # index = reloff/sizeof(Elf_Addr)
+_END(_rtld_powerpc_pltlongresolve)
_ENTRY(_rtld_powerpc_pltresolve)
lis %r12,0 # lis 12,_rtld_bind_start@ha
addi %r12,%r12,0 # addi 12,12,_rtld_bind_start@l
@@ -291,6 +295,7 @@ _ENTRY(_rtld_powerpc_pltresolve)
lis %r12,0 # lis 12,obj@ha
addi %r12,%r12,0 # addi 12,12,obj@l
bctr
+_END(_rtld_powerpc_pltresolve)
/*
* _rtld_powerpc_pltcall()
@@ -311,5 +316,6 @@ _ENTRY(_rtld_powerpc_pltcall)
lwz %r11,0(%r11) # lwz 11,jmptab@l(11)
mtctr %r11
bctr # (*jmptab[index])()
+_END(_rtld_powerpc_pltcall)
.section .note.GNU-stack,"",%progbits
diff --git a/libexec/rtld-elf/powerpc64/rtld_start.S b/libexec/rtld-elf/powerpc64/rtld_start.S
index 2d7fb8980862b..fd4a7bdca17db 100644
--- a/libexec/rtld-elf/powerpc64/rtld_start.S
+++ b/libexec/rtld-elf/powerpc64/rtld_start.S
@@ -113,6 +113,7 @@ _ENTRY(_rtld_start)
li %r0,1 /* _exit() */
sc
+_END(_rtld_start)
/*
* _rtld_bind_start()
@@ -175,5 +176,6 @@ _ENTRY(_rtld_bind_start)
mtlr %r0
bctr # jump to target
+_END(_rtld_bind_start)
.section .note.GNU-stack,"",%progbits
diff --git a/stand/libsa/powerpc/_setjmp.S b/stand/libsa/powerpc/_setjmp.S
index 7c7c24b1237cd..485050f003a11 100644
--- a/stand/libsa/powerpc/_setjmp.S
+++ b/stand/libsa/powerpc/_setjmp.S
@@ -76,6 +76,7 @@ ASENTRY_NOPROF(_setjmp)
/* f14-f31, fpscr */
li 3, 0
blr
+ASEND(_setjmp)
.extern sigsetmask
@@ -113,3 +114,4 @@ ASENTRY_NOPROF(_longjmp)
/* f14-f31, fpscr */
mr 3, 4
blr
+ASEND(_longjmp)
diff --git a/stand/powerpc/kboot/host_syscall.S b/stand/powerpc/kboot/host_syscall.S
index 1cb9016715ac3..dc236afdeda7c 100644
--- a/stand/powerpc/kboot/host_syscall.S
+++ b/stand/powerpc/kboot/host_syscall.S
@@ -13,11 +13,13 @@ ENTRY(host_read)
1:
li %r3, 0
blr
+END(host_read)
ENTRY(host_write)
li %r0, 4 # SYS_write
sc
blr
+END(host_write)
ENTRY(host_seek)
mr %r4,%r5
@@ -26,11 +28,13 @@ ENTRY(host_seek)
li %r0, 140 # SYS_llseek
sc
blr
+END(host_seek)
ENTRY(host_llseek)
li %r0, 140 # SYS_llseek
sc
blr
+END(host_llseek)
ENTRY(host_open)
li %r0, 5 # SYS_open
@@ -40,45 +44,54 @@ ENTRY(host_open)
1:
li %r3, 0
blr
+END(host_open)
ENTRY(host_close)
li %r0, 6 # SYS_close
sc
blr
+END(host_close)
ENTRY(host_mmap)
li %r0, 90 # SYS_mmap
sc
blr
+END(host_mmap)
ENTRY(host_uname)
li %r0, 122 # SYS_uname
sc
blr
+END(host_uname)
ENTRY(host_gettimeofday)
li %r0, 78 # SYS_gettimeofday
sc
blr
+END(host_gettimeofday)
ENTRY(host_select)
li %r0, 142 # SYS_select
sc
blr
+END(host_select)
ENTRY(kexec_load)
lis %r6,21 # KEXEC_ARCH_PPC64
li %r0,268 # __NR_kexec_load
sc
blr
+END(kexec_load)
ENTRY(host_reboot)
li %r0,88 # SYS_reboot
sc
blr
+END(host_reboot)
ENTRY(host_getdents)
li %r0,141 # SYS_getdents
sc
blr
+END(host_getdents)
diff --git a/stand/powerpc/uboot/start.S b/stand/powerpc/uboot/start.S
index 3c8d64ae724ff..cee56e6ea75b4 100644
--- a/stand/powerpc/uboot/start.S
+++ b/stand/powerpc/uboot/start.S
@@ -85,6 +85,7 @@ ENTRY(syscall)
lwz %r30, 12(%r1)
mr %r1, %r11
blr
+END(syscall)
/*
* Data section
diff --git a/sys/arm64/include/asm.h b/sys/arm64/include/asm.h
index d947301d5865b..443377bf0c149 100644
--- a/sys/arm64/include/asm.h
+++ b/sys/arm64/include/asm.h
@@ -39,10 +39,11 @@
#define _C_LABEL(x) x
#define ENTRY(sym) \
- .text; .globl sym; .align 2; .type sym,#function; sym:
+ .text; .globl sym; .align 2; .type sym,#function; sym: \
+ .cfi_startproc
#define EENTRY(sym) \
.globl sym; sym:
-#define END(sym) .size sym, . - sym
+#define END(sym) .cfi_endproc; .size sym, . - sym
#define EEND(sym)
#define WEAK_REFERENCE(sym, alias) \
diff --git a/sys/arm64/linux/linux_locore.asm b/sys/arm64/linux/linux_locore.asm
index b7e764b6d3791..0383e67709542 100644
--- a/sys/arm64/linux/linux_locore.asm
+++ b/sys/arm64/linux/linux_locore.asm
@@ -47,17 +47,21 @@ linux_platform:
ENTRY(__kernel_rt_sigreturn)
brk #0 /* LINUXTODO: implement __kernel_rt_sigreturn */
ret
+END(__kernel_rt_sigreturn)
ENTRY(__kernel_gettimeofday)
ldr x8, =LINUX_SYS_gettimeofday
svc #0
ret
+END(__kernel_gettimeofday)
ENTRY(__kernel_clock_gettime)
ldr x8, =LINUX_SYS_linux_clock_gettime
svc #0
ret
+END(__kernel_clock_gettime)
ENTRY(__kernel_clock_getres)
brk #0 /* LINUXTODO: implement __kernel_clock_getres */
ret
+END(__kernel_clock_getres)
diff --git a/sys/arm64/linux/linux_support.s b/sys/arm64/linux/linux_support.s
index c7a87f616812f..1048e95796275 100644
--- a/sys/arm64/linux/linux_support.s
+++ b/sys/arm64/linux/linux_support.s
@@ -39,19 +39,24 @@
ENTRY(futex_xchgl)
brk #0
ret
+END(futex_xchgl)
ENTRY(futex_addl)
brk #0
ret
+END(futex_addl)
ENTRY(futex_orl)
brk #0
ret
+END(futex_orl)
ENTRY(futex_andl)
brk #0
ret
+END(futex_andl)
ENTRY(futex_xorl)
brk #0
ret
+END(futex_xorl)
diff --git a/sys/crypto/des/arch/i386/des_enc.S b/sys/crypto/des/arch/i386/des_enc.S
index 7fc29e678a4cd..de1278b5ae93f 100644
--- a/sys/crypto/des/arch/i386/des_enc.S
+++ b/sys/crypto/des/arch/i386/des_enc.S
@@ -1354,8 +1354,7 @@ ENTRY(des_encrypt1)
popl %edi
popl %esi
ret
-.L_des_encrypt1_end:
- .size _C_LABEL(des_encrypt1),.L_des_encrypt1_end-_C_LABEL(des_encrypt1)
+END(des_encrypt1)
ENTRY(des_encrypt2)
pushl %esi
@@ -2573,8 +2572,7 @@ ENTRY(des_encrypt2)
popl %edi
popl %esi
ret
-.L_des_encrypt2_end:
- .size _C_LABEL(des_encrypt2),.L_des_encrypt2_end-_C_LABEL(des_encrypt2)
+END(des_encrypt2)
ENTRY(des_encrypt3)
pushl %ebx
@@ -2692,8 +2690,7 @@ ENTRY(des_encrypt3)
popl %ebp
popl %ebx
ret
-.L_des_encrypt3_end:
- .size _C_LABEL(des_encrypt3),.L_des_encrypt3_end-_C_LABEL(des_encrypt3)
+END(des_encrypt3)
ENTRY(des_decrypt3)
pushl %ebx
@@ -2811,5 +2808,4 @@ ENTRY(des_decrypt3)
popl %ebp
popl %ebx
ret
-.L_des_decrypt3_end:
- .size _C_LABEL(des_decrypt3),.L_des_decrypt3_end-_C_LABEL(des_decrypt3)
+END(des_decrypt3)
diff --git a/sys/i386/bios/smapi_bios.S b/sys/i386/bios/smapi_bios.S
index 74ba05a3f8d00..c9d4acea66bf0 100644
--- a/sys/i386/bios/smapi_bios.S
+++ b/sys/i386/bios/smapi_bios.S
@@ -38,3 +38,4 @@ ENTRY(smapi32)
leave
ret
+END(smapi32)
diff --git a/sys/i386/include/asm.h b/sys/i386/include/asm.h
index f459784550566..e23fe2bec8d2a 100644
--- a/sys/i386/include/asm.h
+++ b/sys/i386/include/asm.h
@@ -73,19 +73,30 @@
#define _START_ENTRY .text; .p2align 2,0x90
#define _ENTRY(x) _START_ENTRY; \
- .globl CNAME(x); .type CNAME(x),@function; CNAME(x):
-#define END(x) .size x, . - x
+ .globl CNAME(x); .type CNAME(x),@function; CNAME(x): \
+ .cfi_startproc
+#define END(x) .cfi_endproc; .size x, . - x
#ifdef PROF
#define ALTENTRY(x) _ENTRY(x); \
- pushl %ebp; movl %esp,%ebp; \
+ pushl %ebp; \
+ .cfi_def_cfa_offset 8; \
+ .cfi_offset %ebp, -8; \
+ movl %esp,%ebp; \
call PIC_PLT(HIDENAME(mcount)); \
popl %ebp; \
+ .cfi_restore %ebp; \
+ .cfi_def_cfa_offset 4; \
jmp 9f
#define ENTRY(x) _ENTRY(x); \
- pushl %ebp; movl %esp,%ebp; \
+ pushl %ebp; \
+ .cfi_def_cfa_offset 8; \
+ .cfi_offset %ebp, -8; \
+ movl %esp,%ebp; \
call PIC_PLT(HIDENAME(mcount)); \
popl %ebp; \
+ .cfi_restore %ebp; \
+ .cfi_def_cfa_offset 4; \
9:
#else
#define ALTENTRY(x) _ENTRY(x)
diff --git a/sys/powerpc/aim/locore.S b/sys/powerpc/aim/locore.S
index 806884dfbeff4..861536447be10 100644
--- a/sys/powerpc/aim/locore.S
+++ b/sys/powerpc/aim/locore.S
@@ -13,3 +13,4 @@
ENTRY(get_spr)
mfspr %r3, 0
blr
+END(get_spr)
diff --git a/sys/powerpc/aim/locore64.S b/sys/powerpc/aim/locore64.S
index e18fbd49318f8..0bc0619620d9b 100644
--- a/sys/powerpc/aim/locore64.S
+++ b/sys/powerpc/aim/locore64.S
@@ -203,6 +203,7 @@ _NAKED_ENTRY(__start)
/* Unreachable */
b .
+_END(__start)
ASENTRY_NOPROF(__restartkernel_virtual)
/*
@@ -254,6 +255,7 @@ ASENTRY_NOPROF(__restartkernel_virtual)
addi %r14, %r14, 1
cmpdi %r14, 16
blt 1b
+ASEND(__restartkernel_virtual)
ASENTRY_NOPROF(__restartkernel)
/*
@@ -270,5 +272,6 @@ ASENTRY_NOPROF(__restartkernel)
rfid
2: bl __start
nop
+ASEND(__restartkernel)
#include <powerpc/aim/trap_subr64.S>
diff --git a/sys/powerpc/aim/trap_subr64.S b/sys/powerpc/aim/trap_subr64.S
index 1a2174c5cb12b..8e0f43ed0eebc 100644
--- a/sys/powerpc/aim/trap_subr64.S
+++ b/sys/powerpc/aim/trap_subr64.S
@@ -957,6 +957,7 @@ dbtrap:
dbleave:
FRAME_LEAVE(PC_DBSAVE)
rfid
+ASEND(breakpoint)
/*
* In case of KDB we want a separate trap catcher for it
diff --git a/sys/powerpc/booke/locore.S b/sys/powerpc/booke/locore.S
index f1a87b6ea0db5..8fad9296962e9 100644
--- a/sys/powerpc/booke/locore.S
+++ b/sys/powerpc/booke/locore.S
@@ -834,6 +834,7 @@ ENTRY(dcache_inval)
andi. %r3, %r3, L1CSR0_DCFI
bne 1b
blr
+END(dcache_inval)
ENTRY(dcache_disable)
/* Disable d-cache */
@@ -846,6 +847,7 @@ ENTRY(dcache_disable)
mtspr SPR_L1CSR0, %r3
isync
blr
+END(dcache_disable)
ENTRY(dcache_enable)
/* Enable d-cache */
@@ -857,6 +859,7 @@ ENTRY(dcache_enable)
mtspr SPR_L1CSR0, %r3
isync
blr
+END(dcache_enable)
ENTRY(icache_inval)
/* Invalidate i-cache */
@@ -869,6 +872,7 @@ ENTRY(icache_inval)
andi. %r3, %r3, L1CSR1_ICFI
bne 1b
blr
+END(icache_inval)
ENTRY(icache_disable)
/* Disable i-cache */
@@ -880,6 +884,7 @@ ENTRY(icache_disable)
mtspr SPR_L1CSR1, %r3
isync
blr
+END(icache_disable)
ENTRY(icache_enable)
/* Enable i-cache */
@@ -890,6 +895,7 @@ ENTRY(icache_enable)
mtspr SPR_L1CSR1, %r3
isync
blr
+END(icache_enable)
/*
* L2 cache disable/enable/inval sequences for E500mc.
@@ -906,6 +912,7 @@ ENTRY(l2cache_inval)
andis. %r3, %r3, L2CSR0_L2FI@h
bne 1b
blr
+END(l2cache_inval)
ENTRY(l2cache_enable)
mfspr %r3, SPR_L2CSR0
@@ -914,6 +921,7 @@ ENTRY(l2cache_enable)
mtspr SPR_L2CSR0, %r3
isync
blr
+END(l2cache_enable)
/*
* Branch predictor setup.
@@ -929,6 +937,7 @@ ENTRY(bpred_enable)
mtspr SPR_BUCSR, %r3
isync
blr
+END(bpred_enable)
/*
* XXX: This should be moved to a shared AIM/booke asm file, if one ever is
@@ -938,6 +947,7 @@ ENTRY(get_spr)
/* Note: The spr number is patched at runtime */
mfspr %r3, 0
blr
+END(get_spr)
/************************************************************************/
/* Data section */
diff --git a/sys/powerpc/booke/trap_subr.S b/sys/powerpc/booke/trap_subr.S
index 3c54af1b8983f..bef0a1a7cd9d3 100644
--- a/sys/powerpc/booke/trap_subr.S
+++ b/sys/powerpc/booke/trap_subr.S
@@ -1097,6 +1097,7 @@ dbtrap:
dbleave:
FRAME_LEAVE(SPR_SRR0, SPR_SRR1)
rfi
+ASEND(breakpoint)
#endif /* KDB */
#ifdef SMP
@@ -1111,6 +1112,7 @@ ENTRY(tlb_lock)
isync
msync
blr
+END(tlb_lock)
ENTRY(tlb_unlock)
isync
@@ -1120,6 +1122,7 @@ ENTRY(tlb_unlock)
isync
msync
blr
+END(tlb_unlock)
/*
* TLB miss spin locks. For each CPU we have a reservation granule (32 bytes);
diff --git a/sys/powerpc/include/asm.h b/sys/powerpc/include/asm.h
index 49ad43d3cb753..2dd24ebf2bb11 100644
--- a/sys/powerpc/include/asm.h
+++ b/sys/powerpc/include/asm.h
@@ -108,12 +108,13 @@
.globl name; \
.section ".opd","aw"; \
.p2align 3; \
- name: \
+name: \
.quad DOT_LABEL(name),.TOC.@tocbase,0; \
.previous; \
.p2align 4; \
TYPE_ENTRY(name) \
-DOT_LABEL(name):
+DOT_LABEL(name): \
+ .cfi_startproc
#define _NAKED_ENTRY(name) _ENTRY(name)
#else
#define _ENTRY(name) \
@@ -122,6 +123,7 @@ DOT_LABEL(name):
.globl name; \
.type name,@function; \
name: \
+ .cfi_startproc; \
addis %r2, %r12, (.TOC.-name)@ha; \
addi %r2, %r2, (.TOC.-name)@l; \
.localentry name, .-name;
@@ -133,10 +135,12 @@ name: \
.globl name; \
.type name,@function; \
name: \
+ .cfi_startproc; \
.localentry name, .-name;
#endif
#define _END(name) \
+ .cfi_endproc; \
.long 0; \
.byte 0,0,0,0,0,0,0,0; \
END_SIZE(name)
@@ -153,8 +157,11 @@ name: \
.p2align 4; \
.globl name; \
.type name,@function; \
- name:
-#define _END(name)
+name: \
+ .cfi_startproc
+#define _END(name) \
+ .cfi_endproc; \
+ .size name, . - name
#define _NAKED_ENTRY(name) _ENTRY(name)
@@ -186,6 +193,7 @@ name: \
# define _PROF_PROLOGUE
#endif
+#define ASEND(y) _END(ASMNAME(y))
#define ASENTRY(y) _ENTRY(ASMNAME(y)); _PROF_PROLOGUE
#define END(y) _END(CNAME(y))
#define ENTRY(y) _ENTRY(CNAME(y)); _PROF_PROLOGUE
diff --git a/sys/powerpc/mambo/mambocall.S b/sys/powerpc/mambo/mambocall.S
index 16364131eff41..030c4da1fe8fa 100644
--- a/sys/powerpc/mambo/mambocall.S
+++ b/sys/powerpc/mambo/mambocall.S
@@ -36,4 +36,4 @@ ASENTRY(mambocall)
*/
.long 0x000EAEB0
blr
-
+ASEND(mambocall)
diff --git a/sys/powerpc/ofw/ofwcall32.S b/sys/powerpc/ofw/ofwcall32.S
index dd657518dc3c7..b5dda4155c221 100644
--- a/sys/powerpc/ofw/ofwcall32.S
+++ b/sys/powerpc/ofw/ofwcall32.S
@@ -120,6 +120,7 @@ ASENTRY(ofwcall)
lwz %r0,4(%r1)
mtlr %r0
blr
+ASEND(ofwcall)
/*
* RTAS Entry Point. Similar to the OF one, but simpler (no separate stack)
@@ -174,4 +175,4 @@ ASENTRY(rtascall)
lwz %r0,4(%r1)
mtlr %r0
blr
-
+ASEND(rtascall)
diff --git a/sys/powerpc/ofw/ofwcall64.S b/sys/powerpc/ofw/ofwcall64.S
index 8a25c1a878bb9..2073c2cecf0b1 100644
--- a/sys/powerpc/ofw/ofwcall64.S
+++ b/sys/powerpc/ofw/ofwcall64.S
@@ -216,6 +216,7 @@ ASENTRY_NOPROF(ofwcall)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(ofwcall)
/*
* RTAS 32-bit Entry Point. Similar to the OF one, but simpler (no separate
@@ -380,4 +381,4 @@ ASENTRY_NOPROF(rtascall)
ld %r0,16(%r1)
mtlr %r0
blr
-
+ASEND(rtascall)
diff --git a/sys/powerpc/powernv/opalcall.S b/sys/powerpc/powernv/opalcall.S
index 208a4d431a287..c8cc5d717f8dd 100644
--- a/sys/powerpc/powernv/opalcall.S
+++ b/sys/powerpc/powernv/opalcall.S
@@ -129,4 +129,4 @@ ASENTRY(opal_call)
/* And return */
blr
-
+ASEND(opal_call)
diff --git a/sys/powerpc/powerpc/cpu_subr64.S b/sys/powerpc/powerpc/cpu_subr64.S
index 1cc88255153d9..148d0eadd4f6d 100644
--- a/sys/powerpc/powerpc/cpu_subr64.S
+++ b/sys/powerpc/powerpc/cpu_subr64.S
@@ -96,3 +96,4 @@ power_save_sequence:
bne 2b
nap
b .
+END(enter_idle_powerx)
diff --git a/sys/powerpc/powerpc/setjmp.S b/sys/powerpc/powerpc/setjmp.S
index 910f58bf66730..f58c4aa0cf7a1 100644
--- a/sys/powerpc/powerpc/setjmp.S
+++ b/sys/powerpc/powerpc/setjmp.S
@@ -75,6 +75,7 @@ ASENTRY_NOPROF(setjmp)
/* f14-f31, fpscr */
li 3, 0
blr
+ASEND(setjmp)
.extern sigsetmask
@@ -112,3 +113,4 @@ ASENTRY_NOPROF(longjmp)
/* f14-f31, fpscr */
mr 3, 4
blr
+ASEND(longjmp)
diff --git a/sys/powerpc/powerpc/support.S b/sys/powerpc/powerpc/support.S
index ecb727737c7a7..9ff1bcc02437e 100644
--- a/sys/powerpc/powerpc/support.S
+++ b/sys/powerpc/powerpc/support.S
@@ -73,9 +73,11 @@
#endif
#ifdef AIM
-#define ENTRY_DIRECT(x) ENTRY(x ## _direct)
+#define ENTRY_DIRECT(x) ENTRY(x ## _direct)
+#define END_DIRECT(x) END(x ## _direct)
#else
#define ENTRY_DIRECT(x) ENTRY(x)
+#define END_DIRECT(x) END(x)
#endif
#ifdef __powerpc64__
@@ -320,6 +322,7 @@ ENTRY(bcopy_generic)
/* done */
.Lend:
blr
+END(bcopy_generic)
/*
* copyout(from_kernel, to_user, len)
@@ -332,6 +335,7 @@ ENTRY_DIRECT(copyout)
nop
CLEAR_FAULT(%r7)
EPILOGUE
+END_DIRECT(copyout)
/*
* copyin(from_user, to_kernel, len)
@@ -344,6 +348,8 @@ ENTRY_DIRECT(copyin)
nop
CLEAR_FAULT(%r7)
EPILOGUE
+END_DIRECT(copyin)
+
/*
* copyinstr(const void *udaddr, void *kaddr, size_t len, size_t *done)
* %r3 %r4 %r5 %r6
@@ -379,6 +385,7 @@ ENTRY_DIRECT(copyinstr)
3:
CLEAR_FAULT_NO_CLOBBER(%r7)
EPILOGUE
+END_DIRECT(copyinstr)
ENTRY_DIRECT(subyte)
PROLOGUE
@@ -386,6 +393,7 @@ ENTRY_DIRECT(subyte)
stb %r4, 0(%r3)
CLEAR_FAULT(%r7)
EPILOGUE
+END_DIRECT(subyte)
#ifndef __powerpc64__
ENTRY_DIRECT(suword)
@@ -394,6 +402,7 @@ ENTRY_DIRECT(suword)
stw %r4, 0(%r3)
CLEAR_FAULT(%r7)
EPILOGUE
+END_DIRECT(suword)
#endif
ENTRY_DIRECT(suword32)
@@ -402,6 +411,7 @@ ENTRY_DIRECT(suword32)
stw %r4, 0(%r3)
CLEAR_FAULT(%r7)
EPILOGUE
+END_DIRECT(suword32)
#ifdef __powerpc64__
ENTRY_DIRECT(suword64)
@@ -410,12 +420,15 @@ ENTRY_DIRECT(suword64)
std %r4, 0(%r3)
CLEAR_FAULT(%r7)
EPILOGUE
+END_DIRECT(suword64)
+
ENTRY_DIRECT(suword)
PROLOGUE
SET_FUSUFAULT(%r3, %r7)
std %r4, 0(%r3)
CLEAR_FAULT(%r7)
EPILOGUE
+END_DIRECT(suword)
#endif
ENTRY_DIRECT(fubyte)
@@ -424,6 +437,7 @@ ENTRY_DIRECT(fubyte)
lbz %r3, 0(%r3)
CLEAR_FAULT_NO_CLOBBER(%r7)
EPILOGUE
+END_DIRECT(fubyte)
ENTRY_DIRECT(fuword16)
PROLOGUE
@@ -431,6 +445,7 @@ ENTRY_DIRECT(fuword16)
lhz %r3, 0(%r3)
CLEAR_FAULT_NO_CLOBBER(%r7)
EPILOGUE
+END_DIRECT(fuword16)
#ifndef __powerpc64__
ENTRY_DIRECT(fueword)
@@ -440,6 +455,7 @@ ENTRY_DIRECT(fueword)
stw %r0, 0(%r4)
CLEAR_FAULT(%r7)
EPILOGUE
+END_DIRECT(fueword)
#endif
ENTRY_DIRECT(fueword32)
PROLOGUE
@@ -448,6 +464,7 @@ ENTRY_DIRECT(fueword32)
stw %r0, 0(%r4)
CLEAR_FAULT(%r7)
EPILOGUE
+END_DIRECT(fueword32)
#ifdef __powerpc64__
ENTRY_DIRECT(fueword)
@@ -457,6 +474,7 @@ ENTRY_DIRECT(fueword)
std %r0, 0(%r4)
CLEAR_FAULT(%r7)
EPILOGUE
+END_DIRECT(fueword)
ENTRY_DIRECT(fueword64)
PROLOGUE
@@ -465,6 +483,7 @@ ENTRY_DIRECT(fueword64)
std %r0, 0(%r4)
CLEAR_FAULT(%r7)
EPILOGUE
+END_DIRECT(fueword64)
#endif
/*
@@ -495,6 +514,7 @@ ENTRY_DIRECT(fueword64)
ENTRY_DIRECT(casueword32)
CASUEWORD32(%r3, %r7)
+END_DIRECT(casueword32)
#ifdef __powerpc64__
#define CASUEWORD64(raddr, rpcb) ;\
@@ -520,20 +540,25 @@ ENTRY_DIRECT(casueword32)
ENTRY_DIRECT(casueword)
CASUEWORD64(%r3, %r7)
+END_DIRECT(casueword)
ENTRY_DIRECT(casueword64)
CASUEWORD64(%r3, %r7)
+END_DIRECT(casueword64)
#else
ENTRY_DIRECT(casueword)
CASUEWORD32(%r3, %r7)
+END_DIRECT(casueword)
#endif
_NAKED_ENTRY(fusufault)
CLEAR_FAULT_NO_CLOBBER(%r7)
li %r3, -1
EPILOGUE
+_END(fusufault)
_NAKED_ENTRY(copy_fault)
CLEAR_FAULT_NO_CLOBBER(%r7)
li %r3, EFAULT
EPILOGUE
+_END(copy_fault)
diff --git a/sys/powerpc/powerpc/swtch32.S b/sys/powerpc/powerpc/swtch32.S
index 7950b60dc29c4..6ad781895dc3f 100644
--- a/sys/powerpc/powerpc/swtch32.S
+++ b/sys/powerpc/powerpc/swtch32.S
@@ -74,6 +74,7 @@ ENTRY(cpu_throw)
li %r14,0 /* Tell cpu_switchin not to release a thread */
b cpu_switchin
+END(cpu_throw)
/*
* void cpu_switch(struct thread *old,
@@ -193,6 +194,7 @@ blocked_loop:
*/
stwcx. %r1, 0, %r3
blr
+END(cpu_switch)
/*
* savectx(pcb)
@@ -206,6 +208,7 @@ ENTRY(savectx)
mflr %r4 /* Save the link register */
stw %r4,PCB_LR(%r3)
blr
+END(savectx)
/*
* fork_trampoline()
@@ -225,3 +228,4 @@ ENTRY(fork_trampoline)
mtspr SPR_SPEFSCR, %r3
#endif
b trapexit
+END(fork_trampoline)
diff --git a/sys/powerpc/powerpc/swtch64.S b/sys/powerpc/powerpc/swtch64.S
index 716bdf94a96ec..fe59a166f3cb4 100644
--- a/sys/powerpc/powerpc/swtch64.S
+++ b/sys/powerpc/powerpc/swtch64.S
@@ -81,6 +81,7 @@ ENTRY(cpu_throw)
li %r18,0 /* No old pcb flags. The old thread is extinguished. */
b cpu_switchin
+END(cpu_throw)
/*
* void cpu_switch(struct thread *old,
@@ -304,6 +305,7 @@ restore_tar:
*/
stdcx. %r1, 0, %r3
blr
+END(cpu_switch)
/*
* savectx(pcb)
@@ -338,6 +340,7 @@ ENTRY(savectx)
mflr %r4 /* Save the link register */
std %r4,PCB_LR(%r3)
blr
+END(savectx)
/*
* fork_trampoline()
@@ -358,3 +361,4 @@ ENTRY_NOPROF(fork_trampoline)
a frame pointer/saved LR */
bl trapexit
nop
+END(fork_trampoline)
diff --git a/sys/powerpc/ps3/ps3-hvcall.S b/sys/powerpc/ps3/ps3-hvcall.S
index 6a992648f7f44..49c808a265040 100644
--- a/sys/powerpc/ps3/ps3-hvcall.S
+++ b/sys/powerpc/ps3/ps3-hvcall.S
@@ -21,6 +21,7 @@ ASENTRY(lv1_allocate_memory)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_allocate_memory)
ASENTRY(lv1_write_htab_entry)
mflr %r0
@@ -33,6 +34,7 @@ ASENTRY(lv1_write_htab_entry)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_write_htab_entry)
ASENTRY(lv1_construct_virtual_address_space)
mflr %r0
@@ -51,6 +53,7 @@ ASENTRY(lv1_construct_virtual_address_space)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_construct_virtual_address_space)
ASENTRY(lv1_get_virtual_address_space_id_of_ppe)
mflr %r0
@@ -66,6 +69,7 @@ ASENTRY(lv1_get_virtual_address_space_id_of_ppe)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_get_virtual_address_space_id_of_ppe)
ASENTRY(lv1_query_logical_partition_address_region_info)
mflr %r0
@@ -93,6 +97,7 @@ ASENTRY(lv1_query_logical_partition_address_region_info)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_query_logical_partition_address_region_info)
ASENTRY(lv1_select_virtual_address_space)
mflr %r0
@@ -105,6 +110,7 @@ ASENTRY(lv1_select_virtual_address_space)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_select_virtual_address_space)
ASENTRY(lv1_pause)
mflr %r0
@@ -117,6 +123,7 @@ ASENTRY(lv1_pause)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_pause)
ASENTRY(lv1_destruct_virtual_address_space)
mflr %r0
@@ -129,6 +136,7 @@ ASENTRY(lv1_destruct_virtual_address_space)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_destruct_virtual_address_space)
ASENTRY(lv1_configure_irq_state_bitmap)
mflr %r0
@@ -141,6 +149,7 @@ ASENTRY(lv1_configure_irq_state_bitmap)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_configure_irq_state_bitmap)
ASENTRY(lv1_connect_irq_plug_ext)
mflr %r0
@@ -153,6 +162,7 @@ ASENTRY(lv1_connect_irq_plug_ext)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_connect_irq_plug_ext)
ASENTRY(lv1_release_memory)
mflr %r0
@@ -165,6 +175,7 @@ ASENTRY(lv1_release_memory)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_release_memory)
ASENTRY(lv1_put_iopte)
mflr %r0
@@ -177,6 +188,7 @@ ASENTRY(lv1_put_iopte)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_put_iopte)
ASENTRY(lv1_disconnect_irq_plug_ext)
mflr %r0
@@ -189,6 +201,7 @@ ASENTRY(lv1_disconnect_irq_plug_ext)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_disconnect_irq_plug_ext)
ASENTRY(lv1_construct_event_receive_port)
mflr %r0
@@ -204,6 +217,7 @@ ASENTRY(lv1_construct_event_receive_port)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_construct_event_receive_port)
ASENTRY(lv1_destruct_event_receive_port)
mflr %r0
@@ -216,6 +230,7 @@ ASENTRY(lv1_destruct_event_receive_port)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_destruct_event_receive_port)
ASENTRY(lv1_send_event_locally)
mflr %r0
@@ -228,6 +243,7 @@ ASENTRY(lv1_send_event_locally)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_send_event_locally)
ASENTRY(lv1_end_of_interrupt)
mflr %r0
@@ -240,6 +256,7 @@ ASENTRY(lv1_end_of_interrupt)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_end_of_interrupt)
ASENTRY(lv1_connect_irq_plug)
mflr %r0
@@ -252,6 +269,7 @@ ASENTRY(lv1_connect_irq_plug)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_connect_irq_plug)
ASENTRY(lv1_disconnect_irq_plus)
mflr %r0
@@ -264,6 +282,7 @@ ASENTRY(lv1_disconnect_irq_plus)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_disconnect_irq_plus)
ASENTRY(lv1_end_of_interrupt_ext)
mflr %r0
@@ -276,6 +295,7 @@ ASENTRY(lv1_end_of_interrupt_ext)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_end_of_interrupt_ext)
ASENTRY(lv1_did_update_interrupt_mask)
mflr %r0
@@ -288,6 +308,7 @@ ASENTRY(lv1_did_update_interrupt_mask)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_did_update_interrupt_mask)
ASENTRY(lv1_shutdown_logical_partition)
mflr %r0
@@ -300,6 +321,7 @@ ASENTRY(lv1_shutdown_logical_partition)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_shutdown_logical_partition)
ASENTRY(lv1_destruct_logical_spe)
mflr %r0
@@ -312,6 +334,7 @@ ASENTRY(lv1_destruct_logical_spe)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_destruct_logical_spe)
ASENTRY(lv1_construct_logical_spe)
mflr %r0
@@ -347,6 +370,7 @@ ASENTRY(lv1_construct_logical_spe)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_construct_logical_spe)
ASENTRY(lv1_set_spe_interrupt_mask)
mflr %r0
@@ -359,6 +383,7 @@ ASENTRY(lv1_set_spe_interrupt_mask)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_set_spe_interrupt_mask)
ASENTRY(lv1_disable_logical_spe)
mflr %r0
@@ -371,6 +396,7 @@ ASENTRY(lv1_disable_logical_spe)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_disable_logical_spe)
ASENTRY(lv1_clear_spe_interrupt_status)
mflr %r0
@@ -383,6 +409,7 @@ ASENTRY(lv1_clear_spe_interrupt_status)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_clear_spe_interrupt_status)
ASENTRY(lv1_get_spe_interrupt_status)
mflr %r0
@@ -398,6 +425,7 @@ ASENTRY(lv1_get_spe_interrupt_status)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_get_spe_interrupt_status)
ASENTRY(lv1_get_logical_ppe_id)
mflr %r0
@@ -413,6 +441,7 @@ ASENTRY(lv1_get_logical_ppe_id)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_get_logical_ppe_id)
ASENTRY(lv1_get_logical_partition_id)
mflr %r0
@@ -428,6 +457,7 @@ ASENTRY(lv1_get_logical_partition_id)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_get_logical_partition_id)
ASENTRY(lv1_get_spe_irq_outlet)
mflr %r0
@@ -443,6 +473,7 @@ ASENTRY(lv1_get_spe_irq_outlet)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_get_spe_irq_outlet)
ASENTRY(lv1_set_spe_privilege_state_area_1_register)
mflr %r0
@@ -455,6 +486,7 @@ ASENTRY(lv1_set_spe_privilege_state_area_1_register)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_set_spe_privilege_state_area_1_register)
ASENTRY(lv1_get_repository_node_value)
mflr %r0
@@ -473,6 +505,7 @@ ASENTRY(lv1_get_repository_node_value)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_get_repository_node_value)
ASENTRY(lv1_read_htab_entries)
mflr %r0
@@ -500,6 +533,7 @@ ASENTRY(lv1_read_htab_entries)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_read_htab_entries)
ASENTRY(lv1_set_dabr)
mflr %r0
@@ -512,6 +546,7 @@ ASENTRY(lv1_set_dabr)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_set_dabr)
ASENTRY(lv1_allocate_io_segment)
mflr %r0
@@ -527,6 +562,7 @@ ASENTRY(lv1_allocate_io_segment)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_allocate_io_segment)
ASENTRY(lv1_release_io_segment)
mflr %r0
@@ -539,6 +575,7 @@ ASENTRY(lv1_release_io_segment)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_release_io_segment)
ASENTRY(lv1_construct_io_irq_outlet)
mflr %r0
@@ -554,6 +591,7 @@ ASENTRY(lv1_construct_io_irq_outlet)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_construct_io_irq_outlet)
ASENTRY(lv1_destruct_io_irq_outlet)
mflr %r0
@@ -566,6 +604,7 @@ ASENTRY(lv1_destruct_io_irq_outlet)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_destruct_io_irq_outlet)
ASENTRY(lv1_map_htab)
mflr %r0
@@ -581,6 +620,7 @@ ASENTRY(lv1_map_htab)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_map_htab)
ASENTRY(lv1_unmap_htab)
mflr %r0
@@ -593,6 +633,7 @@ ASENTRY(lv1_unmap_htab)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_unmap_htab)
ASENTRY(lv1_get_version_info)
mflr %r0
@@ -608,6 +649,7 @@ ASENTRY(lv1_get_version_info)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_get_version_info)
ASENTRY(lv1_insert_htab_entry)
mflr %r0
@@ -630,6 +672,7 @@ ASENTRY(lv1_insert_htab_entry)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_insert_htab_entry)
ASENTRY(lv1_read_virtual_uart)
mflr %r0
@@ -645,6 +688,7 @@ ASENTRY(lv1_read_virtual_uart)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_read_virtual_uart)
ASENTRY(lv1_write_virtual_uart)
mflr %r0
@@ -660,6 +704,7 @@ ASENTRY(lv1_write_virtual_uart)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_write_virtual_uart)
ASENTRY(lv1_set_virtual_uart_param)
mflr %r0
@@ -672,6 +717,7 @@ ASENTRY(lv1_set_virtual_uart_param)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_set_virtual_uart_param)
ASENTRY(lv1_get_virtual_uart_param)
mflr %r0
@@ -687,6 +733,7 @@ ASENTRY(lv1_get_virtual_uart_param)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_get_virtual_uart_param)
ASENTRY(lv1_configure_virtual_uart)
mflr %r0
@@ -702,6 +749,7 @@ ASENTRY(lv1_configure_virtual_uart)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_configure_virtual_uart)
ASENTRY(lv1_open_device)
mflr %r0
@@ -714,6 +762,7 @@ ASENTRY(lv1_open_device)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_open_device)
ASENTRY(lv1_close_device)
mflr %r0
@@ -726,6 +775,7 @@ ASENTRY(lv1_close_device)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_close_device)
ASENTRY(lv1_map_device_mmio_region)
mflr %r0
@@ -741,6 +791,7 @@ ASENTRY(lv1_map_device_mmio_region)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_map_device_mmio_region)
ASENTRY(lv1_unmap_device_mmio_region)
mflr %r0
@@ -753,6 +804,7 @@ ASENTRY(lv1_unmap_device_mmio_region)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_unmap_device_mmio_region)
ASENTRY(lv1_allocate_device_dma_region)
mflr %r0
@@ -768,6 +820,7 @@ ASENTRY(lv1_allocate_device_dma_region)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_allocate_device_dma_region)
ASENTRY(lv1_free_device_dma_region)
mflr %r0
@@ -780,6 +833,7 @@ ASENTRY(lv1_free_device_dma_region)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_free_device_dma_region)
ASENTRY(lv1_map_device_dma_region)
mflr %r0
@@ -792,6 +846,7 @@ ASENTRY(lv1_map_device_dma_region)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_map_device_dma_region)
ASENTRY(lv1_unmap_device_dma_region)
mflr %r0
@@ -804,6 +859,7 @@ ASENTRY(lv1_unmap_device_dma_region)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_unmap_device_dma_region)
ASENTRY(lv1_read_pci_config)
mflr %r0
@@ -819,6 +875,7 @@ ASENTRY(lv1_read_pci_config)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_read_pci_config)
ASENTRY(lv1_write_pci_config)
mflr %r0
@@ -831,6 +888,7 @@ ASENTRY(lv1_write_pci_config)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_write_pci_config)
ASENTRY(lv1_net_add_multicast_address)
mflr %r0
@@ -843,6 +901,7 @@ ASENTRY(lv1_net_add_multicast_address)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_net_add_multicast_address)
ASENTRY(lv1_net_remove_multicast_address)
mflr %r0
@@ -855,6 +914,7 @@ ASENTRY(lv1_net_remove_multicast_address)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_net_remove_multicast_address)
ASENTRY(lv1_net_start_tx_dma)
mflr %r0
@@ -867,6 +927,7 @@ ASENTRY(lv1_net_start_tx_dma)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_net_start_tx_dma)
ASENTRY(lv1_net_stop_tx_dma)
mflr %r0
@@ -879,6 +940,7 @@ ASENTRY(lv1_net_stop_tx_dma)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_net_stop_tx_dma)
ASENTRY(lv1_net_start_rx_dma)
mflr %r0
@@ -891,6 +953,7 @@ ASENTRY(lv1_net_start_rx_dma)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_net_start_rx_dma)
ASENTRY(lv1_net_stop_rx_dma)
mflr %r0
@@ -903,6 +966,7 @@ ASENTRY(lv1_net_stop_rx_dma)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_net_stop_rx_dma)
ASENTRY(lv1_net_set_interrupt_status_indicator)
mflr %r0
@@ -915,6 +979,7 @@ ASENTRY(lv1_net_set_interrupt_status_indicator)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_net_set_interrupt_status_indicator)
ASENTRY(lv1_net_set_interrupt_mask)
mflr %r0
@@ -927,6 +992,7 @@ ASENTRY(lv1_net_set_interrupt_mask)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_net_set_interrupt_mask)
ASENTRY(lv1_net_control)
mflr %r0
@@ -945,6 +1011,7 @@ ASENTRY(lv1_net_control)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_net_control)
ASENTRY(lv1_connect_interrupt_event_receive_port)
mflr %r0
@@ -957,6 +1024,7 @@ ASENTRY(lv1_connect_interrupt_event_receive_port)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_connect_interrupt_event_receive_port)
ASENTRY(lv1_disconnect_interrupt_event_receive_port)
mflr %r0
@@ -969,6 +1037,7 @@ ASENTRY(lv1_disconnect_interrupt_event_receive_port)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_disconnect_interrupt_event_receive_port)
ASENTRY(lv1_deconfigure_virtual_uart_irq)
mflr %r0
@@ -981,6 +1050,7 @@ ASENTRY(lv1_deconfigure_virtual_uart_irq)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_deconfigure_virtual_uart_irq)
ASENTRY(lv1_enable_logical_spe)
mflr %r0
@@ -993,6 +1063,7 @@ ASENTRY(lv1_enable_logical_spe)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_enable_logical_spe)
ASENTRY(lv1_gpu_open)
mflr %r0
@@ -1005,6 +1076,7 @@ ASENTRY(lv1_gpu_open)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_gpu_open)
ASENTRY(lv1_gpu_close)
mflr %r0
@@ -1017,6 +1089,7 @@ ASENTRY(lv1_gpu_close)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_gpu_close)
ASENTRY(lv1_gpu_device_map)
mflr %r0
@@ -1035,6 +1108,7 @@ ASENTRY(lv1_gpu_device_map)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_gpu_device_map)
ASENTRY(lv1_gpu_device_unmap)
mflr %r0
@@ -1047,6 +1121,7 @@ ASENTRY(lv1_gpu_device_unmap)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_gpu_device_unmap)
ASENTRY(lv1_gpu_memory_allocate)
mflr %r0
@@ -1065,6 +1140,7 @@ ASENTRY(lv1_gpu_memory_allocate)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_gpu_memory_allocate)
ASENTRY(lv1_gpu_memory_free)
mflr %r0
@@ -1077,6 +1153,7 @@ ASENTRY(lv1_gpu_memory_free)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_gpu_memory_free)
ASENTRY(lv1_gpu_context_allocate)
mflr %r0
@@ -1104,6 +1181,7 @@ ASENTRY(lv1_gpu_context_allocate)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_gpu_context_allocate)
ASENTRY(lv1_gpu_context_free)
mflr %r0
@@ -1116,6 +1194,7 @@ ASENTRY(lv1_gpu_context_free)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_gpu_context_free)
ASENTRY(lv1_gpu_context_iomap)
mflr %r0
@@ -1128,6 +1207,7 @@ ASENTRY(lv1_gpu_context_iomap)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_gpu_context_iomap)
ASENTRY(lv1_gpu_context_attribute)
mflr %r0
@@ -1140,6 +1220,7 @@ ASENTRY(lv1_gpu_context_attribute)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_gpu_context_attribute)
ASENTRY(lv1_gpu_context_intr)
mflr %r0
@@ -1155,6 +1236,7 @@ ASENTRY(lv1_gpu_context_intr)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_gpu_context_intr)
ASENTRY(lv1_gpu_attribute)
mflr %r0
@@ -1167,6 +1249,7 @@ ASENTRY(lv1_gpu_attribute)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_gpu_attribute)
ASENTRY(lv1_get_rtc)
mflr %r0
@@ -1185,6 +1268,7 @@ ASENTRY(lv1_get_rtc)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_get_rtc)
ASENTRY(lv1_storage_read)
mflr %r0
@@ -1200,6 +1284,7 @@ ASENTRY(lv1_storage_read)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_storage_read)
ASENTRY(lv1_storage_write)
mflr %r0
@@ -1215,6 +1300,7 @@ ASENTRY(lv1_storage_write)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_storage_write)
ASENTRY(lv1_storage_send_device_command)
mflr %r0
@@ -1230,6 +1316,7 @@ ASENTRY(lv1_storage_send_device_command)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_storage_send_device_command)
ASENTRY(lv1_storage_get_async_status)
mflr %r0
@@ -1248,6 +1335,7 @@ ASENTRY(lv1_storage_get_async_status)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_storage_get_async_status)
ASENTRY(lv1_storage_check_async_status)
mflr %r0
@@ -1263,6 +1351,7 @@ ASENTRY(lv1_storage_check_async_status)
ld %r0,16(%r1)
mtlr %r0
blr
+ASEND(lv1_storage_check_async_status)
ASENTRY(lv1_panic)
mflr %r0
@@ -1275,4 +1364,4 @@ ASENTRY(lv1_panic)
ld %r0,16(%r1)
mtlr %r0
blr
-
+ASEND(lv1_panic)
diff --git a/sys/powerpc/pseries/phyp-hvcall.S b/sys/powerpc/pseries/phyp-hvcall.S
index d6b5152b0d981..6686c476642db 100644
--- a/sys/powerpc/pseries/phyp-hvcall.S
+++ b/sys/powerpc/pseries/phyp-hvcall.S
@@ -47,6 +47,7 @@ ASENTRY(phyp_hcall)
ld %r0,16(%r1)
mtlr %r0
blr /* return r3 = status */
+ASEND(phyp_hcall)
/*
* PFT HV calls take a special ABI (see PAPR 14.5.4.1)
@@ -72,4 +73,4 @@ ASENTRY(phyp_pft_hcall)
ld %r0,16(%r1)
mtlr %r0
blr /* return r3 = status */
-
+ASEND(phyp_pft_hcall)