0001
0002 #include <linux/linkage.h>
0003 #include <asm/export.h>
0004
0005 .text
0006 .align 32
0007 ENTRY(__arch_hweight8)
0008 sethi %hi(__sw_hweight8), %g1
0009 jmpl %g1 + %lo(__sw_hweight8), %g0
0010 nop
0011 ENDPROC(__arch_hweight8)
0012 EXPORT_SYMBOL(__arch_hweight8)
0013 .section .popc_3insn_patch, "ax"
0014 .word __arch_hweight8
0015 sllx %o0, 64-8, %g1
0016 retl
0017 popc %g1, %o0
0018 .previous
0019
0020 ENTRY(__arch_hweight16)
0021 sethi %hi(__sw_hweight16), %g1
0022 jmpl %g1 + %lo(__sw_hweight16), %g0
0023 nop
0024 ENDPROC(__arch_hweight16)
0025 EXPORT_SYMBOL(__arch_hweight16)
0026 .section .popc_3insn_patch, "ax"
0027 .word __arch_hweight16
0028 sllx %o0, 64-16, %g1
0029 retl
0030 popc %g1, %o0
0031 .previous
0032
0033 ENTRY(__arch_hweight32)
0034 sethi %hi(__sw_hweight32), %g1
0035 jmpl %g1 + %lo(__sw_hweight32), %g0
0036 nop
0037 ENDPROC(__arch_hweight32)
0038 EXPORT_SYMBOL(__arch_hweight32)
0039 .section .popc_3insn_patch, "ax"
0040 .word __arch_hweight32
0041 sllx %o0, 64-32, %g1
0042 retl
0043 popc %g1, %o0
0044 .previous
0045
0046 ENTRY(__arch_hweight64)
0047 sethi %hi(__sw_hweight64), %g1
0048 jmpl %g1 + %lo(__sw_hweight64), %g0
0049 nop
0050 ENDPROC(__arch_hweight64)
0051 EXPORT_SYMBOL(__arch_hweight64)
0052 .section .popc_3insn_patch, "ax"
0053 .word __arch_hweight64
0054 retl
0055 popc %o0, %o0
0056 nop
0057 .previous