start.S revision 1.1 1 1.1 tsutsui /* $NetBSD: start.S,v 1.1 2005/12/29 15:20:09 tsutsui Exp $ */
2 1.1 tsutsui
3 1.1 tsutsui /*-
4 1.1 tsutsui * Copyright (c) 2004 The NetBSD Foundation, Inc.
5 1.1 tsutsui * All rights reserved.
6 1.1 tsutsui *
7 1.1 tsutsui * This code is derived from software contributed to The NetBSD Foundation
8 1.1 tsutsui * by UCHIYAMA Yasushi.
9 1.1 tsutsui *
10 1.1 tsutsui * Redistribution and use in source and binary forms, with or without
11 1.1 tsutsui * modification, are permitted provided that the following conditions
12 1.1 tsutsui * are met:
13 1.1 tsutsui * 1. Redistributions of source code must retain the above copyright
14 1.1 tsutsui * notice, this list of conditions and the following disclaimer.
15 1.1 tsutsui * 2. Redistributions in binary form must reproduce the above copyright
16 1.1 tsutsui * notice, this list of conditions and the following disclaimer in the
17 1.1 tsutsui * documentation and/or other materials provided with the distribution.
18 1.1 tsutsui * 3. All advertising materials mentioning features or use of this software
19 1.1 tsutsui * must display the following acknowledgement:
20 1.1 tsutsui * This product includes software developed by the NetBSD
21 1.1 tsutsui * Foundation, Inc. and its contributors.
22 1.1 tsutsui * 4. Neither the name of The NetBSD Foundation nor the names of its
23 1.1 tsutsui * contributors may be used to endorse or promote products derived
24 1.1 tsutsui * from this software without specific prior written permission.
25 1.1 tsutsui *
26 1.1 tsutsui * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
27 1.1 tsutsui * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
28 1.1 tsutsui * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29 1.1 tsutsui * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
30 1.1 tsutsui * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
31 1.1 tsutsui * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
32 1.1 tsutsui * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
33 1.1 tsutsui * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
34 1.1 tsutsui * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35 1.1 tsutsui * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36 1.1 tsutsui * POSSIBILITY OF SUCH DAMAGE.
37 1.1 tsutsui */
38 1.1 tsutsui
39 1.1 tsutsui #include <mips/regdef.h>
40 1.1 tsutsui
41 1.1 tsutsui .set noreorder
42 1.1 tsutsui .set mips3
43 1.1 tsutsui .align 2
44 1.1 tsutsui .text
45 1.1 tsutsui /*
46 1.1 tsutsui * Entry point.
47 1.1 tsutsui */
48 1.1 tsutsui .globl start
49 1.1 tsutsui start:
50 1.1 tsutsui nop
51 1.1 tsutsui nop
52 1.1 tsutsui nop
53 1.1 tsutsui nop
54 1.1 tsutsui la sp, _ftext
55 1.1 tsutsui
56 1.1 tsutsui mfc0 t0, $12
57 1.1 tsutsui lui t1, 0x0040 /* BEV : use IPL's exception vector. */
58 1.1 tsutsui and t0, t0, t1
59 1.1 tsutsui mtc0 t0, $12
60 1.1 tsutsui nop
61 1.1 tsutsui la t0, main
62 1.1 tsutsui move a1, v0
63 1.1 tsutsui jr t0
64 1.1 tsutsui move a2, v1 /* v1 = mainfo */
65 1.1 tsutsui 1: b 1b
66 1.1 tsutsui nop
67 1.1 tsutsui /* NOTREACHED */
68 1.1 tsutsui
69 1.1 tsutsui #if 0 /* ROM putc test */
70 1.1 tsutsui li a0, 50 /* x-pos */
71 1.1 tsutsui 2: li a2, 90 /* 'Z' */
72 1.1 tsutsui lui v0, 0xbfc0
73 1.1 tsutsui ori v0, 0xff60
74 1.1 tsutsui li a1, 50 /* y-pos */
75 1.1 tsutsui jal v0
76 1.1 tsutsui nop
77 1.1 tsutsui b 2b
78 1.1 tsutsui addiu a0, a0, 12
79 1.1 tsutsui /* NOTREACHED */
80 1.1 tsutsui #endif
81 1.1 tsutsui #if 0 /* Frame buffer (TLB kseg2 mapped by IPL) test */
82 1.1 tsutsui move a3, zero
83 1.1 tsutsui xori a3, a3, 0x00
84 1.1 tsutsui 3: sll v0, a3, 0x18
85 1.1 tsutsui sra a2, v0, 0x18
86 1.1 tsutsui lui a0, 0xf000
87 1.1 tsutsui move v1, zero
88 1.1 tsutsui lui a1, 0x1
89 1.1 tsutsui ori a1, a1, 0xffff
90 1.1 tsutsui 2: sb a2, 0(a0)
91 1.1 tsutsui addiu v1, v1, 1
92 1.1 tsutsui slt v0, a1, v1
93 1.1 tsutsui addiu a0, a0, 1
94 1.1 tsutsui beqz v0, 2b
95 1.1 tsutsui nop
96 1.1 tsutsui xori a3, a3, 0xff
97 1.1 tsutsui j 3b
98 1.1 tsutsui nop
99 1.1 tsutsui /* NOTREACHED */
100 1.1 tsutsui #endif
101 1.1 tsutsui
102 1.1 tsutsui /*
103 1.1 tsutsui * void tlb_read(int index, void *)
104 1.1 tsutsui */
105 1.1 tsutsui .global tlb_read
106 1.1 tsutsui .ent tlb_read
107 1.1 tsutsui tlb_read:
108 1.1 tsutsui mtc0 a0, $0 /* Index Register */
109 1.1 tsutsui nop; nop; nop; nop;
110 1.1 tsutsui tlbr
111 1.1 tsutsui nop; nop; nop; nop;
112 1.1 tsutsui mfc0 t0, $5 /* PageMask */
113 1.1 tsutsui nop; nop; nop; nop;
114 1.1 tsutsui mfc0 t1, $10 /* EntryHi */
115 1.1 tsutsui nop; nop; nop; nop;
116 1.1 tsutsui mfc0 t2, $2 /* EntryLo0 */
117 1.1 tsutsui nop; nop; nop; nop;
118 1.1 tsutsui mfc0 t3, $3 /* EntryLo1 */
119 1.1 tsutsui nop; nop; nop; nop;
120 1.1 tsutsui sw t0, 0(a1)
121 1.1 tsutsui sw t1, 4(a1)
122 1.1 tsutsui sw t2, 8(a1)
123 1.1 tsutsui sw t3, 12(a1)
124 1.1 tsutsui jr ra
125 1.1 tsutsui nop
126 1.1 tsutsui .end tlb_read
127