b2e0cc51fab57a92a3100140ec72db14f61dba14
[reactos.git] / reactos / boot / freeldr / freeldr / arch / i386 / mb.S
1 /*
2 * FreeLoader
3 * Copyright (C) 1998-2002 Brian Palmer <brianp@sginet.com>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 */
19
20 .text
21 .code16
22
23 #define ASM
24 #include <arch.h>
25 #include <multiboot.h>
26
27 /*
28 * Here we assume the kernel is loaded at 1mb
29 * This boots the kernel
30 */
31 .code32
32 .globl _PageDirectoryStart
33
34 .globl _startup_pagedirectory
35 .globl _lowmem_pagetable
36 .globl _kernel_pagetable
37 .globl _hyperspace_pagetable
38 .globl _apic_pagetable
39 .globl _kpcr_pagetable
40
41 .globl _startup_pagedirectorytable_pae
42 .globl _startup_pagedirectory_pae
43 .globl _lowmem_pagetable_pae
44 .globl _kernel_pagetable_pae
45 .globl _hyperspace_pagetable_pae
46 .globl _apic_pagetable_pae
47 .globl _kpcr_pagetable_pae
48
49 .globl _PageDirectoryEnd
50
51 //
52 // Boot information structure
53 //
54
55 EXTERN(_multiboot_memory_map_descriptor_size)
56 .long 0
57
58 EXTERN(_multiboot_memory_map)
59 .rept (32 * /*sizeof(memory_map_t)*/24)
60 .byte 0
61 .endr
62
63 .bss
64 _PageDirectoryStart:
65 _startup_pagedirectory:
66 .fill 4096, 1, 0
67
68 _lowmem_pagetable:
69 .fill 4096, 1, 0
70
71 _kernel_pagetable:
72 .fill 2*4096, 1, 0
73
74 _hyperspace_pagetable:
75 .fill 2*4096, 1, 0
76
77 _apic_pagetable:
78 .fill 4096, 1, 0
79
80 _kpcr_pagetable:
81 .fill 4096, 1, 0
82
83 _startup_pagedirectory_pae:
84 .fill 4 * 4096, 1, 0
85
86 _lowmem_pagetable_pae:
87 .fill 2 * 4096, 1, 0
88
89 _kernel_pagetable_pae:
90 .fill 3*4096, 1, 0
91
92 _hyperspace_pagetable_pae:
93 .fill 2*4096, 1, 0
94
95 _apic_pagetable_pae:
96 .fill 2*4096, 1, 0
97
98 _kpcr_pagetable_pae:
99 .fill 4*4096, 1, 0
100
101 _startup_pagedirectorytable_pae:
102 .fill 4096, 1, 0
103 _PageDirectoryEnd: