Changes in 4.9.169 x86/power: Fix some ordering bugs in __restore_processor_context() x86/power/64: Use struct desc_ptr for the IDT in struct saved_context x86/power/32: Move SYSENTER MSR restoration to fix_processor_context() x86/power: Make restore_processor_context() sane powerpc/tm: Limit TM code inside PPC_TRANSACTIONAL_MEM kbuild: clang: choose GCC_TOOLCHAIN_DIR not on LD x86: vdso: Use $LD instead of $CC to link x86/vdso: Drop implicit common-page-size linker flag lib/string.c: implement a basic bcmp powerpc: Fix invalid use of register expressions powerpc/64s: Add barrier_nospec powerpc/64s: Add support for ori barrier_nospec patching powerpc: Avoid code patching freed init sections powerpc/64s: Patch barrier_nospec in modules powerpc/64s: Enable barrier_nospec based on firmware settings powerpc: Use barrier_nospec in copy_from_user() powerpc/64: Use barrier_nospec in syscall entry powerpc/64s: Enhance the information in cpu_show_spectre_v1() powerpc64s: Show ori31 availability in spectre_v1 sysfs file not v2 powerpc/64: Disable the speculation barrier from the command line powerpc/64: Make stf barrier PPC_BOOK3S_64 specific. powerpc/64: Add CONFIG_PPC_BARRIER_NOSPEC powerpc/64: Call setup_barrier_nospec() from setup_arch() powerpc/64: Make meltdown reporting Book3S 64 specific powerpc/fsl: Add barrier_nospec implementation for NXP PowerPC Book3E powerpc/fsl: Sanitize the syscall table for NXP PowerPC 32 bit platforms powerpc/asm: Add a patch_site macro & helpers for patching instructions powerpc/64s: Add new security feature flags for count cache flush powerpc/64s: Add support for software count cache flush powerpc/pseries: Query hypervisor for count cache flush settings powerpc/powernv: Query firmware for count cache flush settings powerpc/fsl: Add infrastructure to fixup branch predictor flush powerpc/fsl: Add macro to flush the branch predictor powerpc/fsl: Fix spectre_v2 mitigations reporting powerpc/fsl: Emulate SPRN_BUCSR register powerpc/fsl: Add nospectre_v2 command line argument powerpc/fsl: Flush the branch predictor at each kernel entry (64bit) powerpc/fsl: Flush the branch predictor at each kernel entry (32 bit) powerpc/fsl: Flush branch predictor when entering KVM powerpc/fsl: Enable runtime patching if nospectre_v2 boot arg is used powerpc/fsl: Update Spectre v2 reporting powerpc/fsl: Fixed warning: orphan section `__btb_flush_fixup' powerpc/fsl: Fix the flush of branch predictor. powerpc/security: Fix spectre_v2 reporting arm64: kaslr: Reserve size of ARM64_MEMSTART_ALIGN in linear region tty: mark Siemens R3964 line discipline as BROKEN tty: ldisc: add sysctl to prevent autoloading of ldiscs ipv6: Fix dangling pointer when ipv6 fragment ipv6: sit: reset ip header pointer in ipip6_rcv kcm: switch order of device registration to fix a crash net: rds: force to destroy connection if t_sock is NULL in rds_tcp_kill_sock(). openvswitch: fix flow actions reallocation qmi_wwan: add Olicard 600 sctp: initialize _pad of sockaddr_in before copying to user memory tcp: Ensure DCTCP reacts to losses vrf: check accept_source_route on the original netdevice bnxt_en: Reset device on RX buffer errors. bnxt_en: Improve RX consumer index validity check. net/mlx5e: Add a lock on tir list netns: provide pure entropy for net_hash_mix() net: ethtool: not call vzalloc for zero sized memory request ip6_tunnel: Match to ARPHRD_TUNNEL6 for dev type ALSA: seq: Fix OOB-reads from strlcpy parisc: Detect QEMU earlier in boot process include/linux/bitrev.h: fix constant bitrev ASoC: fsl_esai: fix channel swap issue when stream starts Btrfs: do not allow trimming when a fs is mounted with the nologreplay option block: do not leak memory in bio_copy_user_iov() genirq: Respect IRQCHIP_SKIP_SET_WAKE in irq_chip_set_wake_parent() virtio: Honour 'may_reduce_num' in vring_create_virtqueue ARM: dts: at91: Fix typo in ISC_D0 on PC9 arm64: futex: Fix FUTEX_WAKE_OP atomic ops with non-zero result value parisc: Use cr16 interval timers unconditionally on qemu xen: Prevent buffer overflow in privcmd ioctl sched/fair: Do not re-read ->h_load_next during hierarchical load calculation xtensa: fix return_address PCI: Add function 1 DMA alias quirk for Marvell 9170 SATA controller Linux 4.9.169 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
86 lines
2.0 KiB
C
86 lines
2.0 KiB
C
#ifndef _LINUX_BITREV_H
|
|
#define _LINUX_BITREV_H
|
|
|
|
#include <linux/types.h>
|
|
|
|
#ifdef CONFIG_HAVE_ARCH_BITREVERSE
|
|
#include <asm/bitrev.h>
|
|
|
|
#define __bitrev32 __arch_bitrev32
|
|
#define __bitrev16 __arch_bitrev16
|
|
#define __bitrev8 __arch_bitrev8
|
|
|
|
#else
|
|
extern u8 const byte_rev_table[256];
|
|
static inline u8 __bitrev8(u8 byte)
|
|
{
|
|
return byte_rev_table[byte];
|
|
}
|
|
|
|
static inline u16 __bitrev16(u16 x)
|
|
{
|
|
return (__bitrev8(x & 0xff) << 8) | __bitrev8(x >> 8);
|
|
}
|
|
|
|
static inline u32 __bitrev32(u32 x)
|
|
{
|
|
return (__bitrev16(x & 0xffff) << 16) | __bitrev16(x >> 16);
|
|
}
|
|
|
|
#endif /* CONFIG_HAVE_ARCH_BITREVERSE */
|
|
|
|
#define __constant_bitrev32(x) \
|
|
({ \
|
|
u32 ___x = x; \
|
|
___x = (___x >> 16) | (___x << 16); \
|
|
___x = ((___x & (u32)0xFF00FF00UL) >> 8) | ((___x & (u32)0x00FF00FFUL) << 8); \
|
|
___x = ((___x & (u32)0xF0F0F0F0UL) >> 4) | ((___x & (u32)0x0F0F0F0FUL) << 4); \
|
|
___x = ((___x & (u32)0xCCCCCCCCUL) >> 2) | ((___x & (u32)0x33333333UL) << 2); \
|
|
___x = ((___x & (u32)0xAAAAAAAAUL) >> 1) | ((___x & (u32)0x55555555UL) << 1); \
|
|
___x; \
|
|
})
|
|
|
|
#define __constant_bitrev16(x) \
|
|
({ \
|
|
u16 ___x = x; \
|
|
___x = (___x >> 8) | (___x << 8); \
|
|
___x = ((___x & (u16)0xF0F0U) >> 4) | ((___x & (u16)0x0F0FU) << 4); \
|
|
___x = ((___x & (u16)0xCCCCU) >> 2) | ((___x & (u16)0x3333U) << 2); \
|
|
___x = ((___x & (u16)0xAAAAU) >> 1) | ((___x & (u16)0x5555U) << 1); \
|
|
___x; \
|
|
})
|
|
|
|
#define __constant_bitrev8(x) \
|
|
({ \
|
|
u8 ___x = x; \
|
|
___x = (___x >> 4) | (___x << 4); \
|
|
___x = ((___x & (u8)0xCCU) >> 2) | ((___x & (u8)0x33U) << 2); \
|
|
___x = ((___x & (u8)0xAAU) >> 1) | ((___x & (u8)0x55U) << 1); \
|
|
___x; \
|
|
})
|
|
|
|
#define bitrev32(x) \
|
|
({ \
|
|
u32 __x = x; \
|
|
__builtin_constant_p(__x) ? \
|
|
__constant_bitrev32(__x) : \
|
|
__bitrev32(__x); \
|
|
})
|
|
|
|
#define bitrev16(x) \
|
|
({ \
|
|
u16 __x = x; \
|
|
__builtin_constant_p(__x) ? \
|
|
__constant_bitrev16(__x) : \
|
|
__bitrev16(__x); \
|
|
})
|
|
|
|
#define bitrev8(x) \
|
|
({ \
|
|
u8 __x = x; \
|
|
__builtin_constant_p(__x) ? \
|
|
__constant_bitrev8(__x) : \
|
|
__bitrev8(__x) ; \
|
|
})
|
|
#endif /* _LINUX_BITREV_H */
|