source: mainline/arch/sparc64/src/start.S@ 41d33ac

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 41d33ac was 30ab05f, checked in by Jakub Jermar <jakub@…>, 19 years ago

sparc64 work.
Very raw and fragile preliminary standalone keyboard support - polling mode only.
Because of a workaround in Simics, the scan codes are the same as on ia32.

  • Property mode set to 100644
File size: 2.9 KB
Line 
1#
2# Copyright (C) 2005 Jakub Jermar
3# All rights reserved.
4#
5# Redistribution and use in source and binary forms, with or without
6# modification, are permitted provided that the following conditions
7# are met:
8#
9# - Redistributions of source code must retain the above copyright
10# notice, this list of conditions and the following disclaimer.
11# - Redistributions in binary form must reproduce the above copyright
12# notice, this list of conditions and the following disclaimer in the
13# documentation and/or other materials provided with the distribution.
14# - The name of the author may not be used to endorse or promote products
15# derived from this software without specific prior written permission.
16#
17# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27#
28
29#include <arch/boot/boot.h>
30
31.register %g2, #scratch
32.register %g3, #scratch
33.register %g6, #scratch
34.register %g7, #scratch
35
36.section K_TEXT_START, "ax"
37
38/*
39 * Here is where the kernel is passed control.
40 * The code must be position independent until
41 * the kernel relocates itself to its VMA.
42 */
43
44.global kernel_image_start
45kernel_image_start:
460:
47 b 1f
48 nop
49
50/*
51 * This header forces SILO to load the kernel at 0x4000.
52 * More precisely, SILO will think this is an old version of Linux.
53 */
54.ascii "HdrS"
55.word 0
56.half 0
57
58.align 8
59
601:
61 flushw ! flush all but the active register window
62
63 /*
64 * Prepare to copy the kernel image to 4M.
65 */
66
67 set LMA, %g1 ! source address
68 set VMA, %g2 ! destination address
69 set hardcoded_ktext_size, %g3 ! link address of hardcoded_ktext_size
70 set hardcoded_kdata_size, %g4 ! link address of hardcoded_kdata_size
71
72 sub %g3, %g2, %g3 ! offset of hardcoded_ktext_size from the beginning of the load address
73 sub %g4, %g2, %g4 ! offset of hardcoded_kdata_size from the beginning of the load address
74
75 ldx [%g3 + %g1], %g3 ! hardcoded_ktext_size -> %g3
76 ldx [%g4 + %g1], %g4 ! hardcoded_kdata_size -> %g4
77
78 add %g3, %g4, %g3 ! size of kernel text and data
79
80 /*
81 * Start copying the kernel from higher addresses towards lower addresses.
82 */
83
842: dec %g3
85 ldub [%g1 + %g3], %g4
86 stb %g4, [%g2 + %g3]
87 cmp %g3, 0
88 bnz 2b
89 nop
90
91 set relocated, %g1
92 jmp %g1
93 nop
94
95relocated:
96 set ofw, %l0
97
98 call ofw_init
99 stx %o4, [%l0]
100
101 call ofw_init_memmap
102 nop
103
104 wrpr %r0, 0, %pil
105
106 call main_bsp
107 nop
108
109 /* Not reached. */
110
1112:
112 b 2b
113 nop
Note: See TracBrowser for help on using the repository browser.