-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 143024 b: refs/heads/master c: 216f034 h: refs/heads/master v: v3
- Loading branch information
Michal Simek
committed
Mar 27, 2009
1 parent
1640b9e
commit 2e7a203
Showing
3 changed files
with
91 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: 6496a23add642b7c9203411bdff3ff761835a80a | ||
refs/heads/master: 216f03481d2fca7094f5f982a65acfc2ca14fa85 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
/* | ||
* include/asm-microblaze/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) 2008 Michal Simek | ||
* Copyright (C) 2007 John Williams | ||
* Copyright (C) 2006 Atmark Techno, Inc. | ||
*/ | ||
|
||
#ifndef _ASM_MICROBLAZE_DELAY_H | ||
#define _ASM_MICROBLAZE_DELAY_H | ||
|
||
extern inline void __delay(unsigned long loops) | ||
{ | ||
asm volatile ("# __delay \n\t" \ | ||
"1: addi %0, %0, -1\t\n" \ | ||
"bneid %0, 1b \t\n" \ | ||
"nop \t\n" | ||
: "=r" (loops) | ||
: "0" (loops)); | ||
} | ||
|
||
/* | ||
* Note that 19 * 226 == 4294 ==~ 2^32 / 10^6, so | ||
* loops = (4294 * usecs * loops_per_jiffy * HZ) / 2^32. | ||
* | ||
* The mul instruction gives us loops = (a * b) / 2^32. | ||
* We choose a = usecs * 19 * HZ and b = loops_per_jiffy * 226 | ||
* because this lets us support a wide range of HZ and | ||
* loops_per_jiffy values without either a or b overflowing 2^32. | ||
* Thus we need usecs * HZ <= (2^32 - 1) / 19 = 226050910 and | ||
* loops_per_jiffy <= (2^32 - 1) / 226 = 19004280 | ||
* (which corresponds to ~3800 bogomips at HZ = 100). | ||
* -- paulus | ||
*/ | ||
#define __MAX_UDELAY (226050910UL/HZ) /* maximum udelay argument */ | ||
#define __MAX_NDELAY (4294967295UL/HZ) /* maximum ndelay argument */ | ||
|
||
extern unsigned long loops_per_jiffy; | ||
|
||
extern inline void __udelay(unsigned int x) | ||
{ | ||
|
||
unsigned long long tmp = | ||
(unsigned long long)x * (unsigned long long)loops_per_jiffy \ | ||
* 226LL; | ||
unsigned loops = tmp >> 32; | ||
|
||
/* | ||
__asm__("mulxuu %0,%1,%2" : "=r" (loops) : | ||
"r" (x), "r" (loops_per_jiffy * 226)); | ||
*/ | ||
__delay(loops); | ||
} | ||
|
||
extern void __bad_udelay(void); /* deliberately undefined */ | ||
extern void __bad_ndelay(void); /* deliberately undefined */ | ||
|
||
#define udelay(n) (__builtin_constant_p(n) ? \ | ||
((n) > __MAX_UDELAY ? __bad_udelay() : __udelay((n) * (19 * HZ))) : \ | ||
__udelay((n) * (19 * HZ))) | ||
|
||
#define ndelay(n) (__builtin_constant_p(n) ? \ | ||
((n) > __MAX_NDELAY ? __bad_ndelay() : __udelay((n) * HZ)) : \ | ||
__udelay((n) * HZ)) | ||
|
||
#define muldiv(a, b, c) (((a)*(b))/(c)) | ||
|
||
#endif /* _ASM_MICROBLAZE_DELAY_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
/* | ||
* Copyright (C) 2006 Atmark Techno, Inc. | ||
* | ||
* 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. | ||
*/ | ||
|
||
#ifndef _ASM_MICROBLAZE_TIMEX_H | ||
#define _ASM_MICROBLAZE_TIMEX_H | ||
|
||
#define CLOCK_TICK_RATE 1000 /* Timer input freq. */ | ||
|
||
typedef unsigned long cycles_t; | ||
|
||
#define get_cycles() (0) | ||
|
||
#endif /* _ASM_TIMEX_H */ |