forked from KolibriOS/kolibrios
Synchronize memmap.inc and const.inc, replace hardcoded numbers with macros.
git-svn-id: svn://kolibrios.org@7122 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
16d9a4a4bc
commit
09684c0db9
@ -789,7 +789,7 @@ set_vmode:
|
||||
; add eax, ebx
|
||||
; push 0x0000
|
||||
; pop es
|
||||
; mov [es:0x9014], eax
|
||||
; mov [es:BOOT_BANK_SW], eax
|
||||
.exit:
|
||||
ret
|
||||
|
||||
|
@ -24,15 +24,15 @@ init_pci_16:
|
||||
|
||||
xor ax, ax
|
||||
mov es, ax
|
||||
mov byte [es:0x9020], 1;default mechanism:1
|
||||
mov byte [es:BOOT_PCI_DATA], 1;default mechanism:1
|
||||
mov ax, 0xb101
|
||||
int 0x1a
|
||||
or ah, ah
|
||||
jnz pci16skip
|
||||
|
||||
mov [es:0x9021], cl;last PCI bus in system
|
||||
mov [es:0x9022], bx
|
||||
mov [es:0x9024], edi
|
||||
mov [es:BOOT_PCI_DATA+1], cl;last PCI bus in system
|
||||
mov [es:BOOT_PCI_DATA+2], bx
|
||||
mov [es:BOOT_PCI_DATA+4], edi
|
||||
|
||||
; we have a PCI BIOS, so check which configuration mechanism(s)
|
||||
; it supports
|
||||
@ -41,7 +41,7 @@ init_pci_16:
|
||||
jnz pci16skip
|
||||
test al, 2
|
||||
jz pci16skip
|
||||
mov byte [es:0x9020], 2; if (al&3)==2 => mechanism 2
|
||||
mov byte [es:BOOT_PCI_DATA], 2; if (al&3)==2 => mechanism 2
|
||||
|
||||
pci16skip:
|
||||
|
||||
|
@ -101,17 +101,17 @@ pci_api_drv:
|
||||
|
||||
pci_fn_0:
|
||||
; PCI function 0: get pci version (AH.AL)
|
||||
movzx eax, word [BOOT_VARS+0x9022]
|
||||
movzx eax, word [BOOT_VARS+BOOT_PCI_DATA+2]
|
||||
ret
|
||||
|
||||
pci_fn_1:
|
||||
; PCI function 1: get last bus in AL
|
||||
mov al, [BOOT_VARS+0x9021]
|
||||
mov al, [BOOT_VARS+BOOT_PCI_DATA+1]
|
||||
ret
|
||||
|
||||
pci_fn_2:
|
||||
; PCI function 2: get pci access mechanism
|
||||
mov al, [BOOT_VARS+0x9020]
|
||||
mov al, [BOOT_VARS+BOOT_PCI_DATA]
|
||||
ret
|
||||
|
||||
pci_service_not_supported:
|
||||
@ -156,7 +156,7 @@ align 4
|
||||
|
||||
pci_read_reg:
|
||||
push ebx esi
|
||||
cmp byte [BOOT_VARS+0x9020], 2;what mechanism will we use?
|
||||
cmp byte [BOOT_VARS+BOOT_PCI_DATA], 2;what mechanism will we use?
|
||||
je pci_read_reg_2
|
||||
|
||||
; mechanism 1
|
||||
@ -260,7 +260,7 @@ align 4
|
||||
|
||||
pci_write_reg:
|
||||
push esi ebx
|
||||
cmp byte [BOOT_VARS+0x9020], 2;what mechanism will we use?
|
||||
cmp byte [BOOT_VARS+BOOT_PCI_DATA], 2;what mechanism will we use?
|
||||
je pci_write_reg_2
|
||||
|
||||
; mechanism 1
|
||||
@ -519,9 +519,9 @@ sys_pcibios:
|
||||
cmp ebp, 1 ; PCI_FUNCTION_ID
|
||||
jnz .not_PCI_BIOS_PRESENT
|
||||
mov edx, 'PCI '
|
||||
mov al, [BOOT_VARS + 0x9020]
|
||||
mov bx, [BOOT_VARS + 0x9022]
|
||||
mov cl, [BOOT_VARS + 0x9021]
|
||||
mov al, [BOOT_VARS + BOOT_PCI_DATA]
|
||||
mov bx, [BOOT_VARS + BOOT_PCI_DATA + 2]
|
||||
mov cl, [BOOT_VARS + BOOT_PCI_DATA + 1]
|
||||
xor ah, ah
|
||||
jmp .return_abcd
|
||||
|
||||
@ -665,7 +665,7 @@ end virtual
|
||||
.next_func:
|
||||
inc dword [.devfn]
|
||||
mov ah, [.bus]
|
||||
cmp ah, [BOOT_VARS+0x9021]
|
||||
cmp ah, [BOOT_VARS+BOOT_PCI_DATA+1]
|
||||
jbe .loop
|
||||
.nomemory:
|
||||
leave
|
||||
|
@ -313,28 +313,25 @@ BOOT_Y_RES equ 0x900C ;word Y res
|
||||
BOOT_BANK_SW equ 0x9014 ;dword Vesa 1.2 pm bank switch
|
||||
BOOT_LFB equ 0x9018 ;dword Vesa 2.0 LFB address
|
||||
BOOT_MTRR equ 0x901C ;byte 0 or 1 : enable MTRR graphics acceleration
|
||||
;BOOT_LOG equ 0x901D ;byte not used anymore (0 or 1 : enable system log display)
|
||||
BOOT_LAUNCHER_START equ 0x901D ;byte (0 or 1) start the first app (right now it's LAUNCHER) after kernel is loaded?
|
||||
;BOOT_DIRECT_LFB equ 0x901E ;byte 0 or 1 : enable direct lfb write, paging disabled
|
||||
BOOT_LAUNCHER_START equ 0x901D ;byte (0 or 1) start the first app (right now it's LAUNCHER) after kernel is loaded?
|
||||
BOOT_DEBUG_PRINT equ 0x901E ;byte If nonzero, duplicates debug output to the screen.
|
||||
BOOT_DMA equ 0x901F ;
|
||||
BOOT_DMA equ 0x901F ;byte DMA write : 1=yes, 2=no
|
||||
BOOT_PCI_DATA equ 0x9020 ;8bytes pci data
|
||||
BOOT_SHUTDOWN_TYPE equ 0x9030 ;byte shutdown type (see sysfn 18.9)
|
||||
;BOOT_IDE_BASE_ADDR equ 0x9031 ;word IDEContrRegsBaseAddr ; now free and is not used
|
||||
BOOT_MEM_AMOUNT equ 0x9034 ;dword memory amount
|
||||
|
||||
BOOT_APM_ENTRY equ 0x9040
|
||||
BOOT_APM_VERSION equ 0x9044
|
||||
BOOT_APM_FLAGS equ 0x9046 ;unused
|
||||
BOOT_APM_FLAGS equ 0x9046
|
||||
BOOT_APM_CODE_32 equ 0x9050
|
||||
BOOT_APM_CODE_16 equ 0x9052
|
||||
BOOT_APM_DATA_16 equ 0x9054
|
||||
;BOOT_IDE_BAR0_16 equ 0x9056 ; now free and is not used
|
||||
;BOOT_IDE_BAR1_16 equ 0x9058 ; now free and is not used
|
||||
;BOOT_IDE_BAR2_16 equ 0x905A ; now free and is not used
|
||||
;BOOT_IDE_BAR3_16 equ 0x905C ; now free and is not used
|
||||
;BOOT_IDE_PI_16 equ 0x905E ; now free and is not used
|
||||
;BOOT_IDE_INTERR_16 equ 0x9060 ; now free and is not used
|
||||
|
||||
BOOT_BIOS_HD_CNT equ 0x907F ; byte number of BIOS hard disks
|
||||
BOOT_BIOS_HD equ 0x9080 ; Nbytes BIOS hard disks
|
||||
BOOT_MEMMAP_BLOCK_CNT equ 0x9100 ; word available physical memory map: number of blocks
|
||||
BOOT_MEMMAP_BLOCKS equ 0x9104 ; available physical memory map: blocks, i.e. e820entry structs
|
||||
MAX_MEMMAP_BLOCKS equ 32
|
||||
|
||||
TMP_FILE_NAME equ 0
|
||||
TMP_CMD_LINE equ 1024
|
||||
@ -936,3 +933,15 @@ struct IRQH
|
||||
data dd ? ;user-specific data
|
||||
num_ints dd ? ;how many times handled
|
||||
ends
|
||||
|
||||
struct DQ
|
||||
lo dd ?
|
||||
hi dd ?
|
||||
ends
|
||||
|
||||
struct e820entry
|
||||
addr DQ ?
|
||||
size DQ ?
|
||||
type dd ?
|
||||
ends
|
||||
|
||||
|
@ -476,7 +476,7 @@ proc load_file stdcall, file_name:dword
|
||||
jne .cleanup
|
||||
|
||||
mov eax, [file]
|
||||
cmp dword [eax], 0x4B43504B
|
||||
cmp dword [eax], 'KPCK'
|
||||
jne .exit
|
||||
mov ebx, [eax+4]
|
||||
mov [file_size], ebx
|
||||
@ -583,7 +583,7 @@ proc load_file_umode stdcall, file_name:dword
|
||||
jne .err_2
|
||||
|
||||
mov eax, [km_file]
|
||||
cmp dword [eax], 0x4B43504B ; check kpack signature
|
||||
cmp dword [eax], 'KPCK' ; check kpack signature
|
||||
jne .raw_file
|
||||
|
||||
mov ebx, [eax+4] ;get real size of file
|
||||
|
@ -1336,7 +1336,7 @@ endp
|
||||
|
||||
align 4
|
||||
proc print_mem
|
||||
mov edi, BOOT_VAR + 0x9104
|
||||
mov edi, BOOT_VAR + BOOT_MEMMAP_BLOCKS
|
||||
mov ecx, [edi-4]
|
||||
test ecx, ecx
|
||||
jz .done
|
||||
|
@ -15,7 +15,7 @@ $Revision$
|
||||
|
||||
xor cx, cx
|
||||
mov es, cx
|
||||
mov di, 0x9080
|
||||
mov di, BOOT_BIOS_HD
|
||||
mov byte [es:di-1], cl
|
||||
cmp [preboot_biosdisk], 1
|
||||
jnz bdde
|
||||
@ -62,7 +62,7 @@ bdds:
|
||||
jb .noide
|
||||
cmp word [es:si+1Ah], 0xFFFF
|
||||
jz .noide
|
||||
inc byte [es:0x907F]
|
||||
inc byte [es:BOOT_BIOS_HD_CNT]
|
||||
mov al, dl
|
||||
stosb
|
||||
push ds
|
||||
@ -95,7 +95,7 @@ bdds:
|
||||
cmp byte [es:si+2Ah], 'B'
|
||||
jz bddc2
|
||||
.nousb:
|
||||
inc byte [es:0x907F]
|
||||
inc byte [es:BOOT_BIOS_HD_CNT]
|
||||
mov al, dl
|
||||
stosb
|
||||
xor ax, ax
|
||||
|
@ -1,6 +1,6 @@
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; ;;
|
||||
;; Copyright (C) KolibriOS team 2009-2015. All rights reserved. ;;
|
||||
;; Copyright (C) KolibriOS team 2009-2017. All rights reserved. ;;
|
||||
;; Distributed under terms of the GNU General Public License ;;
|
||||
;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
@ -17,25 +17,25 @@ $Revision$
|
||||
xor ebx, ebx
|
||||
mov es, bx
|
||||
mov ds, bx
|
||||
mov di, 0x9104
|
||||
mov [di-4], ebx ; no blocks yet
|
||||
mov di, BOOT_MEMMAP_BLOCKS
|
||||
mov [BOOT_MEMMAP_BLOCK_CNT], ebx ; no blocks yet
|
||||
mov ecx, 20
|
||||
mov edx, 0x534D4150
|
||||
mov edx, 'PAMS' ; 'SMAP'
|
||||
int 15h
|
||||
jc no_E820
|
||||
cmp eax, 0x534D4150
|
||||
cmp eax, 'PAMS'
|
||||
jnz no_E820
|
||||
e820_mem_loop:
|
||||
; cmp byte [di+16], 1 ; ignore non-free areas
|
||||
; jnz e820_mem_next
|
||||
inc byte [0x9100]
|
||||
add di, 20
|
||||
inc byte [BOOT_MEMMAP_BLOCK_CNT]
|
||||
add di, sizeof.e820entry
|
||||
e820_mem_next:
|
||||
; consequent calls to fn E820
|
||||
test ebx, ebx
|
||||
jz e820_test_done
|
||||
cmp byte [0x9100], 32
|
||||
jae e820_test_done
|
||||
cmp byte [BOOT_MEMMAP_BLOCK_CNT], MAX_MEMMAP_BLOCKS
|
||||
jz e820_test_done
|
||||
mov eax, 0xE820
|
||||
int 15h
|
||||
jc e820_test_done
|
||||
|
@ -12,7 +12,7 @@
|
||||
$Revision$
|
||||
|
||||
VORTEX86DEBUG = 0 ; For testing in emulators and in non-Vortex86 CPU computers, set this to 1
|
||||
VORTEX86DEBUGVALUE = 0x35504d44 ; FAKE port output = used for testing
|
||||
VORTEX86DEBUGVALUE = 'DMP5' ; FAKE port output = used for testing
|
||||
NORTH_BRIDGE = 0x80000000 ; Base address of Vortex86 PCI North Bridge
|
||||
SOUTH_BRIDGE = 0x80003800 ; Base address of Vortex86 PCI South Bridge
|
||||
|
||||
@ -155,4 +155,4 @@ end if
|
||||
.nullPCIoutput: ; Emulators and non-Vortex86 CPU computers will usually return \0 in this register
|
||||
DEBUGF 1, "0 (NULL)\n"
|
||||
|
||||
.Vortex86end:
|
||||
.Vortex86end:
|
||||
|
@ -15,7 +15,7 @@ MEM_UC equ 0 ;uncached memory
|
||||
align 4
|
||||
proc mem_test
|
||||
; if we have BIOS with fn E820, skip the test
|
||||
cmp dword [BOOT_VARS-OS_BASE + 0x9100], 0
|
||||
cmp dword [BOOT_VARS-OS_BASE + BOOT_MEMMAP_BLOCK_CNT], 0
|
||||
jnz .ret
|
||||
|
||||
mov eax, cr0
|
||||
@ -35,14 +35,14 @@ proc mem_test
|
||||
|
||||
and eax, not (CR0_CD+CR0_NW) ;enable caching
|
||||
mov cr0, eax
|
||||
inc dword [BOOT_VARS-OS_BASE + 0x9100]
|
||||
inc dword [BOOT_VARS-OS_BASE + BOOT_MEMMAP_BLOCK_CNT]
|
||||
xor eax, eax
|
||||
mov [BOOT_VARS-OS_BASE + 0x9104], eax
|
||||
mov [BOOT_VARS-OS_BASE + 0x9108], eax
|
||||
mov [BOOT_VARS-OS_BASE + 0x910C], edi
|
||||
mov [BOOT_VARS-OS_BASE + 0x9110], eax
|
||||
mov [BOOT_VARS-OS_BASE + BOOT_MEMMAP_BLOCKS + e820entry.addr.lo], eax
|
||||
mov [BOOT_VARS-OS_BASE + BOOT_MEMMAP_BLOCKS + e820entry.addr.hi], eax
|
||||
mov [BOOT_VARS-OS_BASE + BOOT_MEMMAP_BLOCKS + e820entry.size.lo], edi
|
||||
mov [BOOT_VARS-OS_BASE + BOOT_MEMMAP_BLOCKS + e820entry.size.hi], eax
|
||||
inc eax
|
||||
mov [BOOT_VARS-OS_BASE + 0x9114], eax
|
||||
mov [BOOT_VARS-OS_BASE + BOOT_MEMMAP_BLOCKS + e820entry.type], eax
|
||||
.ret:
|
||||
ret
|
||||
endp
|
||||
@ -50,7 +50,7 @@ endp
|
||||
align 4
|
||||
proc init_mem
|
||||
; calculate maximum allocatable address and number of allocatable pages
|
||||
mov edi, BOOT_VARS-OS_BASE + 0x9104
|
||||
mov edi, BOOT_VARS-OS_BASE + BOOT_MEMMAP_BLOCKS
|
||||
mov ecx, [edi-4]
|
||||
xor esi, esi; esi will hold total amount of memory
|
||||
xor edx, edx; edx will hold maximum allocatable address
|
||||
@ -197,7 +197,7 @@ proc init_page_map
|
||||
rep stosd
|
||||
|
||||
; scan through memory map and mark free areas as available
|
||||
mov ebx, BOOT_VARS-OS_BASE + 0x9104
|
||||
mov ebx, BOOT_VARS-OS_BASE + BOOT_MEMMAP_BLOCKS
|
||||
mov edx, [ebx-4]
|
||||
.scanmap:
|
||||
cmp [ebx+16], byte 1
|
||||
@ -448,9 +448,9 @@ ACPI_HI_RSDP_WINDOW_START equ 0x000E0000
|
||||
ACPI_HI_RSDP_WINDOW_END equ 0x00100000
|
||||
ACPI_RSDP_CHECKSUM_LENGTH equ 20
|
||||
|
||||
ACPI_HPET_SIGN equ 0x54455048
|
||||
ACPI_MADT_SIGN equ 0x43495041
|
||||
ACPI_FADT_SIGN equ 0x50434146
|
||||
ACPI_HPET_SIGN equ 'HPET'
|
||||
ACPI_MADT_SIGN equ 'APIC'
|
||||
ACPI_FADT_SIGN equ 'FACP'
|
||||
|
||||
|
||||
acpi_locate:
|
||||
@ -477,9 +477,9 @@ acpi_locate:
|
||||
ret
|
||||
|
||||
.check:
|
||||
cmp [ebx], dword 0x20445352
|
||||
cmp [ebx], dword 'RSD '
|
||||
jne .next
|
||||
cmp [ebx+4], dword 0x20525450
|
||||
cmp [ebx+4], dword 'PTR '
|
||||
jne .next
|
||||
|
||||
mov edx, ebx
|
||||
|
@ -447,7 +447,7 @@ high_code:
|
||||
mov al, [BOOT_VARS+BOOT_LAUNCHER_START] ; Start the first app (LAUNCHER) after kernel is loaded?
|
||||
mov [launcher_start], al
|
||||
|
||||
mov esi, BOOT_VARS+0x9080
|
||||
mov esi, BOOT_VARS+BOOT_BIOS_HD
|
||||
movzx ecx, byte [esi-1]
|
||||
mov [NumBiosDisks], ecx
|
||||
mov edi, BiosDisksData
|
||||
@ -2188,9 +2188,9 @@ sys_system:
|
||||
ret
|
||||
;------------------------------------------------------------------------------
|
||||
sysfn_shutdown: ; 18.9 = system shutdown
|
||||
cmp ecx, 1
|
||||
cmp ecx, SYSTEM_SHUTDOWN
|
||||
jl exit_for_anyone
|
||||
cmp ecx, 4
|
||||
cmp ecx, SYSTEM_RESTART
|
||||
jg exit_for_anyone
|
||||
mov [BOOT_VARS+BOOT_SHUTDOWN_TYPE], cl
|
||||
|
||||
|
@ -14,19 +14,20 @@
|
||||
; 0:9008 word vesa video mode
|
||||
; 0:900A word X res
|
||||
; 0:900C word Y res
|
||||
; 0:9010 byte mouse port - not used
|
||||
; 0:9014 dword Vesa 1.2 pm bank switch
|
||||
; 0:9018 dword Vesa 2.0 LFB address
|
||||
; 0:901C byte 0 or 1 : enable MTRR graphics acceleration
|
||||
; 0:901D byte not used anymore (0 or 1 : enable system log display)
|
||||
; 0:901E byte 0 or 1 : enable direct lfb write, paging disabled
|
||||
; 0:901D byte (0 or 1) start the first app (right now it's LAUNCHER) after kernel is loaded?
|
||||
; 0:901E byte If nonzero, duplicates debug output to the screen.
|
||||
; 0:901F byte DMA write : 1=yes, 2=no
|
||||
; 0:9020 8bytes pci data
|
||||
; 0:9030 byte shutdown type (see sysfn 18.9)
|
||||
; 0:9031 word IDEContrRegsBaseAddr
|
||||
; 0x9040 - dword - entry point of APM BIOS
|
||||
; 0x9044 - word - version (BCD)
|
||||
; 0x9046 - word - flags
|
||||
; 0:9040 dword entry point of APM BIOS
|
||||
; 0:9044 word version (BCD)
|
||||
; 0:9046 word flags
|
||||
; 0:9050 word APM_CODE_32
|
||||
; 0:9052 word APM_CODE_16
|
||||
; 0:9054 word APM_DATA_16
|
||||
; 0:907F byte number of BIOS hard disks
|
||||
; 0:9080 Nbytes BIOS hard disks
|
||||
; 0:9100 word available physical memory map: number of blocks
|
||||
|
Loading…
Reference in New Issue
Block a user