sparc64 work:
[helenos.git] / boot / arch / sparc64 / loader / boot.S
blob1cb3ae6346fbb7b631a5a2f558c81915fec5a9a0
2 # Copyright (C) 2006 Martin Decky
3 # Copyright (C) 2006 Jakub Jermar
4 # All rights reserved.
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions
8 # are met:
10 # - Redistributions of source code must retain the above copyright
11 #   notice, this list of conditions and the following disclaimer.
12 # - 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 # - The name of the author may not be used to endorse or promote products
16 #   derived from this software without specific prior written permission.
18 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19 # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21 # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
22 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23 # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 #include <stack.h>
31 #include <register.h>
33 #define INITIAL_STACK_SIZE      1024
35 .register %g2, #scratch
36 .register %g3, #scratch
37 .register %g6, #scratch
38 .register %g7, #scratch
40 .section BOOTSTRAP, "ax"
42 .global start
43 start:
44         b 1f
45         nop
48  * This header forces SILO to load the image at 0x4000.
49  * More precisely, SILO will think this is an old version of Linux.
50  */
51         .ascii "HdrS"
52         .word 0
53         .half 0
55 .align 8
56 1:      
57         flushw
59         /*
60          * Disable interrupts and disable address masking.
61          */
62         wrpr %g0, PSTATE_PRIV_BIT, %pstate
64         set initial_stack_top, %sp
65         add %sp, -STACK_BIAS, %sp
67         set ofw_cif, %l0
69         call ofw_init           ! initialize OpenFirmware
70         stx %o4, [%l0]
71         
72         b bootstrap
73         nop
75 .align STACK_ALIGNMENT
76 initial_stack:
77         .space INITIAL_STACK_SIZE
78 initial_stack_top:
79         .space STACK_WINDOW_SAVE_AREA_SIZE