cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

hweight.S (1179B)


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