forked from Minki/linux
367b8112fe
Move all header files for xtensa to arch/xtensa/include and platform and variant header files to the appropriate arch/xtensa/platforms/ and arch/xtensa/variants/ directories. Moving the files gets also rid of all uses of symlinks in the Makefile. This has been completed already for the majority of the architectures and xtensa is one out of six missing. Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Chris Zankel <chris@zankel.net>
50 lines
1.1 KiB
C
50 lines
1.1 KiB
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/processor.h>
|
|
#include <asm/param.h>
|
|
|
|
extern unsigned long loops_per_jiffy;
|
|
|
|
static inline void __delay(unsigned long loops)
|
|
{
|
|
/* 2 cycles per loop. */
|
|
__asm__ __volatile__ ("1: addi %0, %0, -2; bgeui %0, 2, 1b"
|
|
: "=r" (loops) : "0" (loops));
|
|
}
|
|
|
|
static __inline__ u32 xtensa_get_ccount(void)
|
|
{
|
|
u32 ccount;
|
|
asm volatile ("rsr %0, 234; # CCOUNT\n" : "=r" (ccount));
|
|
return ccount;
|
|
}
|
|
|
|
/* For SMP/NUMA systems, change boot_cpu_data to something like
|
|
* local_cpu_data->... where local_cpu_data points to the current
|
|
* cpu. */
|
|
|
|
static __inline__ void udelay (unsigned long usecs)
|
|
{
|
|
unsigned long start = xtensa_get_ccount();
|
|
unsigned long cycles = usecs * (loops_per_jiffy / (1000000UL / HZ));
|
|
|
|
/* Note: all variables are unsigned (can wrap around)! */
|
|
while (((unsigned long)xtensa_get_ccount()) - start < cycles)
|
|
;
|
|
}
|
|
|
|
#endif
|
|
|