Pull RISC-V updates from Palmer Dabbelt: - Support for various vector-accelerated crypto routines - Hibernation is now enabled for portable kernel builds - mmap_rnd_bits_max is larger on systems with larger VAs - Support for fast GUP - Support for membarrier-based instruction cache synchronization - Support for the Andes hart-level interrupt controller and PMU - Some cleanups around unaligned access speed probing and Kconfig settings - Support for ACPI LPI and CPPC - Various cleanus related to barriers - A handful of fixes * tag 'riscv-for-linus-6.9-mw2' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux: (66 commits) riscv: Fix syscall wrapper for >word-size arguments crypto: riscv - add vector crypto accelerated AES-CBC-CTS crypto: riscv - parallelize AES-CBC decryption riscv: Only flush the mm icache when setting an exec pte riscv: Use kcalloc() instead of kzalloc() riscv/barrier: Add missing space after ',' riscv/barrier: Consolidate fence definitions riscv/barrier: Define RISCV_FULL_BARRIER riscv/barrier: Define __{mb,rmb,wmb} RISC-V: defconfig: Enable CONFIG_ACPI_CPPC_CPUFREQ cpufreq: Move CPPC configs to common Kconfig and add RISC-V ACPI: RISC-V: Add CPPC driver ACPI: Enable ACPI_PROCESSOR for RISC-V ACPI: RISC-V: Add LPI driver cpuidle: RISC-V: Move few functions to arch/riscv riscv: Introduce set_compat_task() in asm/compat.h riscv: Introduce is_compat_thread() into compat.h riscv: add compile-time test into is_compat_task() riscv: Replace direct thread flag check with is_compat_task() riscv: Improve arch_get_mmap_end() macro ...
Showing the changes to include/asm-generic (4 of 105 files). Show all
Unified · Split
| @@ -5,12 +5,12 @@ · 4 unmodified lines | ||
| 5 | 5 | #include <asm/types.h> |
| 6 | 6 | |
| 7 | 7 | /** |
| 8 | − * __ffs - find first bit in word. | |
| 8 | + * generic___ffs - find first bit in word. | |
| 9 | 9 | * @word: The word to search |
| 10 | 10 | * |
| 11 | 11 | * Undefined if no bit exists, so code should check against 0 first. |
| 12 | 12 | */ |
| 13 | −static __always_inline unsigned long __ffs(unsigned long word) | |
| 13 | +static __always_inline unsigned long generic___ffs(unsigned long word) | |
| 14 | 14 | { |
| 15 | 15 | int num = 0; |
| 16 | 16 | |
| @@ -41,4 +41,8 @@ static __always_inline unsigned long __ffs(unsigned long word) · 24 unmodified lines | ||
| 41 | 41 | return num; |
| 42 | 42 | } |
| 43 | 43 | |
| 44 | +#ifndef __HAVE_ARCH___FFS | |
| 45 | +#define __ffs(word) generic___ffs(word) | |
| 46 | +#endif | |
| 47 | + | |
| 44 | 48 | #endif /* _ASM_GENERIC_BITOPS___FFS_H_ */ |
| @@ -5,12 +5,12 @@ · 4 unmodified lines | ||
| 5 | 5 | #include <asm/types.h> |
| 6 | 6 | |
| 7 | 7 | /** |
| 8 | − * __fls - find last (most-significant) set bit in a long word | |
| 8 | + * generic___fls - find last (most-significant) set bit in a long word | |
| 9 | 9 | * @word: the word to search |
| 10 | 10 | * |
| 11 | 11 | * Undefined if no set bit exists, so code should check against 0 first. |
| 12 | 12 | */ |
| 13 | −static __always_inline unsigned long __fls(unsigned long word) | |
| 13 | +static __always_inline unsigned long generic___fls(unsigned long word) | |
| 14 | 14 | { |
| 15 | 15 | int num = BITS_PER_LONG - 1; |
| 16 | 16 | |
| @@ -41,4 +41,8 @@ static __always_inline unsigned long __fls(unsigned long word) · 24 unmodified lines | ||
| 41 | 41 | return num; |
| 42 | 42 | } |
| 43 | 43 | |
| 44 | +#ifndef __HAVE_ARCH___FLS | |
| 45 | +#define __fls(word) generic___fls(word) | |
| 46 | +#endif | |
| 47 | + | |
| 44 | 48 | #endif /* _ASM_GENERIC_BITOPS___FLS_H_ */ |
| @@ -3,14 +3,14 @@ · 2 unmodified lines | ||
| 3 | 3 | #define _ASM_GENERIC_BITOPS_FFS_H_ |
| 4 | 4 | |
| 5 | 5 | /** |
| 6 | − * ffs - find first bit set | |
| 6 | + * generic_ffs - find first bit set | |
| 7 | 7 | * @x: the word to search |
| 8 | 8 | * |
| 9 | 9 | * This is defined the same way as |
| 10 | 10 | * the libc and compiler builtin ffs routines, therefore |
| 11 | 11 | * differs in spirit from ffz (man ffs). |
| 12 | 12 | */ |
| 13 | −static inline int ffs(int x) | |
| 13 | +static inline int generic_ffs(int x) | |
| 14 | 14 | { |
| 15 | 15 | int r = 1; |
| 16 | 16 | |
| @@ -39,4 +39,8 @@ static inline int ffs(int x) · 22 unmodified lines | ||
| 39 | 39 | return r; |
| 40 | 40 | } |
| 41 | 41 | |
| 42 | +#ifndef __HAVE_ARCH_FFS | |
| 43 | +#define ffs(x) generic_ffs(x) | |
| 44 | +#endif | |
| 45 | + | |
| 42 | 46 | #endif /* _ASM_GENERIC_BITOPS_FFS_H_ */ |
| @@ -3,14 +3,14 @@ · 2 unmodified lines | ||
| 3 | 3 | #define _ASM_GENERIC_BITOPS_FLS_H_ |
| 4 | 4 | |
| 5 | 5 | /** |
| 6 | − * fls - find last (most-significant) bit set | |
| 6 | + * generic_fls - find last (most-significant) bit set | |
| 7 | 7 | * @x: the word to search |
| 8 | 8 | * |
| 9 | 9 | * This is defined the same way as ffs. |
| 10 | 10 | * Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32. |
| 11 | 11 | */ |
| 12 | 12 | |
| 13 | −static __always_inline int fls(unsigned int x) | |
| 13 | +static __always_inline int generic_fls(unsigned int x) | |
| 14 | 14 | { |
| 15 | 15 | int r = 32; |
| 16 | 16 | |
| @@ -39,4 +39,8 @@ static __always_inline int fls(unsigned int x) · 22 unmodified lines | ||
| 39 | 39 | return r; |
| 40 | 40 | } |
| 41 | 41 | |
| 42 | +#ifndef __HAVE_ARCH_FLS | |
| 43 | +#define fls(x) generic_fls(x) | |
| 44 | +#endif | |
| 45 | + | |
| 42 | 46 | #endif /* _ASM_GENERIC_BITOPS_FLS_H_ */ |