Subversion Repositories HelenOS

Rev

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

Rev 1 Rev 95
1
#
1
#
2
# Copyright (C) 2001-2004 Jakub Jermar
2
# Copyright (C) 2001-2004 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
.section K_TEXT_START
29
.section K_TEXT_START
30
.global kernel_image_start
30
.global kernel_image_start
31
 
31
 
32
.code16
32
.code16
33
#
33
#
34
# This is where we require any SPARTAN-kernel-compatible boot loader
34
# This is where we require any SPARTAN-kernel-compatible boot loader
35
# to pass control in real mode.
35
# to pass control in real mode.
36
#
36
#
37
# Protected mode tables are statically initialised during compile
37
# Protected mode tables are statically initialised during compile
38
# time. So we can just load the respective table registers and
38
# time. So we can just load the respective table registers and
39
# switch to protected mode.
39
# switch to protected mode.
40
#
40
#
41
kernel_image_start:
41
kernel_image_start:
-
 
42
	call memmap_arch_init
42
	cli
43
	cli
43
	xorw %ax,%ax
44
	xorw %ax,%ax
44
	movw %ax,%ds
45
	movw %ax,%ds
45
	lgdt gdtr
46
	lgdt gdtr
46
	movl %cr0,%eax
47
	movl %cr0,%eax
47
	orl $0x1,%eax
48
	orl $0x1,%eax
48
	movl %eax,%cr0
49
	movl %eax,%cr0
49
	jmp 0f
50
	jmp 0f
50
0:
51
0:
51
	movw $16,%ax
52
	movw $16,%ax
52
	movw %ax,%es
53
	movw %ax,%es
53
	movw %ax,%gs
54
	movw %ax,%gs
54
	movw %ax,%fs
55
	movw %ax,%fs
55
	movw %ax,%ds			# kernel data + stack
56
	movw %ax,%ds			# kernel data + stack
56
        movw %ax,%ss
57
        movw %ax,%ss
57
	movl $0x7c00,%esp
58
	movl $0x7c00,%esp
58
	jmpl $8,$meeting_point
59
	jmpl $8,$meeting_point
59
meeting_point:
60
meeting_point:
60
.code32
61
.code32
61
 
62
 
62
	lidt idtr
63
	lidt idtr
63
 
64
 
64
	call main_bsp			# never returns
65
	call main_bsp			# never returns
65
	
66
	
66
 
67
 
67
	cli
68
	cli
68
	hlt
69
	hlt
69
 
70
 
70
 
71
 
71

Generated by GNU Enscript 1.6.6.
72

Generated by GNU Enscript 1.6.6.
72
 
73
 
73
 
74
 
74
 
75