No empty .Rs/.Re
[netbsd-mini2440.git] / sys / arch / ofppc / stand / ofwboot / ofwstart.S
blobff604ec2554d6ea5eab5a0f2d4a0623dc94ff382
1 /* $NetBSD: ofwstart.S,v 1.2 2008/02/13 20:11:38 garbled Exp $ */
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  */
32 #ifdef XCOFF_GLUE
33         .text
34         .globl  _entry
35 _entry:
36         .long   _start,0,0
37 #endif /* XCOFF_GLUE */
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
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
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
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
102         mfmsr   %r8
103         li      %r0,0
104         mtmsr   %r0
105         isync
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
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
124         mtmsr   %r8
125         isync
127         /*
128          * Make sure that .bss is zeroed
129          */
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
137 5:      cmpw    0,%r8,%r9
138         bge     6f
139         stw     %r0,0(%r8)
140         addi    %r8,%r8,4
141         b       5b
143 6:      b       startup