1#include <linux/linkage.h> 2#include <asm/export.h> 3 4 .text 5 .align 32 6ENTRY(__arch_hweight8) 7 ba,pt %xcc, __sw_hweight8 8 nop 9 nop 10ENDPROC(__arch_hweight8) 11EXPORT_SYMBOL(__arch_hweight8) 12 .section .popc_3insn_patch, "ax" 13 .word __arch_hweight8 14 sllx %o0, 64-8, %g1 15 retl 16 popc %g1, %o0 17 .previous 18 19ENTRY(__arch_hweight16) 20 ba,pt %xcc, __sw_hweight16 21 nop 22 nop 23ENDPROC(__arch_hweight16) 24EXPORT_SYMBOL(__arch_hweight16) 25 .section .popc_3insn_patch, "ax" 26 .word __arch_hweight16 27 sllx %o0, 64-16, %g1 28 retl 29 popc %g1, %o0 30 .previous 31 32ENTRY(__arch_hweight32) 33 ba,pt %xcc, __sw_hweight32 34 nop 35 nop 36ENDPROC(__arch_hweight32) 37EXPORT_SYMBOL(__arch_hweight32) 38 .section .popc_3insn_patch, "ax" 39 .word __arch_hweight32 40 sllx %o0, 64-32, %g1 41 retl 42 popc %g1, %o0 43 .previous 44 45ENTRY(__arch_hweight64) 46 ba,pt %xcc, __sw_hweight64 47 nop 48 nop 49ENDPROC(__arch_hweight64) 50EXPORT_SYMBOL(__arch_hweight64) 51 .section .popc_3insn_patch, "ax" 52 .word __arch_hweight64 53 retl 54 popc %o0, %o0 55 nop 56 .previous 57