__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
/* SPDX-License-Identifier: GPL-2.0
*
* include/asm-sh/spinlock-cas.h
*
* Copyright (C) 2015 SEI
*/
#ifndef __ASM_SH_SPINLOCK_CAS_H
#define __ASM_SH_SPINLOCK_CAS_H
#include <asm/barrier.h>
#include <asm/processor.h>
static inline unsigned __sl_cas(volatile unsigned *p, unsigned old, unsigned new)
{
__asm__ __volatile__("cas.l %1,%0,@r0"
: "+r"(new)
: "r"(old), "z"(p)
: "t", "memory" );
return new;
}
/*
* Your basic SMP spinlocks, allowing only a single CPU anywhere
*/
#define arch_spin_is_locked(x) ((x)->lock <= 0)
static inline void arch_spin_lock(arch_spinlock_t *lock)
{
while (!__sl_cas(&lock->lock, 1, 0));
}
static inline void arch_spin_unlock(arch_spinlock_t *lock)
{
__sl_cas(&lock->lock, 0, 1);
}
static inline int arch_spin_trylock(arch_spinlock_t *lock)
{
return __sl_cas(&lock->lock, 1, 0);
}
/*
* Read-write spinlocks, allowing multiple readers but only one writer.
*
* NOTE! it is quite common to have readers in interrupts but no interrupt
* writers. For those circumstances we can "mix" irq-safe locks - any writer
* needs to get a irq-safe write-lock, but readers can get non-irqsafe
* read-locks.
*/
static inline void arch_read_lock(arch_rwlock_t *rw)
{
unsigned old;
do old = rw->lock;
while (!old || __sl_cas(&rw->lock, old, old-1) != old);
}
static inline void arch_read_unlock(arch_rwlock_t *rw)
{
unsigned old;
do old = rw->lock;
while (__sl_cas(&rw->lock, old, old+1) != old);
}
static inline void arch_write_lock(arch_rwlock_t *rw)
{
while (__sl_cas(&rw->lock, RW_LOCK_BIAS, 0) != RW_LOCK_BIAS);
}
static inline void arch_write_unlock(arch_rwlock_t *rw)
{
__sl_cas(&rw->lock, 0, RW_LOCK_BIAS);
}
static inline int arch_read_trylock(arch_rwlock_t *rw)
{
unsigned old;
do old = rw->lock;
while (old && __sl_cas(&rw->lock, old, old-1) != old);
return !!old;
}
static inline int arch_write_trylock(arch_rwlock_t *rw)
{
return __sl_cas(&rw->lock, RW_LOCK_BIAS, 0) == RW_LOCK_BIAS;
}
#endif /* __ASM_SH_SPINLOCK_CAS_H */
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| Kbuild | File | 170 B | 0644 |
|
| adc.h | File | 211 B | 0644 |
|
| addrspace.h | File | 1.85 KB | 0644 |
|
| alignment.h | File | 654 B | 0644 |
|
| asm-offsets.h | File | 74 B | 0644 |
|
| atomic-grb.h | File | 2.97 KB | 0644 |
|
| atomic-irq.h | File | 2.01 KB | 0644 |
|
| atomic-llsc.h | File | 2.49 KB | 0644 |
|
| atomic.h | File | 693 B | 0644 |
|
| barrier.h | File | 1.47 KB | 0644 |
|
| bitops-cas.h | File | 1.73 KB | 0644 |
|
| bitops-grb.h | File | 6.21 KB | 0644 |
|
| bitops-llsc.h | File | 2.79 KB | 0644 |
|
| bitops-op32.h | File | 3.82 KB | 0644 |
|
| bitops.h | File | 1.58 KB | 0644 |
|
| bl_bit.h | File | 66 B | 0644 |
|
| bl_bit_32.h | File | 639 B | 0644 |
|
| bug.h | File | 2.77 KB | 0644 |
|
| cache.h | File | 1.31 KB | 0644 |
|
| cache_insns.h | File | 71 B | 0644 |
|
| cache_insns_32.h | File | 642 B | 0644 |
|
| cacheflush.h | File | 4.22 KB | 0644 |
|
| cachetype.h | File | 170 B | 0644 |
|
| checksum.h | File | 68 B | 0644 |
|
| checksum_32.h | File | 4.92 KB | 0644 |
|
| clock.h | File | 436 B | 0644 |
|
| cmpxchg-cas.h | File | 549 B | 0644 |
|
| cmpxchg-grb.h | File | 2.8 KB | 0644 |
|
| cmpxchg-irq.h | File | 1.04 KB | 0644 |
|
| cmpxchg-llsc.h | File | 1.06 KB | 0644 |
|
| cmpxchg-xchg.h | File | 1.24 KB | 0644 |
|
| cmpxchg.h | File | 2.09 KB | 0644 |
|
| device.h | File | 442 B | 0644 |
|
| dma-register.h | File | 1.67 KB | 0644 |
|
| dma.h | File | 3.09 KB | 0644 |
|
| dmabrg.h | File | 536 B | 0644 |
|
| dwarf.h | File | 9.66 KB | 0644 |
|
| elf.h | File | 5.87 KB | 0644 |
|
| entry-macros.S | File | 1.85 KB | 0644 |
|
| extable.h | File | 135 B | 0644 |
|
| fixmap.h | File | 2.48 KB | 0644 |
|
| flat.h | File | 865 B | 0644 |
|
| fpu.h | File | 1.67 KB | 0644 |
|
| freq.h | File | 212 B | 0644 |
|
| ftrace.h | File | 1.41 KB | 0644 |
|
| futex-cas.h | File | 728 B | 0644 |
|
| futex-irq.h | File | 482 B | 0644 |
|
| futex-llsc.h | File | 870 B | 0644 |
|
| futex.h | File | 1.35 KB | 0644 |
|
| hardirq.h | File | 267 B | 0644 |
|
| hd64461.h | File | 11.79 KB | 0644 |
|
| heartbeat.h | File | 383 B | 0644 |
|
| hugetlb.h | File | 552 B | 0644 |
|
| hw_breakpoint.h | File | 1.99 KB | 0644 |
|
| hw_irq.h | File | 915 B | 0644 |
|
| i2c-sh7760.h | File | 406 B | 0644 |
|
| io.h | File | 8.88 KB | 0644 |
|
| io_generic.h | File | 661 B | 0644 |
|
| io_noioport.h | File | 1.25 KB | 0644 |
|
| io_trapped.h | File | 1.44 KB | 0644 |
|
| irq.h | File | 1.16 KB | 0644 |
|
| irqflags.h | File | 226 B | 0644 |
|
| kdebug.h | File | 433 B | 0644 |
|
| kexec.h | File | 2.62 KB | 0644 |
|
| kgdb.h | File | 851 B | 0644 |
|
| kprobes.h | File | 1.27 KB | 0644 |
|
| linkage.h | File | 154 B | 0644 |
|
| machvec.h | File | 699 B | 0644 |
|
| mmiowb.h | File | 246 B | 0644 |
|
| mmu.h | File | 2.18 KB | 0644 |
|
| mmu_context.h | File | 4.07 KB | 0644 |
|
| mmu_context_32.h | File | 1.11 KB | 0644 |
|
| mmzone.h | File | 970 B | 0644 |
|
| module.h | File | 276 B | 0644 |
|
| page.h | File | 4.6 KB | 0644 |
|
| pci.h | File | 2.78 KB | 0644 |
|
| perf_event.h | File | 797 B | 0644 |
|
| pgalloc.h | File | 1.13 KB | 0644 |
|
| pgtable-2level.h | File | 567 B | 0644 |
|
| pgtable-3level.h | File | 1.5 KB | 0644 |
|
| pgtable.h | File | 3.89 KB | 0644 |
|
| pgtable_32.h | File | 16.53 KB | 0644 |
|
| platform_early.h | File | 1.81 KB | 0644 |
|
| posix_types.h | File | 71 B | 0644 |
|
| processor.h | File | 4.22 KB | 0644 |
|
| processor_32.h | File | 4.41 KB | 0644 |
|
| ptrace.h | File | 3.74 KB | 0644 |
|
| ptrace_32.h | File | 307 B | 0644 |
|
| push-switch.h | File | 755 B | 0644 |
|
| reboot.h | File | 472 B | 0644 |
|
| romimage-macros.h | File | 1.1 KB | 0644 |
|
| rtc.h | File | 226 B | 0644 |
|
| seccomp.h | File | 546 B | 0644 |
|
| sections.h | File | 311 B | 0644 |
|
| setup.h | File | 764 B | 0644 |
|
| sfp-machine.h | File | 2.7 KB | 0644 |
|
| sh7760fb.h | File | 5.61 KB | 0644 |
|
| sh_bios.h | File | 743 B | 0644 |
|
| shmparam.h | File | 489 B | 0644 |
|
| siu.h | File | 385 B | 0644 |
|
| smc37c93x.h | File | 5.56 KB | 0644 |
|
| smp-ops.h | File | 1.02 KB | 0644 |
|
| smp.h | File | 1.8 KB | 0644 |
|
| sparsemem.h | File | 319 B | 0644 |
|
| spi.h | File | 265 B | 0644 |
|
| spinlock-cas.h | File | 1.95 KB | 0644 |
|
| spinlock-llsc.h | File | 4.05 KB | 0644 |
|
| spinlock.h | File | 438 B | 0644 |
|
| spinlock_types.h | File | 469 B | 0644 |
|
| sram.h | File | 670 B | 0644 |
|
| stackprotector.h | File | 532 B | 0644 |
|
| stacktrace.h | File | 528 B | 0644 |
|
| string.h | File | 66 B | 0644 |
|
| string_32.h | File | 2.16 KB | 0644 |
|
| suspend.h | File | 2.52 KB | 0644 |
|
| switch_to.h | File | 190 B | 0644 |
|
| switch_to_32.h | File | 3.55 KB | 0644 |
|
| syscall.h | File | 201 B | 0644 |
|
| syscall_32.h | File | 1.59 KB | 0644 |
|
| syscalls.h | File | 532 B | 0644 |
|
| syscalls_32.h | File | 979 B | 0644 |
|
| thread_info.h | File | 4.95 KB | 0644 |
|
| timex.h | File | 637 B | 0644 |
|
| tlb.h | File | 738 B | 0644 |
|
| tlbflush.h | File | 1.77 KB | 0644 |
|
| topology.h | File | 645 B | 0644 |
|
| traps.h | File | 424 B | 0644 |
|
| traps_32.h | File | 1.42 KB | 0644 |
|
| types.h | File | 332 B | 0644 |
|
| uaccess.h | File | 4.05 KB | 0644 |
|
| uaccess_32.h | File | 4.89 KB | 0644 |
|
| uncached.h | File | 1.34 KB | 0644 |
|
| unistd.h | File | 953 B | 0644 |
|
| unwinder.h | File | 856 B | 0644 |
|
| user.h | File | 2.19 KB | 0644 |
|
| vermagic.h | File | 709 B | 0644 |
|
| vmalloc.h | File | 84 B | 0644 |
|
| vmlinux.lds.h | File | 416 B | 0644 |
|
| watchdog.h | File | 3.89 KB | 0644 |
|
| word-at-a-time.h | File | 1.34 KB | 0644 |
|