mirror of
https://github.com/lewurm/savezelda.git
synced 2024-11-18 00:29:19 +01:00
32 lines
615 B
C
32 lines
615 B
C
|
// Copyright 2008-2009 Segher Boessenkool <segher@kernel.crashing.org>
|
||
|
// This code is licensed to you under the terms of the GNU GPL, version 2;
|
||
|
// see file COPYING or http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
|
||
|
|
||
|
#include "loader.h"
|
||
|
|
||
|
// Timebase frequency is bus frequency / 4. Ignore roundoff, this
|
||
|
// doesn't have to be very accurate.
|
||
|
#define TICKS_PER_USEC (243/4)
|
||
|
|
||
|
static u32 mftb(void)
|
||
|
{
|
||
|
u32 x;
|
||
|
|
||
|
asm volatile("mftb %0" : "=r"(x));
|
||
|
|
||
|
return x;
|
||
|
}
|
||
|
|
||
|
static void __delay(u32 ticks)
|
||
|
{
|
||
|
u32 start = mftb();
|
||
|
|
||
|
while (mftb() - start < ticks)
|
||
|
;
|
||
|
}
|
||
|
|
||
|
void udelay(u32 us)
|
||
|
{
|
||
|
__delay(TICKS_PER_USEC * us);
|
||
|
}
|