/
usr
/
src
/
linux-headers-5.15.0-181
/
arch
/
alpha
/
include
/
asm
/
/usr/src/linux-headers-5.15.0-181/arch/alpha/include/asm
mkdir
upload
Name
Size
Mode
Actions
a.out.h
574
0644
edit
dl
rm
agp.h
490
0644
edit
dl
rm
agp_backend.h
948
0644
edit
dl
rm
asm-offsets.h
35
0644
edit
dl
rm
asm-prototypes.h
505
0644
edit
dl
rm
atomic.h
8749
0644
edit
dl
rm
barrier.h
507
0644
edit
dl
rm
bitops.h
9039
0644
edit
dl
rm
bug.h
571
0644
edit
dl
rm
cache.h
507
0644
edit
dl
rm
cacheflush.h
2039
0644
edit
dl
rm
checksum.h
2012
0644
edit
dl
rm
cmpxchg.h
1928
0644
edit
dl
rm
compiler.h
158
0644
edit
dl
rm
console.h
1084
0644
edit
dl
rm
core_apecs.h
17338
0644
edit
dl
rm
core_cia.h
15817
0644
edit
dl
rm
core_irongate.h
6793
0644
edit
dl
rm
core_lca.h
11650
0644
edit
dl
rm
core_marvel.h
9382
0644
edit
dl
rm
core_mcpcia.h
11747
0644
edit
dl
rm
core_polaris.h
2987
0644
edit
dl
rm
core_t2.h
19595
0644
edit
dl
rm
core_titan.h
11471
0644
edit
dl
rm
core_tsunami.h
8485
0644
edit
dl
rm
core_wildfire.h
8655
0644
edit
dl
rm
delay.h
264
0644
edit
dl
rm
device.h
129
0644
edit
dl
rm
div64.h
31
0644
edit
dl
rm
dma-mapping.h
342
0644
edit
dl
rm
dma.h
12664
0644
edit
dl
rm
elf.h
5765
0644
edit
dl
rm
emergency-restart.h
149
0644
edit
dl
rm
err_common.h
3316
0644
edit
dl
rm
err_ev6.h
116
0644
edit
dl
rm
err_ev7.h
4472
0644
edit
dl
rm
extable.h
1459
0644
edit
dl
rm
floppy.h
3171
0644
edit
dl
rm
fpu.h
1820
0644
edit
dl
rm
ftrace.h
12
0644
edit
dl
rm
futex.h
2017
0644
edit
dl
rm
gct.h
1042
0644
edit
dl
rm
hardirq.h
223
0644
edit
dl
rm
hwrpb.h
7066
0644
edit
dl
rm
hw_irq.h
302
0644
edit
dl
rm
io.h
14873
0644
edit
dl
rm
io_trivial.h
3206
0644
edit
dl
rm
irq.h
2363
0644
edit
dl
rm
irqflags.h
1194
0644
edit
dl
rm
irq_regs.h
34
0644
edit
dl
rm
jensen.h
8603
0644
edit
dl
rm
Kbuild
141
0644
edit
dl
rm
kdebug.h
32
0644
edit
dl
rm
linkage.h
256
0644
edit
dl
rm
local.h
2654
0644
edit
dl
rm
machvec.h
3621
0644
edit
dl
rm
mc146818rtc.h
680
0644
edit
dl
rm
mce.h
4135
0644
edit
dl
rm
mmu.h
203
0644
edit
dl
rm
mmu_context.h
7241
0644
edit
dl
rm
module.h
329
0644
edit
dl
rm
page.h
2397
0644
edit
dl
rm
pal.h
5127
0644
edit
dl
rm
param.h
284
0644
edit
dl
rm
parport.h
536
0644
edit
dl
rm
pci.h
2733
0644
edit
dl
rm
percpu.h
527
0644
edit
dl
rm
perf_event.h
105
0644
edit
dl
rm
pgalloc.h
761
0644
edit
dl
rm
pgtable.h
12577
0644
edit
dl
rm
processor.h
1677
0644
edit
dl
rm
ptrace.h
754
0644
edit
dl
rm
rwonce.h
812
0644
edit
dl
rm
serial.h
1034
0644
edit
dl
rm
setup.h
1465
0644
edit
dl
rm
sfp-machine.h
2929
0644
edit
dl
rm
shmparam.h
191
0644
edit
dl
rm
signal.h
627
0644
edit
dl
rm
smp.h
1377
0644
edit
dl
rm
socket.h
310
0644
edit
dl
rm
sparsemem.h
410
0644
edit
dl
rm
special_insns.h
925
0644
edit
dl
rm
spinlock.h
2915
0644
edit
dl
rm
spinlock_types.h
413
0644
edit
dl
rm
string.h
2481
0644
edit
dl
rm
switch_to.h
406
0644
edit
dl
rm
syscall.h
379
0644
edit
dl
rm
termios.h
3054
0644
edit
dl
rm
thread_info.h
3749
0644
edit
dl
rm
timex.h
827
0644
edit
dl
rm
tlb.h
257
0644
edit
dl
rm
tlbflush.h
3424
0644
edit
dl
rm
topology.h
271
0644
edit
dl
rm
types.h
143
0644
edit
dl
rm
uaccess.h
9767
0644
edit
dl
rm
ucontext.h
348
0644
edit
dl
rm
unistd.h
561
0644
edit
dl
rm
user.h
2192
0644
edit
dl
rm
vga.h
2050
0644
edit
dl
rm
vmalloc.h
93
0644
edit
dl
rm
word-at-a-time.h
1376
0644
edit
dl
rm
wrperfmon.h
2623
0644
edit
dl
rm
xchg.h
5287
0644
edit
dl
rm
xor.h
21833
0644
edit
dl
rm
Edit:
/usr/src/linux-headers-5.15.0-181/arch/alpha/include/asm/bitops.h
(9039B)
/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _ALPHA_BITOPS_H #define _ALPHA_BITOPS_H #ifndef _LINUX_BITOPS_H #error only <linux/bitops.h> can be included directly #endif #include <asm/compiler.h> #include <asm/barrier.h> /* * Copyright 1994, Linus Torvalds. */ /* * These have to be done with inline assembly: that way the bit-setting * is guaranteed to be atomic. All bit operations return 0 if the bit * was cleared before the operation and != 0 if it was not. * * To get proper branch prediction for the main line, we must branch * forward to code at the end of this object's .text section, then * branch back to restart the operation. * * bit 0 is the LSB of addr; bit 64 is the LSB of (addr+1). */ static inline void set_bit(unsigned long nr, volatile void * addr) { unsigned long temp; int *m = ((int *) addr) + (nr >> 5); __asm__ __volatile__( "1: ldl_l %0,%3\n" " bis %0,%2,%0\n" " stl_c %0,%1\n" " beq %0,2f\n" ".subsection 2\n" "2: br 1b\n" ".previous" :"=&r" (temp), "=m" (*m) :"Ir" (1UL << (nr & 31)), "m" (*m)); } /* * WARNING: non atomic version. */ static inline void __set_bit(unsigned long nr, volatile void * addr) { int *m = ((int *) addr) + (nr >> 5); *m |= 1 << (nr & 31); } static inline void clear_bit(unsigned long nr, volatile void * addr) { unsigned long temp; int *m = ((int *) addr) + (nr >> 5); __asm__ __volatile__( "1: ldl_l %0,%3\n" " bic %0,%2,%0\n" " stl_c %0,%1\n" " beq %0,2f\n" ".subsection 2\n" "2: br 1b\n" ".previous" :"=&r" (temp), "=m" (*m) :"Ir" (1UL << (nr & 31)), "m" (*m)); } static inline void clear_bit_unlock(unsigned long nr, volatile void * addr) { smp_mb(); clear_bit(nr, addr); } /* * WARNING: non atomic version. */ static __inline__ void __clear_bit(unsigned long nr, volatile void * addr) { int *m = ((int *) addr) + (nr >> 5); *m &= ~(1 << (nr & 31)); } static inline void __clear_bit_unlock(unsigned long nr, volatile void * addr) { smp_mb(); __clear_bit(nr, addr); } static inline void change_bit(unsigned long nr, volatile void * addr) { unsigned long temp; int *m = ((int *) addr) + (nr >> 5); __asm__ __volatile__( "1: ldl_l %0,%3\n" " xor %0,%2,%0\n" " stl_c %0,%1\n" " beq %0,2f\n" ".subsection 2\n" "2: br 1b\n" ".previous" :"=&r" (temp), "=m" (*m) :"Ir" (1UL << (nr & 31)), "m" (*m)); } /* * WARNING: non atomic version. */ static __inline__ void __change_bit(unsigned long nr, volatile void * addr) { int *m = ((int *) addr) + (nr >> 5); *m ^= 1 << (nr & 31); } static inline int test_and_set_bit(unsigned long nr, volatile void *addr) { unsigned long oldbit; unsigned long temp; int *m = ((int *) addr) + (nr >> 5); __asm__ __volatile__( #ifdef CONFIG_SMP " mb\n" #endif "1: ldl_l %0,%4\n" " and %0,%3,%2\n" " bne %2,2f\n" " xor %0,%3,%0\n" " stl_c %0,%1\n" " beq %0,3f\n" "2:\n" #ifdef CONFIG_SMP " mb\n" #endif ".subsection 2\n" "3: br 1b\n" ".previous" :"=&r" (temp), "=m" (*m), "=&r" (oldbit) :"Ir" (1UL << (nr & 31)), "m" (*m) : "memory"); return oldbit != 0; } static inline int test_and_set_bit_lock(unsigned long nr, volatile void *addr) { unsigned long oldbit; unsigned long temp; int *m = ((int *) addr) + (nr >> 5); __asm__ __volatile__( "1: ldl_l %0,%4\n" " and %0,%3,%2\n" " bne %2,2f\n" " xor %0,%3,%0\n" " stl_c %0,%1\n" " beq %0,3f\n" "2:\n" #ifdef CONFIG_SMP " mb\n" #endif ".subsection 2\n" "3: br 1b\n" ".previous" :"=&r" (temp), "=m" (*m), "=&r" (oldbit) :"Ir" (1UL << (nr & 31)), "m" (*m) : "memory"); return oldbit != 0; } /* * WARNING: non atomic version. */ static inline int __test_and_set_bit(unsigned long nr, volatile void * addr) { unsigned long mask = 1 << (nr & 0x1f); int *m = ((int *) addr) + (nr >> 5); int old = *m; *m = old | mask; return (old & mask) != 0; } static inline int test_and_clear_bit(unsigned long nr, volatile void * addr) { unsigned long oldbit; unsigned long temp; int *m = ((int *) addr) + (nr >> 5); __asm__ __volatile__( #ifdef CONFIG_SMP " mb\n" #endif "1: ldl_l %0,%4\n" " and %0,%3,%2\n" " beq %2,2f\n" " xor %0,%3,%0\n" " stl_c %0,%1\n" " beq %0,3f\n" "2:\n" #ifdef CONFIG_SMP " mb\n" #endif ".subsection 2\n" "3: br 1b\n" ".previous" :"=&r" (temp), "=m" (*m), "=&r" (oldbit) :"Ir" (1UL << (nr & 31)), "m" (*m) : "memory"); return oldbit != 0; } /* * WARNING: non atomic version. */ static inline int __test_and_clear_bit(unsigned long nr, volatile void * addr) { unsigned long mask = 1 << (nr & 0x1f); int *m = ((int *) addr) + (nr >> 5); int old = *m; *m = old & ~mask; return (old & mask) != 0; } static inline int test_and_change_bit(unsigned long nr, volatile void * addr) { unsigned long oldbit; unsigned long temp; int *m = ((int *) addr) + (nr >> 5); __asm__ __volatile__( #ifdef CONFIG_SMP " mb\n" #endif "1: ldl_l %0,%4\n" " and %0,%3,%2\n" " xor %0,%3,%0\n" " stl_c %0,%1\n" " beq %0,3f\n" #ifdef CONFIG_SMP " mb\n" #endif ".subsection 2\n" "3: br 1b\n" ".previous" :"=&r" (temp), "=m" (*m), "=&r" (oldbit) :"Ir" (1UL << (nr & 31)), "m" (*m) : "memory"); return oldbit != 0; } /* * WARNING: non atomic version. */ static __inline__ int __test_and_change_bit(unsigned long nr, volatile void * addr) { unsigned long mask = 1 << (nr & 0x1f); int *m = ((int *) addr) + (nr >> 5); int old = *m; *m = old ^ mask; return (old & mask) != 0; } static inline int test_bit(int nr, const volatile void * addr) { return (1UL & (((const int *) addr)[nr >> 5] >> (nr & 31))) != 0UL; } /* * ffz = Find First Zero in word. Undefined if no zero exists, * so code should check against ~0UL first.. * * Do a binary search on the bits. Due to the nature of large * constants on the alpha, it is worthwhile to split the search. */ static inline unsigned long ffz_b(unsigned long x) { unsigned long sum, x1, x2, x4; x = ~x & -~x; /* set first 0 bit, clear others */ x1 = x & 0xAA; x2 = x & 0xCC; x4 = x & 0xF0; sum = x2 ? 2 : 0; sum += (x4 != 0) * 4; sum += (x1 != 0); return sum; } static inline unsigned long ffz(unsigned long word) { #if defined(CONFIG_ALPHA_EV6) && defined(CONFIG_ALPHA_EV67) /* Whee. EV67 can calculate it directly. */ return __kernel_cttz(~word); #else unsigned long bits, qofs, bofs; bits = __kernel_cmpbge(word, ~0UL); qofs = ffz_b(bits); bits = __kernel_extbl(word, qofs); bofs = ffz_b(bits); return qofs*8 + bofs; #endif } /* * __ffs = Find First set bit in word. Undefined if no set bit exists. */ static inline unsigned long __ffs(unsigned long word) { #if defined(CONFIG_ALPHA_EV6) && defined(CONFIG_ALPHA_EV67) /* Whee. EV67 can calculate it directly. */ return __kernel_cttz(word); #else unsigned long bits, qofs, bofs; bits = __kernel_cmpbge(0, word); qofs = ffz_b(bits); bits = __kernel_extbl(word, qofs); bofs = ffz_b(~bits); return qofs*8 + bofs; #endif } #ifdef __KERNEL__ /* * ffs: find first bit set. This is defined the same way as * the libc and compiler builtin ffs routines, therefore * differs in spirit from the above __ffs. */ static inline int ffs(int word) { int result = __ffs(word) + 1; return word ? result : 0; } /* * fls: find last bit set. */ #if defined(CONFIG_ALPHA_EV6) && defined(CONFIG_ALPHA_EV67) static inline int fls64(unsigned long word) { return 64 - __kernel_ctlz(word); } #else extern const unsigned char __flsm1_tab[256]; static inline int fls64(unsigned long x) { unsigned long t, a, r; t = __kernel_cmpbge (x, 0x0101010101010101UL); a = __flsm1_tab[t]; t = __kernel_extbl (x, a); r = a*8 + __flsm1_tab[t] + (x != 0); return r; } #endif static inline unsigned long __fls(unsigned long x) { return fls64(x) - 1; } static inline int fls(unsigned int x) { return fls64(x); } /* * hweightN: returns the hamming weight (i.e. the number * of bits set) of a N-bit word */ #if defined(CONFIG_ALPHA_EV6) && defined(CONFIG_ALPHA_EV67) /* Whee. EV67 can calculate it directly. */ static inline unsigned long __arch_hweight64(unsigned long w) { return __kernel_ctpop(w); } static inline unsigned int __arch_hweight32(unsigned int w) { return __arch_hweight64(w); } static inline unsigned int __arch_hweight16(unsigned int w) { return __arch_hweight64(w & 0xffff); } static inline unsigned int __arch_hweight8(unsigned int w) { return __arch_hweight64(w & 0xff); } #else #include <asm-generic/bitops/arch_hweight.h> #endif #include <asm-generic/bitops/const_hweight.h> #endif /* __KERNEL__ */ #include <asm-generic/bitops/find.h> #ifdef __KERNEL__ /* * Every architecture must define this function. It's the fastest * way of searching a 100-bit bitmap. It's guaranteed that at least * one of the 100 bits is cleared. */ static inline unsigned long sched_find_first_bit(const unsigned long b[2]) { unsigned long b0, b1, ofs, tmp; b0 = b[0]; b1 = b[1]; ofs = (b0 ? 0 : 64); tmp = (b0 ? b0 : b1); return __ffs(tmp) + ofs; } #include <asm-generic/bitops/le.h> #include <asm-generic/bitops/ext2-atomic-setbit.h> #endif /* __KERNEL__ */ #endif /* _ALPHA_BITOPS_H */
Save
cmd:
run