Subversion Repositories Kolibri OS

Rev

Rev 581 | Rev 593 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 581 Rev 586
Line 1... Line 1...
1
$Revision: 581 $
1
$Revision: 586 $
Line 2... Line 2...
2
 
2
 
3
MEM_WB     equ 6               ;write-back memory
3
MEM_WB     equ 6               ;write-back memory
4
MEM_WC     equ 1               ;write combined memory
4
MEM_WC     equ 1               ;write combined memory
Line 158... Line 158...
158
           mov [pg_data.pg_mutex-OS_BASE], 0
158
           mov [pg_data.pg_mutex-OS_BASE], 0
159
           ret
159
           ret
160
endp
160
endp
Line 161... Line 161...
161
 
161
 
-
 
162
align 4
-
 
163
 
-
 
164
init_BIOS32:
-
 
165
           mov edi, 0xE0000
-
 
166
.pcibios_nxt:
-
 
167
           cmp dword[edi], '_32_' ; "magic" word
-
 
168
           je .BIOS32_found
-
 
169
.pcibios_nxt2:
-
 
170
           add edi, 0x10
-
 
171
           cmp edi, 0xFFFF0
-
 
172
           je .BIOS32_not_found
-
 
173
           jmp .pcibios_nxt
-
 
174
.BIOS32_found:			; magic word found, check control summ
-
 
175
 
-
 
176
           movzx ecx, byte[edi + 9]
-
 
177
           shl ecx, 4
-
 
178
           mov esi, edi
-
 
179
           xor eax, eax
-
 
180
           cld   ; paranoia
-
 
181
@@:	lodsb
-
 
182
           add ah, al
-
 
183
           loop @b
-
 
184
           jnz .pcibios_nxt2 ; control summ must be zero
-
 
185
    ; BIOS32 service found !
-
 
186
           mov ebp, [edi + 4]
-
 
187
           mov [bios32_entry], ebp
-
 
188
    ; check PCI BIOS present
-
 
189
           mov eax, '$PCI'
-
 
190
           xor ebx, ebx
-
 
191
           push cs  ; special for 'ret far' from  BIOS
-
 
192
           call ebp
-
 
193
           test al, al
-
 
194
           jnz .PCI_BIOS32_not_found
-
 
195
 
-
 
196
 ; çäåñü ñîçäàþòñÿ äèñêðèïòîðû äëÿ PCI BIOS
-
 
197
 
-
 
198
           add ebx, OS_BASE
-
 
199
           dec ecx
-
 
200
           mov [(pci_code_32-OS_BASE)], cx    ;limit 0-15
-
 
201
           mov [(pci_data_32-OS_BASE)], cx    ;limit 0-15
-
 
202
 
-
 
203
           mov [(pci_code_32-OS_BASE)+2], bx  ;base  0-15
-
 
204
           mov [(pci_data_32-OS_BASE)+2], bx  ;base  0-15
-
 
205
 
-
 
206
           shr ebx, 16
-
 
207
           mov [(pci_code_32-OS_BASE)+4], bl  ;base  16-23
-
 
208
           mov [(pci_data_32-OS_BASE)+4], bl  ;base  16-23
-
 
209
 
-
 
210
           shr ecx, 16
-
 
211
           and cl, 0x0F
-
 
212
           mov ch, bh
-
 
213
           add cx, D32
-
 
214
           mov [(pci_code_32-OS_BASE)+6], cx  ;lim   16-19 &
-
 
215
           mov [(pci_data_32-OS_BASE)+6], cx  ;base  24-31
-
 
216
 
-
 
217
           mov [(pci_bios_entry-OS_BASE)], edx
-
 
218
         ; jmp .end
-
 
219
.PCI_BIOS32_not_found:
-
 
220
	; çäåñü äîëæíà çàïîëíÿòñÿ pci_emu_dat
-
 
221
.BIOS32_not_found:
-
 
222
.end:
-
 
223
 
-
 
224
 
162
align 4
225
align 4
163
proc test_cpu
226
proc test_cpu
164
           locals
227
           locals
165
              cpu_type   dd ?
228
              cpu_type   dd ?
166
              cpu_id     dd ?
229
              cpu_id     dd ?