__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * xchg/cmpxchg operations for the Hexagon architecture
 *
 * Copyright (c) 2010-2011, The Linux Foundation. All rights reserved.
 */

#ifndef _ASM_CMPXCHG_H
#define _ASM_CMPXCHG_H

/*
 * __arch_xchg - atomically exchange a register and a memory location
 * @x: value to swap
 * @ptr: pointer to memory
 * @size:  size of the value
 *
 * Only 4 bytes supported currently.
 *
 * Note:  there was an errata for V2 about .new's and memw_locked.
 *
 */
static inline unsigned long
__arch_xchg(unsigned long x, volatile void *ptr, int size)
{
	unsigned long retval;

	/*  Can't seem to use printk or panic here, so just stop  */
	if (size != 4) do { asm volatile("brkpt;\n"); } while (1);

	__asm__ __volatile__ (
	"1:	%0 = memw_locked(%1);\n"    /*  load into retval */
	"	memw_locked(%1,P0) = %2;\n" /*  store into memory */
	"	if (!P0) jump 1b;\n"
	: "=&r" (retval)
	: "r" (ptr), "r" (x)
	: "memory", "p0"
	);
	return retval;
}

/*
 * Atomically swap the contents of a register with memory.  Should be atomic
 * between multiple CPU's and within interrupts on the same CPU.
 */
#define arch_xchg(ptr, v) ((__typeof__(*(ptr)))__arch_xchg((unsigned long)(v), (ptr), \
							   sizeof(*(ptr))))

/*
 *  see rt-mutex-design.txt; cmpxchg supposedly checks if *ptr == A and swaps.
 *  looks just like atomic_cmpxchg on our arch currently with a bunch of
 *  variable casting.
 */

#define arch_cmpxchg(ptr, old, new)				\
({								\
	__typeof__(ptr) __ptr = (ptr);				\
	__typeof__(*(ptr)) __old = (old);			\
	__typeof__(*(ptr)) __new = (new);			\
	__typeof__(*(ptr)) __oldval = (__typeof__(*(ptr))) 0;	\
								\
	asm volatile(						\
		"1:	%0 = memw_locked(%1);\n"		\
		"	{ P0 = cmp.eq(%0,%2);\n"		\
		"	  if (!P0.new) jump:nt 2f; }\n"		\
		"	memw_locked(%1,p0) = %3;\n"		\
		"	if (!P0) jump 1b;\n"			\
		"2:\n"						\
		: "=&r" (__oldval)				\
		: "r" (__ptr), "r" (__old), "r" (__new)		\
		: "memory", "p0"				\
	);							\
	__oldval;						\
})

#endif /* _ASM_CMPXCHG_H */

Filemanager

Name Type Size Permission Actions
Kbuild File 193 B 0644
asm-offsets.h File 35 B 0644
atomic.h File 3.13 KB 0644
bitops.h File 6.46 KB 0644
cache.h File 555 B 0644
cacheflush.h File 2.8 KB 0644
checksum.h File 685 B 0644
cmpxchg.h File 1.97 KB 0644
delay.h File 344 B 0644
dma.h File 300 B 0644
elf.h File 5.62 KB 0644
exec.h File 398 B 0644
fixmap.h File 369 B 0644
fpu.h File 90 B 0644
futex.h File 2.25 KB 0644
hexagon_vm.h File 5.77 KB 0644
intrinsics.h File 369 B 0644
io.h File 2.54 KB 0644
irq.h File 576 B 0644
irqflags.h File 860 B 0644
kgdb.h File 754 B 0644
linkage.h File 237 B 0644
mem-layout.h File 2.8 KB 0644
mmu.h File 490 B 0644
mmu_context.h File 1.51 KB 0644
page.h File 3.58 KB 0644
perf_event.h File 207 B 0644
pgalloc.h File 2.64 KB 0644
pgtable.h File 10.99 KB 0644
processor.h File 2.94 KB 0644
ptrace.h File 626 B 0644
setup.h File 527 B 0644
smp.h File 707 B 0644
spinlock.h File 3.22 KB 0644
spinlock_types.h File 551 B 0644
string.h File 472 B 0644
suspend.h File 238 B 0644
switch_to.h File 478 B 0644
syscall.h File 1.14 KB 0644
syscalls.h File 204 B 0644
thread_info.h File 3.27 KB 0644
time.h File 346 B 0644
timex.h File 495 B 0644
tlb.h File 253 B 0644
tlbflush.h File 1.46 KB 0644
traps.h File 410 B 0644
uaccess.h File 1.1 KB 0644
unistd.h File 244 B 0644
vdso.h File 307 B 0644
vermagic.h File 299 B 0644
vm_fault.h File 359 B 0644
vm_mmu.h File 2.75 KB 0644
vmalloc.h File 99 B 0644
Filemanager