~ubuntu-branches/ubuntu/precise/linux-ti-omap4/precise

« back to all changes in this revision

Viewing changes to arch/unicore32/lib/delay.S

  • Committer: Bazaar Package Importer
  • Author(s): Paolo Pisati
  • Date: 2011-06-29 15:23:51 UTC
  • mfrom: (26.1.1 natty-proposed)
  • Revision ID: james.westby@ubuntu.com-20110629152351-xs96tm303d95rpbk
Tags: 3.0.0-1200.2
* Rebased against 3.0.0-6.7
* BSP from TI based on 3.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * linux/arch/unicore32/lib/delay.S
 
3
 *
 
4
 * Code specific to PKUnity SoC and UniCore ISA
 
5
 *
 
6
 * Copyright (C) 2001-2010 GUAN Xue-tao
 
7
 *
 
8
 * This program is free software; you can redistribute it and/or modify
 
9
 * it under the terms of the GNU General Public License version 2 as
 
10
 * published by the Free Software Foundation.
 
11
 */
 
12
#include <linux/linkage.h>
 
13
#include <asm/assembler.h>
 
14
#include <asm/param.h>
 
15
                .text
 
16
 
 
17
.LC0:           .word   loops_per_jiffy
 
18
.LC1:           .word   (2199023*HZ)>>11
 
19
 
 
20
/*
 
21
 * r0  <= 2000
 
22
 * lpj <= 0x01ffffff (max. 3355 bogomips)
 
23
 * HZ  <= 1000
 
24
 */
 
25
 
 
26
ENTRY(__udelay)
 
27
                ldw     r2, .LC1
 
28
                mul     r0, r2, r0
 
29
ENTRY(__const_udelay)                           @ 0 <= r0 <= 0x7fffff06
 
30
                ldw     r2, .LC0
 
31
                ldw     r2, [r2]                @ max = 0x01ffffff
 
32
                mov     r0, r0 >> #14           @ max = 0x0001ffff
 
33
                mov     r2, r2 >> #10           @ max = 0x00007fff
 
34
                mul     r0, r2, r0              @ max = 2^32-1
 
35
                mov.a   r0, r0 >> #6
 
36
                cmoveq  pc, lr
 
37
 
 
38
/*
 
39
 * loops = r0 * HZ * loops_per_jiffy / 1000000
 
40
 *
 
41
 * Oh, if only we had a cycle counter...
 
42
 */
 
43
 
 
44
@ Delay routine
 
45
ENTRY(__delay)
 
46
                sub.a   r0, r0, #2
 
47
                bua     __delay
 
48
                mov     pc, lr
 
49
ENDPROC(__udelay)
 
50
ENDPROC(__const_udelay)
 
51
ENDPROC(__delay)