GUI: Fix Tomato RAF theme for all builds. Compilation typo.
[tomato.git] / release / src-rt-6.x.4708 / cfe / cfe / arch / mips / board / pt1125 / src / cpu1test.S
blob00b36e3ac62a8be458cb64a3be8dfbeca8745546
1 /*  *********************************************************************
2     *  BCM12500 Board Support Package
3     *  
4     *  CPU1 test routines                       File: CPU1TEST.S
5     *
6     *  This file gives CPU1 something to do.
7     *  
8     *  Author:  Mitch Lichtenberg (mpl@broadcom.com)
9     *  
10     *********************************************************************  
11     *
12     *  Copyright 2000,2001
13     *  Broadcom Corporation. All rights reserved.
14     *  
15     *  This software is furnished under license and may be used and 
16     *  copied only in accordance with the following terms and 
17     *  conditions.  Subject to these conditions, you may download, 
18     *  copy, install, use, modify and distribute modified or unmodified 
19     *  copies of this software in source and/or binary form.  No title 
20     *  or ownership is transferred hereby.
21     *  
22     *  1) Any source code used, modified or distributed must reproduce 
23     *     and retain this copyright notice and list of conditions as 
24     *     they appear in the source file.
25     *  
26     *  2) No right is granted to use any trade name, trademark, or 
27     *     logo of Broadcom Corporation. Neither the "Broadcom 
28     *     Corporation" name nor any trademark or logo of Broadcom 
29     *     Corporation may be used to endorse or promote products 
30     *     derived from this software without the prior written 
31     *     permission of Broadcom Corporation.
32     *  
33     *  3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR
34     *     IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED 
35     *     WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR 
36     *     PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT 
37     *     SHALL BROADCOM BE LIABLE FOR ANY DAMAGES WHATSOEVER, AND IN 
38     *     PARTICULAR, BROADCOM SHALL NOT BE LIABLE FOR DIRECT, INDIRECT, 
39     *     INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
40     *     (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
41     *     GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
42     *     BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
43     *     OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 
44     *     TORT (INCLUDING NEGLIGENCE OR OTHERWISE), EVEN IF ADVISED OF 
45     *     THE POSSIBILITY OF SUCH DAMAGE.
46     ********************************************************************* */
48 #include "sbmips.h"
49 #include "bsp_config.h"
50 #include "pt1125.h"
52                 .text
56 #define SETLEDS(a,b,c,d)                     \
57        li     a0,(((a)<<24)|((b)<<16)|((c)<<8)|(d)) ;    \
58        bal    cpu1_setleds
61                 .text
64 /*  *********************************************************************
65     *  BOARD_SETLEDS(x)
66     *  
67     *  Set LEDs for boot-time progress indication.  Not used if
68     *  the board does not have progress LEDs.  This routine
69     *  must not call any other routines, since it may be invoked
70     *  either from KSEG0 or KSEG1 and it may be invoked 
71     *  whether or not the icache is operational.
72     *  
73     *  Input parameters: 
74     *      a0 - LED value (8 bits per character, 4 characters)
75     *      
76     *  Return value:
77     *      nothing
78     *  
79     *  Registers used:
80     *      t0,t1,t2,t3
81     ********************************************************************* */
84 #define LED_CHAR0       (32+8*3)
85 #define LED_CHAR1       (32+8*2)
86 #define LED_CHAR2       (32+8*1)
87 #define LED_CHAR3       (32+8*0)
89 LEAF(cpu1_setleds)
91                 li      t0,PHYS_TO_K1(LEDS_PHYS)
93                 rol     a0,a0,8
94                 and     t1,a0,0xFF
95                 sb      t1,LED_CHAR0(t0)
97                 rol     a0,a0,8
98                 and     t1,a0,0xFF
99                 sb      t1,LED_CHAR1(t0)
101                 rol     a0,a0,8
102                 and     t1,a0,0xFF
103                 sb      t1,LED_CHAR2(t0)
105                 rol     a0,a0,8
106                 and     t1,a0,0xFF
107                 sb      t1,LED_CHAR3(t0)
109                 j       ra
111 END(cpu1_setleds)
114 /*  *********************************************************************
115     *  CPU1PROC()
116     *  
117     *  This routine is started on the secondary processor.  It just
118     *  makes some noise on the LEDs.
119     *  
120     *  Input parameters: 
121     *      nothing
122     *      
123     *  Return value:
124     *      does not return
125     ********************************************************************* */
127 #define WAITCOUNT 100000000
129 LEAF(cpu1proc)
131                 li      s0,0x80001000
132                 li      s1,0
133                 sd      s1,0(s0)
135 loop:
137                 SETLEDS('H','i',' ',' ')
139                 ld      t0,0(s0)
140                 bne     t0,s1,fail
141                 add     t0,1
142                 add     s1,1
143                 sd      t0,0(s0)
145                 mtc0    zero,C0_COUNT
146 1:              li      t0,WAITCOUNT
147                 mfc0    t1,C0_COUNT
148                 blt     t1,t0,1b
150                 SETLEDS('M','o','m','!')
152                 ld      t0,0(s0)
153                 bne     t0,s1,fail
154                 add     t0,1
155                 add     s1,1
156                 sd      t0,0(s0)
159                 mtc0    zero,C0_COUNT
160 1:              li      t0,WAITCOUNT
161                 mfc0    t1,C0_COUNT
162                 blt     t1,t0,1b
164                 b       loop
166 fail:
167                 SETLEDS('F','a','i','l')
168 1:              b       1b
171 END(cpu1proc)