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 ba,pt %xcc, __sw_hweight8 9 jmpl %g1 + %lo(__sw_hweight8), %g0 << 10 nop 8 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 ba,pt %xcc, __sw_hweight16 22 jmpl %g1 + %lo(__sw_hweight16), %g0 << 23 nop 21 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 ba,pt %xcc, __sw_hweight32 35 jmpl %g1 + %lo(__sw_hweight32), %g0 << 36 nop 34 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 ba,pt %xcc, __sw_hweight64 48 jmpl %g1 + %lo(__sw_hweight64), %g0 << 49 nop 47 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.