• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/cfe/cfe/arch/mips/board/pt1120/src/
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    ********************************************************************* */
47
48#include "sbmips.h"
49#include "bsp_config.h"
50#include "pt1120.h"
51
52		.text
53
54
55
56#define SETLEDS(a,b,c,d)                     \
57       li     a0,(((a)<<24)|((b)<<16)|((c)<<8)|(d)) ;    \
58       bal    cpu1_setleds
59
60
61		.text
62
63
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    ********************************************************************* */
82
83
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)
88
89LEAF(cpu1_setleds)
90
91		li	t0,PHYS_TO_K1(LEDS_PHYS)
92
93		rol	a0,a0,8
94		and	t1,a0,0xFF
95		sb	t1,LED_CHAR0(t0)
96
97		rol	a0,a0,8
98		and	t1,a0,0xFF
99		sb	t1,LED_CHAR1(t0)
100
101		rol	a0,a0,8
102		and	t1,a0,0xFF
103		sb	t1,LED_CHAR2(t0)
104
105		rol	a0,a0,8
106		and	t1,a0,0xFF
107		sb	t1,LED_CHAR3(t0)
108
109		j	ra
110
111END(cpu1_setleds)
112
113
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    ********************************************************************* */
126
127#define WAITCOUNT 100000000
128
129LEAF(cpu1proc)
130
131		li	s0,0x80001000
132		li	s1,0
133		sd	s1,0(s0)
134
135loop:
136
137		SETLEDS('H','i',' ',' ')
138
139		ld      t0,0(s0)
140		bne	t0,s1,fail
141		add	t0,1
142		add	s1,1
143		sd      t0,0(s0)
144
145		mtc0	zero,C0_COUNT
1461:		li	t0,WAITCOUNT
147		mfc0	t1,C0_COUNT
148		blt	t1,t0,1b
149
150		SETLEDS('M','o','m','!')
151
152		ld      t0,0(s0)
153		bne	t0,s1,fail
154		add	t0,1
155		add	s1,1
156		sd      t0,0(s0)
157
158
159		mtc0	zero,C0_COUNT
1601:		li	t0,WAITCOUNT
161		mfc0	t1,C0_COUNT
162		blt	t1,t0,1b
163
164		b	loop
165
166fail:
167		SETLEDS('F','a','i','l')
1681:		b	1b
169
170
171END(cpu1proc)
172