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

bitops.h (1326B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2
      3#ifndef __ASM_CSKY_BITOPS_H
      4#define __ASM_CSKY_BITOPS_H
      5
      6#include <linux/compiler.h>
      7#include <asm/barrier.h>
      8
      9/*
     10 * asm-generic/bitops/ffs.h
     11 */
     12static inline int ffs(int x)
     13{
     14	if (!x)
     15		return 0;
     16
     17	asm volatile (
     18		"brev %0\n"
     19		"ff1  %0\n"
     20		"addi %0, 1\n"
     21		: "=&r"(x)
     22		: "0"(x));
     23	return x;
     24}
     25
     26/*
     27 * asm-generic/bitops/__ffs.h
     28 */
     29static __always_inline unsigned long __ffs(unsigned long x)
     30{
     31	asm volatile (
     32		"brev %0\n"
     33		"ff1  %0\n"
     34		: "=&r"(x)
     35		: "0"(x));
     36	return x;
     37}
     38
     39/*
     40 * asm-generic/bitops/fls.h
     41 */
     42static __always_inline int fls(unsigned int x)
     43{
     44	asm volatile(
     45		"ff1 %0\n"
     46		: "=&r"(x)
     47		: "0"(x));
     48
     49	return (32 - x);
     50}
     51
     52/*
     53 * asm-generic/bitops/__fls.h
     54 */
     55static __always_inline unsigned long __fls(unsigned long x)
     56{
     57	return fls(x) - 1;
     58}
     59
     60#include <asm-generic/bitops/ffz.h>
     61#include <asm-generic/bitops/fls64.h>
     62
     63#ifndef _LINUX_BITOPS_H
     64#error only <linux/bitops.h> can be included directly
     65#endif
     66
     67#include <asm-generic/bitops/sched.h>
     68#include <asm-generic/bitops/hweight.h>
     69#include <asm-generic/bitops/lock.h>
     70#include <asm-generic/bitops/atomic.h>
     71
     72/*
     73 * bug fix, why only could use atomic!!!!
     74 */
     75#include <asm-generic/bitops/non-atomic.h>
     76
     77#include <asm-generic/bitops/le.h>
     78#include <asm-generic/bitops/ext2-atomic.h>
     79#endif /* __ASM_CSKY_BITOPS_H */