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

Quelle  delay.h   Sprache: C

 
/*
 * include/asm-xtensa/delay.h
 *
 * This file is subject to the terms and conditions of the GNU General Public
 * License.  See the file "COPYING" in the main directory of this archive
 * for more details.
 *
 * Copyright (C) 2001 - 2005 Tensilica Inc.
 *
 */


#ifndef _XTENSA_DELAY_H
#define _XTENSA_DELAY_H

#include <asm/timex.h>
#include <asm/param.h>

extern unsigned long loops_per_jiffy;

static inline void __delay(unsigned long loops)
{
 if (__builtin_constant_p(loops) && loops < 2)
  __asm__ __volatile__ ("nop");
 else if (loops >= 2)
  /* 2 cycles per loop. */
  __asm__ __volatile__ ("1: addi %0, %0, -2; bgeui %0, 2, 1b"
    : "+r" (loops));
}

/* Undefined function to get compile-time error */
void __bad_udelay(void);
void __bad_ndelay(void);

#define __MAX_UDELAY 30000
#define __MAX_NDELAY 30000

static inline void __udelay(unsigned long usecs)
{
 unsigned long start = get_ccount();
 unsigned long cycles = (usecs * (ccount_freq >> 15)) >> 5;

 /* Note: all variables are unsigned (can wrap around)! */
 while (((unsigned long)get_ccount()) - start < cycles)
  cpu_relax();
}

static inline void udelay(unsigned long usec)
{
 if (__builtin_constant_p(usec) && usec >= __MAX_UDELAY)
  __bad_udelay();
 else
  __udelay(usec);
}

static inline void __ndelay(unsigned long nsec)
{
 /*
 * Inner shift makes sure multiplication doesn't overflow
 * for legitimate nsec values
 */

 unsigned long cycles = (nsec * (ccount_freq >> 15)) >> 15;
 __delay(cycles);
}

#define ndelay(n) ndelay(n)

static inline void ndelay(unsigned long nsec)
{
 if (__builtin_constant_p(nsec) && nsec >= __MAX_NDELAY)
  __bad_ndelay();
 else
  __ndelay(nsec);
}

#endif

Messung V0.5
C=94 H=88 G=90

¤ Dauer der Verarbeitung: 0.11 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.