OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [asm-ppc64/] [delay.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
#ifndef _PPC64_DELAY_H
2
#define _PPC64_DELAY_H
3
 
4
/*
5
 * Copyright 1996, Paul Mackerras.
6
 *
7
 * This program is free software; you can redistribute it and/or
8
 * modify it under the terms of the GNU General Public License
9
 * as published by the Free Software Foundation; either version
10
 * 2 of the License, or (at your option) any later version.
11
 *
12
 * PPC64 Support added by Dave Engebretsen, Todd Inglett, Mike Corrigan,
13
 * Anton Blanchard.
14
 */
15
 
16
#ifndef __ASSEMBLY__
17
extern unsigned long tb_ticks_per_usec;
18
 
19
/* define these here to prevent circular dependencies */
20
#define __HMT_low()     asm volatile("or 1,1,1")
21
#define __HMT_medium()  asm volatile("or 2,2,2")
22
#define __barrier()     asm volatile("":::"memory")
23
 
24
static inline unsigned long __get_tb(void)
25
{
26
        unsigned long rval;
27
 
28
        asm volatile("mftb %0" : "=r" (rval));
29
        return rval;
30
}
31
 
32
static inline void __delay(unsigned long loops)
33
{
34
        unsigned long start = __get_tb();
35
 
36
        while((__get_tb()-start) < loops)
37
                __HMT_low();
38
        __HMT_medium();
39
        __barrier();
40
}
41
 
42
static inline void udelay(unsigned long usecs)
43
{
44
        unsigned long loops = tb_ticks_per_usec * usecs;
45
 
46
        __delay(loops);
47
}
48
 
49
static inline void ndelay(unsigned long nsecs)
50
{
51
        unsigned long loops = (tb_ticks_per_usec * nsecs) / 1000;
52
 
53
        __delay(loops);
54
}
55
#endif /* !__ASSEMBLY__ */
56
 
57
#endif /* _PPC64_DELAY_H */

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.