Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge