ofwstart.S revision 1.2.12.1 1 /* $NetBSD: ofwstart.S,v 1.2.12.1 2008/05/18 12:32:34 yamt Exp $ */
2
3 /*-
4 * Copyright (c) 2008 The NetBSD Foundation, Inc.
5 * All rights reserved.
6 *
7 * This code is derived from software contributed to The NetBSD Foundation
8 * by Tim Rightnour
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE.
30 */
31
32 #ifdef XCOFF_GLUE
33 .text
34 .globl _entry
35 _entry:
36 .long _start,0,0
37 #endif /* XCOFF_GLUE */
38
39 .text
40 .globl _start
41 /* This is the magical note section that IBM machines require
42 * to boot. This should be a note, but gnu ld will not let us
43 * position it at the start of the file.
44 */
45 # length of name
46 .long 8
47 # note descriptor size
48 .long 24
49 # note type (IEEE 1275)
50 .long 0x1275
51 # name of owner
52 .asciz "PowerPC"
53 .balign 4
54
55 # note descriptor
56 # real mode (-1) or virtual mode (0)
57 .long -1
58 # real-base
59 .long -1
60 # real-size
61 .long -1
62 # virt-base
63 .long -1
64 # virt-size
65 .long -1
66 # load-base
67 .long 0x4000
68
69 /* note for dealing with IBM LPARs */
70 # length of name
71 .long 24
72 # note descriptor size
73 .long 28
74 # note type
75 .long 0x12759999
76 # name of owner
77 .asciz "IBM,RPA-Client-Config"
78 .balign 4
79
80 # lpar affinity
81 .long 0
82 # minimum size in megabytes
83 .long 64
84 # minimum percentage size
85 .long 0
86 # max pft size ( 2^48 bytes )
87 .long 48
88 # splpar
89 .long 1
90 # min load ?
91 .long -1
92 # new mem def ?
93 .long 0
94
95 _start:
96 sync
97 isync
98 lis %r1,stack@ha
99 addi %r1,%r1,stack@l
100 addi %r1,%r1,8192
101
102 mfmsr %r8
103 li %r0,0
104 mtmsr %r0
105 isync
106
107 mtibatu 0,%r0
108 mtibatu 1,%r0
109 mtibatu 2,%r0
110 mtibatu 3,%r0
111 mtdbatu 0,%r0
112 mtdbatu 1,%r0
113 mtdbatu 2,%r0
114 mtdbatu 3,%r0
115
116 li %r9,0x12 /* BATL(0, BAT_M, BAT_PP_RW) */
117 mtibatl 0,%r9
118 mtdbatl 0,%r9
119 li %r9,0x1ffe /* BATU(0, BAT_BL_256M, BAT_Vs) */
120 mtibatu 0,%r9
121 mtdbatu 0,%r9
122 isync
123
124 mtmsr %r8
125 isync
126
127 /*
128 * Make sure that .bss is zeroed
129 */
130
131 li %r0,0
132 lis %r8,_edata@ha
133 addi %r8,%r8,_edata@l
134 lis %r9,_end@ha
135 addi %r9,%r9,_end@l
136
137 5: cmpw 0,%r8,%r9
138 bge 6f
139 stw %r0,0(%r8)
140 addi %r8,%r8,4
141 b 5b
142
143 6: b startup
144