HEX

Warning: set_time_limit() [function.set-time-limit]: Cannot set time limit - prohibited by configuration in /home/u547966/brikov.ru/www/wp-content/plugins/admin-menu-editor/menu-editor.php on line 745
Server: Apache
System: Linux 4.19.0-0.bpo.9-amd64 x86_64 at red40
User: u547966 (5490)
PHP: 5.3.29-mh2
Disabled: syslog, dl, popen, proc_open, proc_nice, proc_get_status, proc_close, proc_terminate, posix_mkfifo, chown, chgrp, accelerator_reset, opcache_reset, accelerator_get_status, opcache_get_status, pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wifcontinued, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority
Upload Files
File: //usr/src/linux-headers-4.9.0-19-common/arch/sh/include/asm/bitops-cas.h
#ifndef __ASM_SH_BITOPS_CAS_H
#define __ASM_SH_BITOPS_CAS_H

static inline unsigned __bo_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;
}

static inline void set_bit(int nr, volatile void *addr)
{
	unsigned mask, old;
	volatile unsigned *a = addr;

	a += nr >> 5;
	mask = 1U << (nr & 0x1f);

	do old = *a;
	while (__bo_cas(a, old, old|mask) != old);
}

static inline void clear_bit(int nr, volatile void *addr)
{
	unsigned mask, old;
	volatile unsigned *a = addr;

	a += nr >> 5;
	mask = 1U << (nr & 0x1f);

	do old = *a;
	while (__bo_cas(a, old, old&~mask) != old);
}

static inline void change_bit(int nr, volatile void *addr)
{
	unsigned mask, old;
	volatile unsigned *a = addr;

	a += nr >> 5;
	mask = 1U << (nr & 0x1f);

	do old = *a;
	while (__bo_cas(a, old, old^mask) != old);
}

static inline int test_and_set_bit(int nr, volatile void *addr)
{
	unsigned mask, old;
	volatile unsigned *a = addr;

	a += nr >> 5;
	mask = 1U << (nr & 0x1f);

	do old = *a;
	while (__bo_cas(a, old, old|mask) != old);

	return !!(old & mask);
}

static inline int test_and_clear_bit(int nr, volatile void *addr)
{
	unsigned mask, old;
	volatile unsigned *a = addr;

	a += nr >> 5;
	mask = 1U << (nr & 0x1f);

	do old = *a;
	while (__bo_cas(a, old, old&~mask) != old);

	return !!(old & mask);
}

static inline int test_and_change_bit(int nr, volatile void *addr)
{
	unsigned mask, old;
	volatile unsigned *a = addr;

	a += nr >> 5;
	mask = 1U << (nr & 0x1f);

	do old = *a;
	while (__bo_cas(a, old, old^mask) != old);

	return !!(old & mask);
}

#include <asm-generic/bitops/non-atomic.h>

#endif /* __ASM_SH_BITOPS_CAS_H */