Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/arch/sparc/include/asm/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  bitops_32.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * bitops.h: Bit string operations on the Sparc.
 *
 * Copyright 1995 David S. Miller (davem@caip.rutgers.edu)
 * Copyright 1996 Eddie C. Dost   (ecd@skynet.be)
 * Copyright 2001 Anton Blanchard (anton@samba.org)
 */


#ifndef _SPARC_BITOPS_H
#define _SPARC_BITOPS_H

#include <linux/compiler.h>
#include <asm/byteorder.h>

#ifdef __KERNEL__

#ifndef _LINUX_BITOPS_H
#error only <linux/bitops.h> can be included directly
#endif

unsigned long sp32___set_bit(unsigned long *addr, unsigned long mask);
unsigned long sp32___clear_bit(unsigned long *addr, unsigned long mask);
unsigned long sp32___change_bit(unsigned long *addr, unsigned long mask);

/*
 * Set bit 'nr' in 32-bit quantity at address 'addr' where bit '0'
 * is in the highest of the four bytes and bit '31' is the high bit
 * within the first byte. Sparc is BIG-Endian. Unless noted otherwise
 * all bit-ops return 0 if bit was previously clear and != 0 otherwise.
 */

static inline int test_and_set_bit(unsigned long nr, volatile unsigned long *addr)
{
 unsigned long *ADDR, mask;

 ADDR = ((unsigned long *) addr) + (nr >> 5);
 mask = 1 << (nr & 31);

 return sp32___set_bit(ADDR, mask) != 0;
}

static inline void set_bit(unsigned long nr, volatile unsigned long *addr)
{
 unsigned long *ADDR, mask;

 ADDR = ((unsigned long *) addr) + (nr >> 5);
 mask = 1 << (nr & 31);

 (void) sp32___set_bit(ADDR, mask);
}

static inline int test_and_clear_bit(unsigned long nr, volatile unsigned long *addr)
{
 unsigned long *ADDR, mask;

 ADDR = ((unsigned long *) addr) + (nr >> 5);
 mask = 1 << (nr & 31);

 return sp32___clear_bit(ADDR, mask) != 0;
}

static inline void clear_bit(unsigned long nr, volatile unsigned long *addr)
{
 unsigned long *ADDR, mask;

 ADDR = ((unsigned long *) addr) + (nr >> 5);
 mask = 1 << (nr & 31);

 (void) sp32___clear_bit(ADDR, mask);
}

static inline int test_and_change_bit(unsigned long nr, volatile unsigned long *addr)
{
 unsigned long *ADDR, mask;

 ADDR = ((unsigned long *) addr) + (nr >> 5);
 mask = 1 << (nr & 31);

 return sp32___change_bit(ADDR, mask) != 0;
}

static inline void change_bit(unsigned long nr, volatile unsigned long *addr)
{
 unsigned long *ADDR, mask;

 ADDR = ((unsigned long *) addr) + (nr >> 5);
 mask = 1 << (nr & 31);

 (void) sp32___change_bit(ADDR, mask);
}

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

#include <asm-generic/bitops/ffz.h>
#include <asm-generic/bitops/__ffs.h>
#include <asm-generic/bitops/sched.h>
#include <asm-generic/bitops/ffs.h>
#include <asm-generic/bitops/fls.h>
#include <asm-generic/bitops/__fls.h>
#include <asm-generic/bitops/fls64.h>
#include <asm-generic/bitops/hweight.h>
#include <asm-generic/bitops/lock.h>
#include <asm-generic/bitops/le.h>
#include <asm-generic/bitops/ext2-atomic.h>

#endif /* __KERNEL__ */

#endif /* defined(_SPARC_BITOPS_H) */

Messung V0.5
C=96 H=98 G=96

¤ Dauer der Verarbeitung: 0.19 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.