Subversion Repositories HelenOS

Rev

Rev 1787 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1787 Rev 2071
1
#
1
#
2
# Copyright (C) 2005 Jakub Jermar
2
# Copyright (c) 2005 Jakub Jermar
3
# All rights reserved.
3
# All rights reserved.
4
#
4
#
5
# Redistribution and use in source and binary forms, with or without
5
# Redistribution and use in source and binary forms, with or without
6
# modification, are permitted provided that the following conditions
6
# modification, are permitted provided that the following conditions
7
# are met:
7
# are met:
8
#
8
#
9
# - Redistributions of source code must retain the above copyright
9
# - Redistributions of source code must retain the above copyright
10
#   notice, this list of conditions and the following disclaimer.
10
#   notice, this list of conditions and the following disclaimer.
11
# - Redistributions in binary form must reproduce the above copyright
11
# - Redistributions in binary form must reproduce the above copyright
12
#   notice, this list of conditions and the following disclaimer in the
12
#   notice, this list of conditions and the following disclaimer in the
13
#   documentation and/or other materials provided with the distribution.
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
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.
15
#   derived from this software without specific prior written permission.
16
#
16
#
17
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
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
18
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
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
23
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
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
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.
26
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
#
27
#
28
 
28
 
29
#include <arch/asm/regname.h>
29
#include <arch/asm/regname.h>
30
#include <arch/boot/boot.h>
30
#include <arch/boot/boot.h>
31
 
31
 
32
.section K_TEXT_START, "ax"
32
.section K_TEXT_START, "ax"
33
 
33
 
34
.global kernel_image_start
34
.global kernel_image_start
35
kernel_image_start:
35
kernel_image_start:
36
 
36
 
37
	# load temporal kernel stack
37
	# load temporal kernel stack
38
	
38
	
39
	lis sp, kernel_stack@ha
39
	lis sp, kernel_stack@ha
40
	addi sp, sp, kernel_stack@l
40
	addi sp, sp, kernel_stack@l
41
	
41
	
42
	# set kernel stack for interrupt handling
42
	# set kernel stack for interrupt handling
43
	
43
	
44
	mr r31, sp
44
	mr r31, sp
45
	subis r31, r31, 0x8000
45
	subis r31, r31, 0x8000
46
	mtsprg0 r31
46
	mtsprg0 r31
47
	
47
	
48
	# r3 contains physical address of bootinfo_t
48
	# r3 contains physical address of bootinfo_t
49
	# r4 contains size of bootinfo_t
49
	# r4 contains size of bootinfo_t
50
	
50
	
51
	cmpwi r4, 0
51
	cmpwi r4, 0
52
	beq bootinfo_end
52
	beq bootinfo_end
53
	
53
	
54
	addis r3, r3, 0x8000
54
	addis r3, r3, 0x8000
55
 
55
 
56
	lis r31, bootinfo@ha
56
	lis r31, bootinfo@ha
57
	addi r31, r31, bootinfo@l  # r31 = bootinfo
57
	addi r31, r31, bootinfo@l  # r31 = bootinfo
58
	
58
	
59
	bootinfo_loop:
59
	bootinfo_loop:
60
		
60
		
61
		lwz r30, 0(r3)
61
		lwz r30, 0(r3)
62
		stw r30, 0(r31)
62
		stw r30, 0(r31)
63
		
63
		
64
		addi r3, r3, 4
64
		addi r3, r3, 4
65
		addi r31, r31, 4
65
		addi r31, r31, 4
66
		subi r4, r4, 4
66
		subi r4, r4, 4
67
		
67
		
68
		cmpwi r4, 0
68
		cmpwi r4, 0
69
		bgt bootinfo_loop
69
		bgt bootinfo_loop
70
		
70
		
71
	bootinfo_end:
71
	bootinfo_end:
72
	
72
	
73
	bl arch_pre_main
73
	bl arch_pre_main
74
	b main_bsp
74
	b main_bsp
75
 
75
 
76
.section K_DATA_START, "aw", @progbits
76
.section K_DATA_START, "aw", @progbits
77
 
77
 
78
.align 12
78
.align 12
79
kernel_stack_bottom:
79
kernel_stack_bottom:
80
	.space TEMP_STACK_SIZE
80
	.space TEMP_STACK_SIZE
81
kernel_stack:
81
kernel_stack:
82
 
82