Subversion Repositories Kolibri OS

Rev

Rev 854 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
854 serge 1
 
2
3
 
4
5
 
6
7
 
8
9
 
10
11
 
12
extrn  __os_stack
13
extrn  _boot_mbi
14
extrn  _sys_pdbr
15
16
 
17
extrn  __edata
18
19
 
20
21
 
22
23
 
24
25
 
26
  dd  0x1BADB002
27
  dd  0x00010003
28
  dd  -(0x1BADB002 + 0x00010003)
29
  dd  mboot
30
  dd  0x100000
31
  dd  __edata; - OS_BASE
32
  dd  LAST_PAGE
33
  dd  __start
34
35
 
36
__start:
37
           cld
38
39
 
40
           push 0
41
           popf
42
43
 
44
           mov ecx, sz_invboot
45
           jne .fault
46
47
 
48
           mov ecx, sz_nomods
49
           jnc .fault
50
51
 
52
           mov ecx, sz_nommap
53
           jnc .fault
54
55
 
56
57
 
58
           cpuid
59
           cmp eax, 0
60
           mov ecx, sz_nopse
61
           jbe .fault
62
63
 
64
           cpuid
65
           bt edx, 3
66
           mov ecx, sz_nopse
67
           jnc .fault
68
69
 
70
71
 
859 serge 72
           mov edi, _sys_pdbr+(OS_BASE shr 20)+(0x100000000-OS_BASE)
854 serge 73
           mov eax, PG_LARGE+PG_SW
74
@@:
75
           stosd
76
           add eax, 4*1024*1024
77
           loop @B
78
79
 
80
           mov dword [_sys_pdbr+(0x100000000-OS_BASE)+4], PG_LARGE+PG_SW+4*1024*1024
81
           mov dword [_sys_pdbr+(0x100000000-OS_BASE)+(page_tabs shr 20)], _sys_pdbr+PG_SW+(0x100000000-OS_BASE)
82
83
 
84
           or ebx, CR4_PSE
85
           and ebx, not CR4_PAE
86
           mov cr4, ebx
87
88
 
89
           mov ebx, cr0
90
           or ebx,CR0_PG+CR0_WP
91
92
 
93
           mov cr0, ebx
94
95
 
96
97
 
98
           mov esi, [ebx+24]
99
           mov ecx, LAST_PAGE
100
           test edx, edx
101
           jz .no_mods
102
.scan_mod:
103
           mov ecx, [esi+4]
104
           add esi, 16
105
           dec edx
106
           jnz .scan_mod
107
108
 
109
           add ecx, 4095
110
           and ecx, not 4095
111
112
 
113
           jmp pword 0x08:_high_code
114
115
 
116
 
117
;           push ecx
118
;           call _lcls
119
;           call __bprintf
120
_hlt:
121
           hlt
122
           jmp _hlt
123
124
 
125
           db 'Halted',0
126
127
 
128
           db 'Halted',0
129
130
 
131
           db 'Halted',0
132
133
 
134
           db 'Halted',0
135