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

bitrev.h (703B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
      4 */
      5#ifndef __LOONGARCH_ASM_BITREV_H__
      6#define __LOONGARCH_ASM_BITREV_H__
      7
      8#include <linux/swab.h>
      9
     10static __always_inline __attribute_const__ u32 __arch_bitrev32(u32 x)
     11{
     12	u32 ret;
     13
     14	asm("bitrev.4b	%0, %1" : "=r"(ret) : "r"(__swab32(x)));
     15	return ret;
     16}
     17
     18static __always_inline __attribute_const__ u16 __arch_bitrev16(u16 x)
     19{
     20	u16 ret;
     21
     22	asm("bitrev.4b	%0, %1" : "=r"(ret) : "r"(__swab16(x)));
     23	return ret;
     24}
     25
     26static __always_inline __attribute_const__ u8 __arch_bitrev8(u8 x)
     27{
     28	u8 ret;
     29
     30	asm("bitrev.4b	%0, %1" : "=r"(ret) : "r"(x));
     31	return ret;
     32}
     33
     34#endif /* __LOONGARCH_ASM_BITREV_H__ */