Index: lib/libc/powerpc/SYS.h =================================================================== --- lib/libc/powerpc/SYS.h +++ lib/libc/powerpc/SYS.h @@ -58,7 +58,8 @@ 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 @@ WEAK_REFERENCE(__sys_##name, _##name); \ _SYSCALL(name); \ bnslr; \ - b CNAME(HIDENAME(cerror)) + b CNAME(HIDENAME(cerror)); \ +END(__sys_##name) Index: lib/libc/powerpc64/SYS.h =================================================================== --- lib/libc/powerpc64/SYS.h +++ lib/libc/powerpc64/SYS.h @@ -74,7 +74,8 @@ addi %r1,%r1,48; \ ld %r0,16(%r1); \ mtlr %r0; \ - blr; + blr; \ +END(__sys_##name) #define RSYSCALL(name) \ .text; \ @@ -93,4 +94,5 @@ addi %r1,%r1,48; \ ld %r0,16(%r1); \ mtlr %r0; \ - blr; + blr; \ +END(__sys_##name) Index: lib/libc/powerpc64/sys/cerror.S =================================================================== --- lib/libc/powerpc64/sys/cerror.S +++ lib/libc/powerpc64/sys/cerror.S @@ -56,5 +56,6 @@ li %r3,-1 li %r4,-1 blr +END(HIDENAME(cerror)) .section .note.GNU-stack,"",%progbits Index: lib/libthr/arch/i386/i386/_umtx_op_err.S =================================================================== --- lib/libthr/arch/i386/i386/_umtx_op_err.S +++ 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) Index: lib/msun/i387/e_logf.S =================================================================== --- lib/msun/i387/e_logf.S +++ lib/msun/i387/e_logf.S @@ -13,5 +13,6 @@ flds 4(%esp) fyl2x ret +END(logf) .section .note.GNU-stack,"",%progbits Index: lib/msun/i387/e_remainderl.S =================================================================== --- lib/msun/i387/e_remainderl.S +++ lib/msun/i387/e_remainderl.S @@ -46,5 +46,6 @@ jp 1b fstp %st(1) ret +END(remainderl) .section .note.GNU-stack,"",%progbits Index: lib/msun/i387/e_sqrtl.S =================================================================== --- lib/msun/i387/e_sqrtl.S +++ lib/msun/i387/e_sqrtl.S @@ -40,5 +40,6 @@ fldt 4(%esp) fsqrt ret +END(sqrtl) .section .note.GNU-stack,"",%progbits Index: lib/msun/i387/s_llrintl.S =================================================================== --- lib/msun/i387/s_llrintl.S +++ lib/msun/i387/s_llrintl.S @@ -34,5 +34,6 @@ popl %eax popl %edx ret +END(llrintl) .section .note.GNU-stack,"",%progbits Index: lib/msun/i387/s_logbl.S =================================================================== --- lib/msun/i387/s_logbl.S +++ lib/msun/i387/s_logbl.S @@ -41,5 +41,6 @@ fxtract fstp %st ret +END(logbl) .section .note.GNU-stack,"",%progbits Index: lib/msun/i387/s_lrintl.S =================================================================== --- lib/msun/i387/s_lrintl.S +++ lib/msun/i387/s_lrintl.S @@ -33,5 +33,6 @@ fistpl (%esp) popl %eax ret +END(lrintl) .section .note.GNU-stack,"",%progbits Index: lib/msun/i387/s_remquol.S =================================================================== --- lib/msun/i387/s_remquol.S +++ lib/msun/i387/s_remquol.S @@ -61,5 +61,6 @@ movl 28(%esp),%ecx movl %eax,(%ecx) ret +END(remquol) .section .note.GNU-stack,"",%progbits Index: lib/msun/i387/s_rintl.S =================================================================== --- lib/msun/i387/s_rintl.S +++ lib/msun/i387/s_rintl.S @@ -40,5 +40,6 @@ fldt 4(%esp) frndint ret +END(rintl) .section .note.GNU-stack,"",%progbits Index: libexec/rtld-elf/aarch64/rtld_start.S =================================================================== --- libexec/rtld-elf/aarch64/rtld_start.S +++ libexec/rtld-elf/aarch64/rtld_start.S @@ -55,7 +55,6 @@ * x17 = &_rtld_bind_start */ ENTRY(_rtld_bind_start) - .cfi_startproc mov x17, sp /* Save frame pointer and SP */ @@ -114,7 +113,6 @@ /* Call into the correct function */ br x16 - .cfi_endproc END(_rtld_bind_start) /* @@ -128,10 +126,8 @@ * 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 @@ * 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 @@ ldr x1, [sp], #16 .cfi_adjust_cfa_offset -16 - .cfi_endproc ret END(_rtld_tlsdesc_undef) @@ -160,8 +154,6 @@ * 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 @@ ldp x3, x4, [sp, #16] ldp x1, x2, [sp], #(2 * 16) .cfi_adjust_cfa_offset -2 * 16 - .cfi_endproc ret END(_rtld_tlsdesc_dynamic) Index: libexec/rtld-elf/powerpc/rtld_start.S =================================================================== --- libexec/rtld-elf/powerpc/rtld_start.S +++ libexec/rtld-elf/powerpc/rtld_start.S @@ -101,6 +101,7 @@ li %r0,1 /* _exit() */ sc +_END(.rtld_start) #ifdef __SPE__ /* stack space for 30 GPRs + SPEFSCR/ACC/lr/cr */ @@ -142,6 +143,7 @@ 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 @@ addi %r1,%r1,STACK_SIZE # restore stack bctr # jump to target +_END(_rtld_bind_start) /* @@ -284,6 +287,7 @@ 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 @@ 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 @@ lwz %r11,0(%r11) # lwz 11,jmptab@l(11) mtctr %r11 bctr # (*jmptab[index])() +_END(_rtld_powerpc_pltcall) .section .note.GNU-stack,"",%progbits Index: libexec/rtld-elf/powerpc64/rtld_start.S =================================================================== --- libexec/rtld-elf/powerpc64/rtld_start.S +++ libexec/rtld-elf/powerpc64/rtld_start.S @@ -113,6 +113,7 @@ li %r0,1 /* _exit() */ sc +_END(_rtld_start) /* * _rtld_bind_start() @@ -175,5 +176,6 @@ mtlr %r0 bctr # jump to target +_END(_rtld_bind_start) .section .note.GNU-stack,"",%progbits Index: stand/libsa/powerpc/_setjmp.S =================================================================== --- stand/libsa/powerpc/_setjmp.S +++ stand/libsa/powerpc/_setjmp.S @@ -76,6 +76,7 @@ /* f14-f31, fpscr */ li 3, 0 blr +ASEND(_setjmp) .extern sigsetmask @@ -113,3 +114,4 @@ /* f14-f31, fpscr */ mr 3, 4 blr +ASEND(_longjmp) Index: stand/powerpc/kboot/host_syscall.S =================================================================== --- stand/powerpc/kboot/host_syscall.S +++ stand/powerpc/kboot/host_syscall.S @@ -13,11 +13,13 @@ 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 @@ 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 @@ 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) Index: stand/powerpc/uboot/start.S =================================================================== --- stand/powerpc/uboot/start.S +++ stand/powerpc/uboot/start.S @@ -85,6 +85,7 @@ lwz %r30, 12(%r1) mr %r1, %r11 blr +END(syscall) /* * Data section Index: sys/arm64/include/asm.h =================================================================== --- sys/arm64/include/asm.h +++ 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) \ Index: sys/arm64/linux/linux_locore.asm =================================================================== --- sys/arm64/linux/linux_locore.asm +++ sys/arm64/linux/linux_locore.asm @@ -47,17 +47,21 @@ 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) Index: sys/arm64/linux/linux_support.s =================================================================== --- sys/arm64/linux/linux_support.s +++ 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) Index: sys/crypto/des/arch/i386/des_enc.S =================================================================== --- sys/crypto/des/arch/i386/des_enc.S +++ sys/crypto/des/arch/i386/des_enc.S @@ -1354,8 +1354,7 @@ 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 @@ 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 @@ 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 @@ 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) Index: sys/i386/bios/smapi_bios.S =================================================================== --- sys/i386/bios/smapi_bios.S +++ sys/i386/bios/smapi_bios.S @@ -38,3 +38,4 @@ leave ret +END(smapi32) Index: sys/i386/include/asm.h =================================================================== --- sys/i386/include/asm.h +++ 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) Index: sys/powerpc/aim/locore.S =================================================================== --- sys/powerpc/aim/locore.S +++ sys/powerpc/aim/locore.S @@ -13,3 +13,4 @@ ENTRY(get_spr) mfspr %r3, 0 blr +END(get_spr) Index: sys/powerpc/aim/locore64.S =================================================================== --- sys/powerpc/aim/locore64.S +++ sys/powerpc/aim/locore64.S @@ -203,6 +203,7 @@ /* Unreachable */ b . +_END(__start) ASENTRY_NOPROF(__restartkernel_virtual) /* @@ -254,6 +255,7 @@ addi %r14, %r14, 1 cmpdi %r14, 16 blt 1b +ASEND(__restartkernel_virtual) ASENTRY_NOPROF(__restartkernel) /* @@ -270,5 +272,6 @@ rfid 2: bl __start nop +ASEND(__restartkernel) #include Index: sys/powerpc/aim/trap_subr64.S =================================================================== --- sys/powerpc/aim/trap_subr64.S +++ sys/powerpc/aim/trap_subr64.S @@ -957,6 +957,7 @@ dbleave: FRAME_LEAVE(PC_DBSAVE) rfid +ASEND(breakpoint) /* * In case of KDB we want a separate trap catcher for it Index: sys/powerpc/booke/locore.S =================================================================== --- sys/powerpc/booke/locore.S +++ sys/powerpc/booke/locore.S @@ -834,6 +834,7 @@ andi. %r3, %r3, L1CSR0_DCFI bne 1b blr +END(dcache_inval) ENTRY(dcache_disable) /* Disable d-cache */ @@ -846,6 +847,7 @@ mtspr SPR_L1CSR0, %r3 isync blr +END(dcache_disable) ENTRY(dcache_enable) /* Enable d-cache */ @@ -857,6 +859,7 @@ mtspr SPR_L1CSR0, %r3 isync blr +END(dcache_enable) ENTRY(icache_inval) /* Invalidate i-cache */ @@ -869,6 +872,7 @@ andi. %r3, %r3, L1CSR1_ICFI bne 1b blr +END(icache_inval) ENTRY(icache_disable) /* Disable i-cache */ @@ -880,6 +884,7 @@ mtspr SPR_L1CSR1, %r3 isync blr +END(icache_disable) ENTRY(icache_enable) /* Enable i-cache */ @@ -890,6 +895,7 @@ mtspr SPR_L1CSR1, %r3 isync blr +END(icache_enable) /* * L2 cache disable/enable/inval sequences for E500mc. @@ -906,6 +912,7 @@ andis. %r3, %r3, L2CSR0_L2FI@h bne 1b blr +END(l2cache_inval) ENTRY(l2cache_enable) mfspr %r3, SPR_L2CSR0 @@ -914,6 +921,7 @@ mtspr SPR_L2CSR0, %r3 isync blr +END(l2cache_enable) /* * Branch predictor setup. @@ -929,6 +937,7 @@ 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 @@ /* Note: The spr number is patched at runtime */ mfspr %r3, 0 blr +END(get_spr) /************************************************************************/ /* Data section */ Index: sys/powerpc/booke/trap_subr.S =================================================================== --- sys/powerpc/booke/trap_subr.S +++ sys/powerpc/booke/trap_subr.S @@ -1097,6 +1097,7 @@ dbleave: FRAME_LEAVE(SPR_SRR0, SPR_SRR1) rfi +ASEND(breakpoint) #endif /* KDB */ #ifdef SMP @@ -1111,6 +1112,7 @@ isync msync blr +END(tlb_lock) ENTRY(tlb_unlock) isync @@ -1120,6 +1122,7 @@ isync msync blr +END(tlb_unlock) /* * TLB miss spin locks. For each CPU we have a reservation granule (32 bytes); Index: sys/powerpc/include/asm.h =================================================================== --- sys/powerpc/include/asm.h +++ 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 @@ .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 @@ .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 @@ .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 @@ # 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 Index: sys/powerpc/mambo/mambocall.S =================================================================== --- sys/powerpc/mambo/mambocall.S +++ sys/powerpc/mambo/mambocall.S @@ -36,4 +36,4 @@ */ .long 0x000EAEB0 blr - +ASEND(mambocall) Index: sys/powerpc/ofw/ofwcall32.S =================================================================== --- sys/powerpc/ofw/ofwcall32.S +++ sys/powerpc/ofw/ofwcall32.S @@ -120,6 +120,7 @@ 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 @@ lwz %r0,4(%r1) mtlr %r0 blr - +ASEND(rtascall) Index: sys/powerpc/ofw/ofwcall64.S =================================================================== --- sys/powerpc/ofw/ofwcall64.S +++ sys/powerpc/ofw/ofwcall64.S @@ -216,6 +216,7 @@ 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 @@ ld %r0,16(%r1) mtlr %r0 blr - +ASEND(rtascall) Index: sys/powerpc/powernv/opalcall.S =================================================================== --- sys/powerpc/powernv/opalcall.S +++ sys/powerpc/powernv/opalcall.S @@ -129,4 +129,4 @@ /* And return */ blr - +ASEND(opal_call) Index: sys/powerpc/powerpc/cpu_subr64.S =================================================================== --- sys/powerpc/powerpc/cpu_subr64.S +++ sys/powerpc/powerpc/cpu_subr64.S @@ -96,3 +96,4 @@ bne 2b nap b . +END(enter_idle_powerx) Index: sys/powerpc/powerpc/setjmp.S =================================================================== --- sys/powerpc/powerpc/setjmp.S +++ sys/powerpc/powerpc/setjmp.S @@ -75,6 +75,7 @@ /* f14-f31, fpscr */ li 3, 0 blr +ASEND(setjmp) .extern sigsetmask @@ -112,3 +113,4 @@ /* f14-f31, fpscr */ mr 3, 4 blr +ASEND(longjmp) Index: sys/powerpc/powerpc/support.S =================================================================== --- sys/powerpc/powerpc/support.S +++ 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 @@ /* done */ .Lend: blr +END(bcopy_generic) /* * copyout(from_kernel, to_user, len) @@ -332,6 +335,7 @@ nop CLEAR_FAULT(%r7) EPILOGUE +END_DIRECT(copyout) /* * copyin(from_user, to_kernel, len) @@ -344,6 +348,8 @@ 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 @@ 3: CLEAR_FAULT_NO_CLOBBER(%r7) EPILOGUE +END_DIRECT(copyinstr) ENTRY_DIRECT(subyte) PROLOGUE @@ -386,6 +393,7 @@ stb %r4, 0(%r3) CLEAR_FAULT(%r7) EPILOGUE +END_DIRECT(subyte) #ifndef __powerpc64__ ENTRY_DIRECT(suword) @@ -394,6 +402,7 @@ stw %r4, 0(%r3) CLEAR_FAULT(%r7) EPILOGUE +END_DIRECT(suword) #endif ENTRY_DIRECT(suword32) @@ -402,6 +411,7 @@ stw %r4, 0(%r3) CLEAR_FAULT(%r7) EPILOGUE +END_DIRECT(suword32) #ifdef __powerpc64__ ENTRY_DIRECT(suword64) @@ -410,12 +420,15 @@ 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 @@ lbz %r3, 0(%r3) CLEAR_FAULT_NO_CLOBBER(%r7) EPILOGUE +END_DIRECT(fubyte) ENTRY_DIRECT(fuword16) PROLOGUE @@ -431,6 +445,7 @@ lhz %r3, 0(%r3) CLEAR_FAULT_NO_CLOBBER(%r7) EPILOGUE +END_DIRECT(fuword16) #ifndef __powerpc64__ ENTRY_DIRECT(fueword) @@ -440,6 +455,7 @@ stw %r0, 0(%r4) CLEAR_FAULT(%r7) EPILOGUE +END_DIRECT(fueword) #endif ENTRY_DIRECT(fueword32) PROLOGUE @@ -448,6 +464,7 @@ stw %r0, 0(%r4) CLEAR_FAULT(%r7) EPILOGUE +END_DIRECT(fueword32) #ifdef __powerpc64__ ENTRY_DIRECT(fueword) @@ -457,6 +474,7 @@ std %r0, 0(%r4) CLEAR_FAULT(%r7) EPILOGUE +END_DIRECT(fueword) ENTRY_DIRECT(fueword64) PROLOGUE @@ -465,6 +483,7 @@ std %r0, 0(%r4) CLEAR_FAULT(%r7) EPILOGUE +END_DIRECT(fueword64) #endif /* @@ -495,6 +514,7 @@ ENTRY_DIRECT(casueword32) CASUEWORD32(%r3, %r7) +END_DIRECT(casueword32) #ifdef __powerpc64__ #define CASUEWORD64(raddr, rpcb) ;\ @@ -520,20 +540,25 @@ 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) Index: sys/powerpc/powerpc/swtch32.S =================================================================== --- sys/powerpc/powerpc/swtch32.S +++ sys/powerpc/powerpc/swtch32.S @@ -74,6 +74,7 @@ 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 @@ */ stwcx. %r1, 0, %r3 blr +END(cpu_switch) /* * savectx(pcb) @@ -206,6 +208,7 @@ mflr %r4 /* Save the link register */ stw %r4,PCB_LR(%r3) blr +END(savectx) /* * fork_trampoline() @@ -225,3 +228,4 @@ mtspr SPR_SPEFSCR, %r3 #endif b trapexit +END(fork_trampoline) Index: sys/powerpc/powerpc/swtch64.S =================================================================== --- sys/powerpc/powerpc/swtch64.S +++ sys/powerpc/powerpc/swtch64.S @@ -81,6 +81,7 @@ 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 @@ */ stdcx. %r1, 0, %r3 blr +END(cpu_switch) /* * savectx(pcb) @@ -338,6 +340,7 @@ mflr %r4 /* Save the link register */ std %r4,PCB_LR(%r3) blr +END(savectx) /* * fork_trampoline() @@ -358,3 +361,4 @@ a frame pointer/saved LR */ bl trapexit nop +END(fork_trampoline) Index: sys/powerpc/ps3/ps3-hvcall.S =================================================================== --- sys/powerpc/ps3/ps3-hvcall.S +++ sys/powerpc/ps3/ps3-hvcall.S @@ -21,6 +21,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_allocate_memory) ASENTRY(lv1_write_htab_entry) mflr %r0 @@ -33,6 +34,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_write_htab_entry) ASENTRY(lv1_construct_virtual_address_space) mflr %r0 @@ -51,6 +53,7 @@ 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 @@ 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 @@ 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 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_select_virtual_address_space) ASENTRY(lv1_pause) mflr %r0 @@ -117,6 +123,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_pause) ASENTRY(lv1_destruct_virtual_address_space) mflr %r0 @@ -129,6 +136,7 @@ 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 @@ 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 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_connect_irq_plug_ext) ASENTRY(lv1_release_memory) mflr %r0 @@ -165,6 +175,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_release_memory) ASENTRY(lv1_put_iopte) mflr %r0 @@ -177,6 +188,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_put_iopte) ASENTRY(lv1_disconnect_irq_plug_ext) mflr %r0 @@ -189,6 +201,7 @@ 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 @@ 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 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_destruct_event_receive_port) ASENTRY(lv1_send_event_locally) mflr %r0 @@ -228,6 +243,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_send_event_locally) ASENTRY(lv1_end_of_interrupt) mflr %r0 @@ -240,6 +256,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_end_of_interrupt) ASENTRY(lv1_connect_irq_plug) mflr %r0 @@ -252,6 +269,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_connect_irq_plug) ASENTRY(lv1_disconnect_irq_plus) mflr %r0 @@ -264,6 +282,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_disconnect_irq_plus) ASENTRY(lv1_end_of_interrupt_ext) mflr %r0 @@ -276,6 +295,7 @@ 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 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_did_update_interrupt_mask) ASENTRY(lv1_shutdown_logical_partition) mflr %r0 @@ -300,6 +321,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_shutdown_logical_partition) ASENTRY(lv1_destruct_logical_spe) mflr %r0 @@ -312,6 +334,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_destruct_logical_spe) ASENTRY(lv1_construct_logical_spe) mflr %r0 @@ -347,6 +370,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_construct_logical_spe) ASENTRY(lv1_set_spe_interrupt_mask) mflr %r0 @@ -359,6 +383,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_set_spe_interrupt_mask) ASENTRY(lv1_disable_logical_spe) mflr %r0 @@ -371,6 +396,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_disable_logical_spe) ASENTRY(lv1_clear_spe_interrupt_status) mflr %r0 @@ -383,6 +409,7 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_get_repository_node_value) ASENTRY(lv1_read_htab_entries) mflr %r0 @@ -500,6 +533,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_read_htab_entries) ASENTRY(lv1_set_dabr) mflr %r0 @@ -512,6 +546,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_set_dabr) ASENTRY(lv1_allocate_io_segment) mflr %r0 @@ -527,6 +562,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_allocate_io_segment) ASENTRY(lv1_release_io_segment) mflr %r0 @@ -539,6 +575,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_release_io_segment) ASENTRY(lv1_construct_io_irq_outlet) mflr %r0 @@ -554,6 +591,7 @@ 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 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_destruct_io_irq_outlet) ASENTRY(lv1_map_htab) mflr %r0 @@ -581,6 +620,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_map_htab) ASENTRY(lv1_unmap_htab) mflr %r0 @@ -593,6 +633,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_unmap_htab) ASENTRY(lv1_get_version_info) mflr %r0 @@ -608,6 +649,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_get_version_info) ASENTRY(lv1_insert_htab_entry) mflr %r0 @@ -630,6 +672,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_insert_htab_entry) ASENTRY(lv1_read_virtual_uart) mflr %r0 @@ -645,6 +688,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_read_virtual_uart) ASENTRY(lv1_write_virtual_uart) mflr %r0 @@ -660,6 +704,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_write_virtual_uart) ASENTRY(lv1_set_virtual_uart_param) mflr %r0 @@ -672,6 +717,7 @@ 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 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_get_virtual_uart_param) ASENTRY(lv1_configure_virtual_uart) mflr %r0 @@ -702,6 +749,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_configure_virtual_uart) ASENTRY(lv1_open_device) mflr %r0 @@ -714,6 +762,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_open_device) ASENTRY(lv1_close_device) mflr %r0 @@ -726,6 +775,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_close_device) ASENTRY(lv1_map_device_mmio_region) mflr %r0 @@ -741,6 +791,7 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_unmap_device_dma_region) ASENTRY(lv1_read_pci_config) mflr %r0 @@ -819,6 +875,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_read_pci_config) ASENTRY(lv1_write_pci_config) mflr %r0 @@ -831,6 +888,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_write_pci_config) ASENTRY(lv1_net_add_multicast_address) mflr %r0 @@ -843,6 +901,7 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_net_set_interrupt_mask) ASENTRY(lv1_net_control) mflr %r0 @@ -945,6 +1011,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_net_control) ASENTRY(lv1_connect_interrupt_event_receive_port) mflr %r0 @@ -957,6 +1024,7 @@ 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 @@ 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 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_deconfigure_virtual_uart_irq) ASENTRY(lv1_enable_logical_spe) mflr %r0 @@ -993,6 +1063,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_enable_logical_spe) ASENTRY(lv1_gpu_open) mflr %r0 @@ -1005,6 +1076,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_gpu_open) ASENTRY(lv1_gpu_close) mflr %r0 @@ -1017,6 +1089,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_gpu_close) ASENTRY(lv1_gpu_device_map) mflr %r0 @@ -1035,6 +1108,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_gpu_device_map) ASENTRY(lv1_gpu_device_unmap) mflr %r0 @@ -1047,6 +1121,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_gpu_device_unmap) ASENTRY(lv1_gpu_memory_allocate) mflr %r0 @@ -1065,6 +1140,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_gpu_memory_allocate) ASENTRY(lv1_gpu_memory_free) mflr %r0 @@ -1077,6 +1153,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_gpu_memory_free) ASENTRY(lv1_gpu_context_allocate) mflr %r0 @@ -1104,6 +1181,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_gpu_context_allocate) ASENTRY(lv1_gpu_context_free) mflr %r0 @@ -1116,6 +1194,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_gpu_context_free) ASENTRY(lv1_gpu_context_iomap) mflr %r0 @@ -1128,6 +1207,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_gpu_context_iomap) ASENTRY(lv1_gpu_context_attribute) mflr %r0 @@ -1140,6 +1220,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_gpu_context_attribute) ASENTRY(lv1_gpu_context_intr) mflr %r0 @@ -1155,6 +1236,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_gpu_context_intr) ASENTRY(lv1_gpu_attribute) mflr %r0 @@ -1167,6 +1249,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_gpu_attribute) ASENTRY(lv1_get_rtc) mflr %r0 @@ -1185,6 +1268,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_get_rtc) ASENTRY(lv1_storage_read) mflr %r0 @@ -1200,6 +1284,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_storage_read) ASENTRY(lv1_storage_write) mflr %r0 @@ -1215,6 +1300,7 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_storage_write) ASENTRY(lv1_storage_send_device_command) mflr %r0 @@ -1230,6 +1316,7 @@ 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 @@ 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 @@ ld %r0,16(%r1) mtlr %r0 blr +ASEND(lv1_storage_check_async_status) ASENTRY(lv1_panic) mflr %r0 @@ -1275,4 +1364,4 @@ ld %r0,16(%r1) mtlr %r0 blr - +ASEND(lv1_panic) Index: sys/powerpc/pseries/phyp-hvcall.S =================================================================== --- sys/powerpc/pseries/phyp-hvcall.S +++ sys/powerpc/pseries/phyp-hvcall.S @@ -47,6 +47,7 @@ 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 @@ ld %r0,16(%r1) mtlr %r0 blr /* return r3 = status */ - +ASEND(phyp_pft_hcall)