]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - sys/boot/powerpc/ofw/start.c
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / sys / boot / powerpc / ofw / start.c
1 /* $NetBSD: Locore.c,v 1.7 2000/08/20 07:04:59 tsubai Exp $ */
2 /*-
3  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
4  * Copyright (C) 1995, 1996 TooLs GmbH.
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  * 3. All advertising materials mentioning features or use of this software
16  *    must display the following acknowledgement:
17  *      This product includes software developed by TooLs GmbH.
18  * 4. The name of TooLs GmbH may not be used to endorse or promote products
19  *    derived from this software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR
22  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
23  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
24  * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
30  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32
33 #include <sys/cdefs.h>
34 __FBSDID("$FreeBSD$");
35
36 #include <stand.h>
37 #include "libofw.h"
38
39 void startup(void *, int, int (*)(void *), char *, int);
40
41 __asm("                         \n\
42         .data                   \n\
43         .align 4                \n\
44 stack:                          \n\
45         .space  16388           \n\
46                                 \n\
47         .text                   \n\
48         .globl  _start          \n\
49 _start:                         \n\
50         lis     %r1,stack@ha    \n\
51         addi    %r1,%r1,stack@l \n\
52         addi    %r1,%r1,8192    \n\
53                                 \n\
54         /* Clear the .bss!!! */ \n\
55         li      %r0,0           \n\
56         lis     %r8,_edata@ha   \n\
57         addi    %r8,%r8,_edata@l\n\
58         lis     %r9,_end@ha     \n\
59         addi    %r9,%r9,_end@l  \n\
60                                 \n\
61 1:      cmpw    0,%r8,%r9       \n\
62         bge     2f              \n\
63         stw     %r0,0(%r8)      \n\
64         addi    %r8,%r8,4       \n\
65         b       1b              \n\
66                                 \n\
67 2:      b       startup         \n\
68 ");
69
70 void
71 startup(void *vpd, int res, int (*openfirm)(void *), char *arg, int argl)
72 {
73         main(openfirm);
74 }