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

arch_hweight.h (792B)


      1/*
      2 * This file is subject to the terms and conditions of the GNU General Public
      3 * License.  See the file "COPYING" in the main directory of this archive
      4 * for more details.
      5 *
      6 */
      7#ifndef _ASM_ARCH_HWEIGHT_H
      8#define _ASM_ARCH_HWEIGHT_H
      9
     10#ifdef ARCH_HAS_USABLE_BUILTIN_POPCOUNT
     11
     12#include <asm/types.h>
     13
     14static inline unsigned int __arch_hweight32(unsigned int w)
     15{
     16	return __builtin_popcount(w);
     17}
     18
     19static inline unsigned int __arch_hweight16(unsigned int w)
     20{
     21	return __builtin_popcount(w & 0xffff);
     22}
     23
     24static inline unsigned int __arch_hweight8(unsigned int w)
     25{
     26	return __builtin_popcount(w & 0xff);
     27}
     28
     29static inline unsigned long __arch_hweight64(__u64 w)
     30{
     31	return __builtin_popcountll(w);
     32}
     33
     34#else
     35#include <asm-generic/bitops/arch_hweight.h>
     36#endif
     37
     38#endif /* _ASM_ARCH_HWEIGHT_H */