1 /* SPDX-License-Identifier: GPL-2.0 */ << 2 #include <linux/export.h> << 3 #include <linux/linkage.h> 1 #include <linux/linkage.h> >> 2 #include <asm/export.h> 4 3 5 .text 4 .text 6 .align 32 5 .align 32 7 ENTRY(__arch_hweight8) 6 ENTRY(__arch_hweight8) 8 sethi %hi(__sw_hweight8), %g1 7 sethi %hi(__sw_hweight8), %g1 9 jmpl %g1 + %lo(__sw_hweight8), %g0 8 jmpl %g1 + %lo(__sw_hweight8), %g0 10 nop 9 nop 11 ENDPROC(__arch_hweight8) 10 ENDPROC(__arch_hweight8) 12 EXPORT_SYMBOL(__arch_hweight8) 11 EXPORT_SYMBOL(__arch_hweight8) 13 .section .popc_3insn_patch, "ax 12 .section .popc_3insn_patch, "ax" 14 .word __arch_hweight8 13 .word __arch_hweight8 15 sllx %o0, 64-8, %g1 14 sllx %o0, 64-8, %g1 16 retl 15 retl 17 popc %g1, %o0 16 popc %g1, %o0 18 .previous 17 .previous 19 18 20 ENTRY(__arch_hweight16) 19 ENTRY(__arch_hweight16) 21 sethi %hi(__sw_hweight16), %g1 20 sethi %hi(__sw_hweight16), %g1 22 jmpl %g1 + %lo(__sw_hweight16), %g0 21 jmpl %g1 + %lo(__sw_hweight16), %g0 23 nop 22 nop 24 ENDPROC(__arch_hweight16) 23 ENDPROC(__arch_hweight16) 25 EXPORT_SYMBOL(__arch_hweight16) 24 EXPORT_SYMBOL(__arch_hweight16) 26 .section .popc_3insn_patch, "ax 25 .section .popc_3insn_patch, "ax" 27 .word __arch_hweight16 26 .word __arch_hweight16 28 sllx %o0, 64-16, %g1 27 sllx %o0, 64-16, %g1 29 retl 28 retl 30 popc %g1, %o0 29 popc %g1, %o0 31 .previous 30 .previous 32 31 33 ENTRY(__arch_hweight32) 32 ENTRY(__arch_hweight32) 34 sethi %hi(__sw_hweight32), %g1 33 sethi %hi(__sw_hweight32), %g1 35 jmpl %g1 + %lo(__sw_hweight32), %g0 34 jmpl %g1 + %lo(__sw_hweight32), %g0 36 nop 35 nop 37 ENDPROC(__arch_hweight32) 36 ENDPROC(__arch_hweight32) 38 EXPORT_SYMBOL(__arch_hweight32) 37 EXPORT_SYMBOL(__arch_hweight32) 39 .section .popc_3insn_patch, "ax 38 .section .popc_3insn_patch, "ax" 40 .word __arch_hweight32 39 .word __arch_hweight32 41 sllx %o0, 64-32, %g1 40 sllx %o0, 64-32, %g1 42 retl 41 retl 43 popc %g1, %o0 42 popc %g1, %o0 44 .previous 43 .previous 45 44 46 ENTRY(__arch_hweight64) 45 ENTRY(__arch_hweight64) 47 sethi %hi(__sw_hweight64), %g1 !! 46 sethi %hi(__sw_hweight16), %g1 48 jmpl %g1 + %lo(__sw_hweight64), %g0 !! 47 jmpl %g1 + %lo(__sw_hweight16), %g0 49 nop 48 nop 50 ENDPROC(__arch_hweight64) 49 ENDPROC(__arch_hweight64) 51 EXPORT_SYMBOL(__arch_hweight64) 50 EXPORT_SYMBOL(__arch_hweight64) 52 .section .popc_3insn_patch, "ax 51 .section .popc_3insn_patch, "ax" 53 .word __arch_hweight64 52 .word __arch_hweight64 54 retl 53 retl 55 popc %o0, %o0 54 popc %o0, %o0 56 nop 55 nop 57 .previous 56 .previous
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.