forked from KolibriOS/kolibrios
From Ghost: calls to PCIBIOS services
git-svn-id: svn://kolibrios.org@586 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -159,6 +159,69 @@ proc init_page_map
|
||||
ret
|
||||
endp
|
||||
|
||||
align 4
|
||||
|
||||
init_BIOS32:
|
||||
mov edi, 0xE0000
|
||||
.pcibios_nxt:
|
||||
cmp dword[edi], '_32_' ; "magic" word
|
||||
je .BIOS32_found
|
||||
.pcibios_nxt2:
|
||||
add edi, 0x10
|
||||
cmp edi, 0xFFFF0
|
||||
je .BIOS32_not_found
|
||||
jmp .pcibios_nxt
|
||||
.BIOS32_found: ; magic word found, check control summ
|
||||
|
||||
movzx ecx, byte[edi + 9]
|
||||
shl ecx, 4
|
||||
mov esi, edi
|
||||
xor eax, eax
|
||||
cld ; paranoia
|
||||
@@: lodsb
|
||||
add ah, al
|
||||
loop @b
|
||||
jnz .pcibios_nxt2 ; control summ must be zero
|
||||
; BIOS32 service found !
|
||||
mov ebp, [edi + 4]
|
||||
mov [bios32_entry], ebp
|
||||
; check PCI BIOS present
|
||||
mov eax, '$PCI'
|
||||
xor ebx, ebx
|
||||
push cs ; special for 'ret far' from BIOS
|
||||
call ebp
|
||||
test al, al
|
||||
jnz .PCI_BIOS32_not_found
|
||||
|
||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> PCI BIOS
|
||||
|
||||
add ebx, OS_BASE
|
||||
dec ecx
|
||||
mov [(pci_code_32-OS_BASE)], cx ;limit 0-15
|
||||
mov [(pci_data_32-OS_BASE)], cx ;limit 0-15
|
||||
|
||||
mov [(pci_code_32-OS_BASE)+2], bx ;base 0-15
|
||||
mov [(pci_data_32-OS_BASE)+2], bx ;base 0-15
|
||||
|
||||
shr ebx, 16
|
||||
mov [(pci_code_32-OS_BASE)+4], bl ;base 16-23
|
||||
mov [(pci_data_32-OS_BASE)+4], bl ;base 16-23
|
||||
|
||||
shr ecx, 16
|
||||
and cl, 0x0F
|
||||
mov ch, bh
|
||||
add cx, D32
|
||||
mov [(pci_code_32-OS_BASE)+6], cx ;lim 16-19 &
|
||||
mov [(pci_data_32-OS_BASE)+6], cx ;base 24-31
|
||||
|
||||
mov [(pci_bios_entry-OS_BASE)], edx
|
||||
; jmp .end
|
||||
.PCI_BIOS32_not_found:
|
||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> pci_emu_dat
|
||||
.BIOS32_not_found:
|
||||
.end:
|
||||
|
||||
|
||||
align 4
|
||||
proc test_cpu
|
||||
locals
|
||||
|
Reference in New Issue
Block a user