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 ? |