forked from KolibriOS/kolibrios
kernel: removed unnecessary duplication of BOOT_VAR
git-svn-id: svn://kolibrios.org@3732 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
976e2d52bf
commit
f03da1efd4
@ -101,17 +101,17 @@ pci_api_drv:
|
|||||||
|
|
||||||
pci_fn_0:
|
pci_fn_0:
|
||||||
; PCI function 0: get pci version (AH.AL)
|
; PCI function 0: get pci version (AH.AL)
|
||||||
movzx eax, word [BOOT_VAR+0x9022]
|
movzx eax, word [BOOT_VARS+0x9022]
|
||||||
ret
|
ret
|
||||||
|
|
||||||
pci_fn_1:
|
pci_fn_1:
|
||||||
; PCI function 1: get last bus in AL
|
; PCI function 1: get last bus in AL
|
||||||
mov al, [BOOT_VAR+0x9021]
|
mov al, [BOOT_VARS+0x9021]
|
||||||
ret
|
ret
|
||||||
|
|
||||||
pci_fn_2:
|
pci_fn_2:
|
||||||
; PCI function 2: get pci access mechanism
|
; PCI function 2: get pci access mechanism
|
||||||
mov al, [BOOT_VAR+0x9020]
|
mov al, [BOOT_VARS+0x9020]
|
||||||
ret
|
ret
|
||||||
|
|
||||||
pci_service_not_supported:
|
pci_service_not_supported:
|
||||||
@ -156,7 +156,7 @@ align 4
|
|||||||
|
|
||||||
pci_read_reg:
|
pci_read_reg:
|
||||||
push ebx esi
|
push ebx esi
|
||||||
cmp byte [BOOT_VAR+0x9020], 2;what mechanism will we use?
|
cmp byte [BOOT_VARS+0x9020], 2;what mechanism will we use?
|
||||||
je pci_read_reg_2
|
je pci_read_reg_2
|
||||||
|
|
||||||
; mechanism 1
|
; mechanism 1
|
||||||
@ -287,7 +287,7 @@ align 4
|
|||||||
|
|
||||||
pci_write_reg:
|
pci_write_reg:
|
||||||
push esi ebx
|
push esi ebx
|
||||||
cmp byte [BOOT_VAR+0x9020], 2;what mechanism will we use?
|
cmp byte [BOOT_VARS+0x9020], 2;what mechanism will we use?
|
||||||
je pci_write_reg_2
|
je pci_write_reg_2
|
||||||
|
|
||||||
; mechanism 1
|
; mechanism 1
|
||||||
@ -570,9 +570,9 @@ sys_pcibios:
|
|||||||
cmp ebp, 1 ; PCI_FUNCTION_ID
|
cmp ebp, 1 ; PCI_FUNCTION_ID
|
||||||
jnz .not_PCI_BIOS_PRESENT
|
jnz .not_PCI_BIOS_PRESENT
|
||||||
mov edx, 'PCI '
|
mov edx, 'PCI '
|
||||||
mov al, [BOOT_VAR + 0x9020]
|
mov al, [BOOT_VARS + 0x9020]
|
||||||
mov bx, [BOOT_VAR + 0x9022]
|
mov bx, [BOOT_VARS + 0x9022]
|
||||||
mov cl, [BOOT_VAR + 0x9021]
|
mov cl, [BOOT_VARS + 0x9021]
|
||||||
xor ah, ah
|
xor ah, ah
|
||||||
jmp .return_abcd
|
jmp .return_abcd
|
||||||
|
|
||||||
@ -715,7 +715,7 @@ end virtual
|
|||||||
.next_func:
|
.next_func:
|
||||||
inc dword [.devfn]
|
inc dword [.devfn]
|
||||||
mov ah, [.bus]
|
mov ah, [.bus]
|
||||||
cmp ah, [BOOT_VAR+0x9021]
|
cmp ah, [BOOT_VARS+0x9021]
|
||||||
jbe .loop
|
jbe .loop
|
||||||
.nomemory:
|
.nomemory:
|
||||||
leave
|
leave
|
||||||
|
@ -192,8 +192,12 @@ TASK_BASE equ (OS_BASE+0x0003010)
|
|||||||
TASK_DATA equ (OS_BASE+0x0003020)
|
TASK_DATA equ (OS_BASE+0x0003020)
|
||||||
TASK_EVENT equ (OS_BASE+0x0003020)
|
TASK_EVENT equ (OS_BASE+0x0003020)
|
||||||
|
|
||||||
CDDataBuf equ (OS_BASE+0x0007000)
|
CDDataBuf equ (OS_BASE+0x0005000)
|
||||||
FLOPPY_BUFF equ (OS_BASE+0x0008000) ;18*512
|
|
||||||
|
;unused 0x6000 - 0x8fff
|
||||||
|
|
||||||
|
BOOT_VARS equ (OS_BASE) ;0x9000
|
||||||
|
|
||||||
idts equ (OS_BASE+0x000B100)
|
idts equ (OS_BASE+0x000B100)
|
||||||
WIN_STACK equ (OS_BASE+0x000C000)
|
WIN_STACK equ (OS_BASE+0x000C000)
|
||||||
WIN_POS equ (OS_BASE+0x000C400)
|
WIN_POS equ (OS_BASE+0x000C400)
|
||||||
@ -222,33 +226,13 @@ SLOT_BASE equ (OS_BASE+0x0080000)
|
|||||||
|
|
||||||
VGABasePtr equ (OS_BASE+0x00A0000)
|
VGABasePtr equ (OS_BASE+0x00A0000)
|
||||||
|
|
||||||
;RAMDISK equ (OS_BASE+0x0100000)
|
|
||||||
;RAMDISK_FAT equ (OS_BASE+0x0280000)
|
|
||||||
;FLOPPY_FAT equ (OS_BASE+0x0282000)
|
|
||||||
|
|
||||||
;CLEAN_ZONE equ 0x284000
|
|
||||||
;IDE_DMA equ 0x284000
|
|
||||||
|
|
||||||
CLEAN_ZONE equ (_CLEAN_ZONE-OS_BASE)
|
CLEAN_ZONE equ (_CLEAN_ZONE-OS_BASE)
|
||||||
IDE_DMA equ (_IDE_DMA-OS_BASE)
|
IDE_DMA equ (_IDE_DMA-OS_BASE)
|
||||||
|
|
||||||
;BgrAuxTable equ (OS_BASE+0x0298000)
|
|
||||||
; unused?
|
; unused?
|
||||||
SB16Buffer equ (OS_BASE+0x02A0000)
|
SB16Buffer equ (OS_BASE+0x02A0000)
|
||||||
SB16_Status equ (OS_BASE+0x02B0000)
|
SB16_Status equ (OS_BASE+0x02B0000)
|
||||||
|
|
||||||
;BUTTON_INFO equ (OS_BASE+0x02B3FEE)
|
|
||||||
|
|
||||||
;BPSLine_calc_area equ (OS_BASE+0x02C4000)
|
|
||||||
;d_width_calc_area equ (OS_BASE+0x02CA000)
|
|
||||||
|
|
||||||
;RESERVED_PORTS equ (OS_BASE+0x02D0000)
|
|
||||||
;BOOT_VAR equ (OS_BASE+0x02E0000)
|
|
||||||
|
|
||||||
;draw_data equ (OS_BASE+0x0320000)
|
|
||||||
|
|
||||||
;sys_pgmap equ (OS_BASE+0x0324000)
|
|
||||||
|
|
||||||
UPPER_KERNEL_PAGES equ (OS_BASE+0x0400000)
|
UPPER_KERNEL_PAGES equ (OS_BASE+0x0400000)
|
||||||
|
|
||||||
virtual at (OS_BASE+0x05FFF80)
|
virtual at (OS_BASE+0x05FFF80)
|
||||||
|
@ -358,7 +358,7 @@ proc init_LFB
|
|||||||
|
|
||||||
cmp dword [LFBAddress], -1
|
cmp dword [LFBAddress], -1
|
||||||
jne @f
|
jne @f
|
||||||
mov [BOOT_VAR+BOOT_MTRR], byte 2
|
mov [BOOT_VARS+BOOT_MTRR], byte 2
|
||||||
; max VGA=640*480*4=1228800 bytes
|
; max VGA=640*480*4=1228800 bytes
|
||||||
; + 32*640*4=81920 bytes for mouse pointer
|
; + 32*640*4=81920 bytes for mouse pointer
|
||||||
stdcall alloc_pages, ((1228800+81920)/4096)
|
stdcall alloc_pages, ((1228800+81920)/4096)
|
||||||
@ -378,7 +378,7 @@ proc init_LFB
|
|||||||
@@:
|
@@:
|
||||||
test [SCR_MODE], word 0100000000000000b
|
test [SCR_MODE], word 0100000000000000b
|
||||||
jnz @f
|
jnz @f
|
||||||
mov [BOOT_VAR+BOOT_MTRR], byte 2
|
mov [BOOT_VARS+BOOT_MTRR], byte 2
|
||||||
ret
|
ret
|
||||||
@@:
|
@@:
|
||||||
call init_mtrr
|
call init_mtrr
|
||||||
@ -1361,7 +1361,7 @@ endp
|
|||||||
align 4
|
align 4
|
||||||
proc init_mtrr
|
proc init_mtrr
|
||||||
|
|
||||||
cmp [BOOT_VAR+BOOT_MTRR], byte 2
|
cmp [BOOT_VARS+BOOT_MTRR], byte 2
|
||||||
je .exit
|
je .exit
|
||||||
|
|
||||||
bt [cpu_caps], CAPS_MTRR
|
bt [cpu_caps], CAPS_MTRR
|
||||||
|
@ -327,36 +327,36 @@ diff16 "end of .data segment",0,$
|
|||||||
|
|
||||||
align 16
|
align 16
|
||||||
cur_saved_data:
|
cur_saved_data:
|
||||||
rb 4096
|
rb 4096
|
||||||
fpu_data:
|
fpu_data:
|
||||||
rb 512
|
rb 512
|
||||||
|
|
||||||
mem_block_list rd 64*2
|
mem_block_list rd 64*2
|
||||||
mem_used_list rd 64*2
|
mem_used_list rd 64*2
|
||||||
mem_hash_cnt rd 64
|
mem_hash_cnt rd 64
|
||||||
|
|
||||||
cpu_freq rq 1
|
cpu_freq rq 1
|
||||||
|
|
||||||
heap_mutex MUTEX
|
heap_mutex MUTEX
|
||||||
heap_size rd 1
|
heap_size rd 1
|
||||||
heap_free rd 1
|
heap_free rd 1
|
||||||
heap_blocks rd 1
|
heap_blocks rd 1
|
||||||
free_blocks rd 1
|
free_blocks rd 1
|
||||||
|
|
||||||
mem_block_mask rd 2
|
mem_block_mask rd 2
|
||||||
next_memblock rd 1
|
next_memblock rd 1
|
||||||
|
|
||||||
|
|
||||||
mst MEM_STATE
|
mst MEM_STATE
|
||||||
|
|
||||||
page_start rd 1
|
page_start rd 1
|
||||||
page_end rd 1
|
page_end rd 1
|
||||||
sys_page_map rd 1
|
sys_page_map rd 1
|
||||||
os_stack_seg rd 1
|
os_stack_seg rd 1
|
||||||
|
|
||||||
|
|
||||||
srv.fd rd 1
|
srv.fd rd 1
|
||||||
srv.bk rd 1
|
srv.bk rd 1
|
||||||
|
|
||||||
|
|
||||||
align 16
|
align 16
|
||||||
@ -382,6 +382,7 @@ end if
|
|||||||
|
|
||||||
REDRAW_BACKGROUND rb 4
|
REDRAW_BACKGROUND rb 4
|
||||||
|
|
||||||
|
align 4
|
||||||
draw_data: rb 16*256
|
draw_data: rb 16*256
|
||||||
BPSLine_calc_area rd 1440
|
BPSLine_calc_area rd 1440
|
||||||
d_width_calc_area rd 1140
|
d_width_calc_area rd 1140
|
||||||
@ -402,6 +403,7 @@ MOUSE_COLOR_MEM rd 1
|
|||||||
|
|
||||||
BTN_DOWN: rb 4
|
BTN_DOWN: rb 4
|
||||||
|
|
||||||
|
align 4
|
||||||
def_cursor rd 1
|
def_cursor rd 1
|
||||||
def_cursor_clock rd 1
|
def_cursor_clock rd 1
|
||||||
current_cursor rd 1
|
current_cursor rd 1
|
||||||
@ -416,138 +418,142 @@ cur.bottom rd 1
|
|||||||
cur.w rd 1
|
cur.w rd 1
|
||||||
cur.h rd 1
|
cur.h rd 1
|
||||||
|
|
||||||
ipc_tmp rd 1
|
ipc_tmp rd 1
|
||||||
ipc_pdir rd 1
|
ipc_pdir rd 1
|
||||||
ipc_ptab rd 1
|
ipc_ptab rd 1
|
||||||
|
|
||||||
proc_mem_map rd 1
|
proc_mem_map rd 1
|
||||||
proc_mem_pdir rd 1
|
proc_mem_pdir rd 1
|
||||||
proc_mem_tab rd 1
|
proc_mem_tab rd 1
|
||||||
|
|
||||||
tmp_task_pdir rd 1
|
tmp_task_pdir rd 1
|
||||||
tmp_task_ptab rd 1
|
tmp_task_ptab rd 1
|
||||||
|
|
||||||
default_io_map rd 1
|
default_io_map rd 1
|
||||||
|
|
||||||
LFBSize rd 1
|
LFBSize rd 1
|
||||||
|
|
||||||
current_slot rd 1
|
current_slot rd 1
|
||||||
|
|
||||||
; status
|
; status
|
||||||
hd1_status rd 1 ; 0 - free : other - pid
|
hd1_status rd 1 ; 0 - free : other - pid
|
||||||
application_table_owner rd 1 ; 0 - free : other - pid
|
application_table_owner rd 1 ; 0 - free : other - pid
|
||||||
application_table_mutex MUTEX
|
application_table_mutex MUTEX
|
||||||
|
|
||||||
; device addresses
|
; device addresses
|
||||||
mididp rd 1
|
mididp rd 1
|
||||||
midisp rd 1
|
midisp rd 1
|
||||||
|
|
||||||
cdbase rd 1
|
cdbase rd 1
|
||||||
cdid rd 1
|
cdid rd 1
|
||||||
|
|
||||||
hdbase rd 1 ; for boot 0x1f0
|
hdbase rd 1 ; for boot 0x1f0
|
||||||
hdid rd 1
|
hdid rd 1
|
||||||
hdpos rd 1 ; for boot 0x1
|
hdpos rd 1 ; for boot 0x1
|
||||||
label known_part dword
|
label known_part dword
|
||||||
fat32part rd 1 ; for boot 0x1
|
fat32part rd 1 ; for boot 0x1
|
||||||
cdpos rd 1
|
cdpos rd 1
|
||||||
|
|
||||||
;CPUID information
|
;CPUID information
|
||||||
cpu_vendor rd 3
|
cpu_vendor rd 3
|
||||||
cpu_sign rd 1
|
cpu_sign rd 1
|
||||||
cpu_info rd 1
|
cpu_info rd 1
|
||||||
cpu_caps rd 4
|
cpu_caps rd 4
|
||||||
|
|
||||||
|
|
||||||
pg_data PG_DATA
|
pg_data PG_DATA
|
||||||
heap_test rd 1
|
heap_test rd 1
|
||||||
|
|
||||||
buttontype rd 1
|
buttontype rd 1
|
||||||
windowtypechanged rd 1
|
windowtypechanged rd 1
|
||||||
|
|
||||||
hd_entries rd 1 ;unused ? 0xfe10
|
hd_entries rd 1 ;unused ? 0xfe10
|
||||||
|
|
||||||
mouse_active rd 1
|
mouse_active rd 1
|
||||||
mouse_pause rd 1
|
mouse_pause rd 1
|
||||||
|
|
||||||
redrawmouse_unconditional rd 1
|
redrawmouse_unconditional rd 1
|
||||||
|
|
||||||
img_background rd 1
|
img_background rd 1
|
||||||
mem_BACKGROUND rd 1
|
mem_BACKGROUND rd 1
|
||||||
static_background_data rd 1
|
static_background_data rd 1
|
||||||
|
|
||||||
BgrDrawMode rd 1
|
BgrDrawMode rd 1
|
||||||
BgrDataWidth rd 1
|
BgrDataWidth rd 1
|
||||||
BgrDataHeight rd 1
|
BgrDataHeight rd 1
|
||||||
|
|
||||||
skin_data rd 1
|
skin_data rd 1
|
||||||
|
|
||||||
cache_ide0:
|
cache_ide0:
|
||||||
cache_ide0_pointer rd 1
|
cache_ide0_pointer rd 1
|
||||||
cache_ide0_size rd 1 ; not use
|
cache_ide0_size rd 1 ; not use
|
||||||
cache_ide0_data_pointer rd 1
|
cache_ide0_data_pointer rd 1
|
||||||
cache_ide0_system_data_size rd 1 ; not use
|
cache_ide0_system_data_size rd 1 ; not use
|
||||||
cache_ide0_appl_data_size rd 1 ; not use
|
cache_ide0_appl_data_size rd 1 ; not use
|
||||||
cache_ide0_system_data rd 1
|
cache_ide0_system_data rd 1
|
||||||
cache_ide0_appl_data rd 1
|
cache_ide0_appl_data rd 1
|
||||||
cache_ide0_system_sad_size rd 1
|
cache_ide0_system_sad_size rd 1
|
||||||
cache_ide0_appl_sad_size rd 1
|
cache_ide0_appl_sad_size rd 1
|
||||||
cache_ide0_search_start rd 1
|
cache_ide0_search_start rd 1
|
||||||
cache_ide0_appl_search_start rd 1
|
cache_ide0_appl_search_start rd 1
|
||||||
|
|
||||||
cache_ide1:
|
cache_ide1:
|
||||||
cache_ide1_pointer rd 1
|
cache_ide1_pointer rd 1
|
||||||
cache_ide1_size rd 1 ; not use
|
cache_ide1_size rd 1 ; not use
|
||||||
cache_ide1_data_pointer rd 1
|
cache_ide1_data_pointer rd 1
|
||||||
cache_ide1_system_data_size rd 1 ; not use
|
cache_ide1_system_data_size rd 1 ; not use
|
||||||
cache_ide1_appl_data_size rd 1 ; not use
|
cache_ide1_appl_data_size rd 1 ; not use
|
||||||
cache_ide1_system_data rd 1
|
cache_ide1_system_data rd 1
|
||||||
cache_ide1_appl_data rd 1
|
cache_ide1_appl_data rd 1
|
||||||
cache_ide1_system_sad_size rd 1
|
cache_ide1_system_sad_size rd 1
|
||||||
cache_ide1_appl_sad_size rd 1
|
cache_ide1_appl_sad_size rd 1
|
||||||
cache_ide1_search_start rd 1
|
cache_ide1_search_start rd 1
|
||||||
cache_ide1_appl_search_start rd 1
|
cache_ide1_appl_search_start rd 1
|
||||||
|
|
||||||
cache_ide2:
|
cache_ide2:
|
||||||
cache_ide2_pointer rd 1
|
cache_ide2_pointer rd 1
|
||||||
cache_ide2_size rd 1 ; not use
|
cache_ide2_size rd 1 ; not use
|
||||||
cache_ide2_data_pointer rd 1
|
cache_ide2_data_pointer rd 1
|
||||||
cache_ide2_system_data_size rd 1 ; not use
|
cache_ide2_system_data_size rd 1 ; not use
|
||||||
cache_ide2_appl_data_size rd 1 ; not use
|
cache_ide2_appl_data_size rd 1 ; not use
|
||||||
cache_ide2_system_data rd 1
|
cache_ide2_system_data rd 1
|
||||||
cache_ide2_appl_data rd 1
|
cache_ide2_appl_data rd 1
|
||||||
cache_ide2_system_sad_size rd 1
|
cache_ide2_system_sad_size rd 1
|
||||||
cache_ide2_appl_sad_size rd 1
|
cache_ide2_appl_sad_size rd 1
|
||||||
cache_ide2_search_start rd 1
|
cache_ide2_search_start rd 1
|
||||||
cache_ide2_appl_search_start rd 1
|
cache_ide2_appl_search_start rd 1
|
||||||
|
|
||||||
cache_ide3:
|
cache_ide3:
|
||||||
cache_ide3_pointer rd 1
|
cache_ide3_pointer rd 1
|
||||||
cache_ide3_size rd 1 ; not use
|
cache_ide3_size rd 1 ; not use
|
||||||
cache_ide3_data_pointer rd 1
|
cache_ide3_data_pointer rd 1
|
||||||
cache_ide3_system_data_size rd 1 ; not use
|
cache_ide3_system_data_size rd 1 ; not use
|
||||||
cache_ide3_appl_data_size rd 1 ; not use
|
cache_ide3_appl_data_size rd 1 ; not use
|
||||||
cache_ide3_system_data rd 1
|
cache_ide3_system_data rd 1
|
||||||
cache_ide3_appl_data rd 1
|
cache_ide3_appl_data rd 1
|
||||||
cache_ide3_system_sad_size rd 1
|
cache_ide3_system_sad_size rd 1
|
||||||
cache_ide3_appl_sad_size rd 1
|
cache_ide3_appl_sad_size rd 1
|
||||||
cache_ide3_search_start rd 1
|
cache_ide3_search_start rd 1
|
||||||
cache_ide3_appl_search_start rd 1
|
cache_ide3_appl_search_start rd 1
|
||||||
|
|
||||||
debug_step_pointer rd 1
|
debug_step_pointer rd 1
|
||||||
hdd_appl_data rb 1 ; 0 = system cache, 1 - application cache
|
|
||||||
cd_appl_data rb 1 ; 0 = system cache, 1 - application cache
|
|
||||||
|
|
||||||
lba_read_enabled rd 1 ; 0 = disabled , 1 = enabled
|
lba_read_enabled rd 1 ; 0 = disabled , 1 = enabled
|
||||||
pci_access_enabled rd 1 ; 0 = disabled , 1 = enabled
|
pci_access_enabled rd 1 ; 0 = disabled , 1 = enabled
|
||||||
timer_ticks_enable rb 1 ; for cd driver
|
|
||||||
|
hdd_appl_data rb 1 ; 0 = system cache, 1 - application cache
|
||||||
|
cd_appl_data rb 1 ; 0 = system cache, 1 - application cache
|
||||||
|
|
||||||
|
timer_ticks_enable rb 1 ; for cd driver
|
||||||
|
|
||||||
|
align 4
|
||||||
|
NumBiosDisks rd 1
|
||||||
|
BiosDisksData rb 200h
|
||||||
|
BiosDiskCaches rb 80h*(cache_ide1-cache_ide0)
|
||||||
|
BiosDiskPartitions rd 80h
|
||||||
|
|
||||||
NumBiosDisks rd 1
|
|
||||||
BiosDisksData rb 200h
|
|
||||||
BiosDiskCaches rb 80h*(cache_ide1-cache_ide0)
|
|
||||||
BiosDiskPartitions rd 80h
|
|
||||||
align 16
|
align 16
|
||||||
DRIVE_DATA: rb DRIVE_DATA_SIZE
|
DRIVE_DATA: rb DRIVE_DATA_SIZE
|
||||||
|
|
||||||
IncludeUGlobals
|
IncludeUGlobals
|
||||||
|
|
||||||
@ -559,16 +565,17 @@ end if
|
|||||||
|
|
||||||
org (OS_BASE+0x0100000)
|
org (OS_BASE+0x0100000)
|
||||||
|
|
||||||
RAMDISK: rb 2880*512
|
RAMDISK: rb 2880*512
|
||||||
RAMDISK_FAT: rb 2856*2
|
RAMDISK_FAT: rb 2856*2
|
||||||
FLOPPY_FAT: rb 2856*2
|
FLOPPY_FAT: rb 2856*2
|
||||||
|
|
||||||
_CLEAN_ZONE:
|
_CLEAN_ZONE:
|
||||||
|
|
||||||
align 4096
|
align 4096
|
||||||
_IDE_DMA rb 16*512
|
_IDE_DMA rb 16*512
|
||||||
BgrAuxTable rb 32768
|
BgrAuxTable rb 32768
|
||||||
BUTTON_INFO rb 64*1024
|
BUTTON_INFO rb 64*1024
|
||||||
RESERVED_PORTS: rb 64*1024
|
RESERVED_PORTS: rb 64*1024
|
||||||
BOOT_VAR: rb 64*1024
|
FLOPPY_BUFF: rb 18*512 ;one track
|
||||||
sys_pgmap: rb 1024*1024/8
|
|
||||||
|
sys_pgmap: rb 1024*1024/8
|
||||||
|
@ -15,7 +15,7 @@ MEM_UC equ 0 ;uncached memory
|
|||||||
align 4
|
align 4
|
||||||
proc mem_test
|
proc mem_test
|
||||||
; if we have BIOS with fn E820, skip the test
|
; if we have BIOS with fn E820, skip the test
|
||||||
cmp dword [BOOT_VAR-OS_BASE + 0x9100], 0
|
cmp dword [BOOT_VARS-OS_BASE + 0x9100], 0
|
||||||
jnz .ret
|
jnz .ret
|
||||||
|
|
||||||
mov eax, cr0
|
mov eax, cr0
|
||||||
@ -35,12 +35,12 @@ proc mem_test
|
|||||||
|
|
||||||
and eax, not (CR0_CD+CR0_NW) ;enable caching
|
and eax, not (CR0_CD+CR0_NW) ;enable caching
|
||||||
mov cr0, eax
|
mov cr0, eax
|
||||||
inc dword [BOOT_VAR-OS_BASE + 0x9100]
|
inc dword [BOOT_VARS-OS_BASE + 0x9100]
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
mov [BOOT_VAR-OS_BASE + 0x9104], eax
|
mov [BOOT_VARS-OS_BASE + 0x9104], eax
|
||||||
mov [BOOT_VAR-OS_BASE + 0x9108], eax
|
mov [BOOT_VARS-OS_BASE + 0x9108], eax
|
||||||
mov [BOOT_VAR-OS_BASE + 0x910C], edi
|
mov [BOOT_VARS-OS_BASE + 0x910C], edi
|
||||||
mov [BOOT_VAR-OS_BASE + 0x9110], eax
|
mov [BOOT_VARS-OS_BASE + 0x9110], eax
|
||||||
.ret:
|
.ret:
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
@ -48,7 +48,7 @@ endp
|
|||||||
align 4
|
align 4
|
||||||
proc init_mem
|
proc init_mem
|
||||||
; calculate maximum allocatable address and number of allocatable pages
|
; calculate maximum allocatable address and number of allocatable pages
|
||||||
mov edi, BOOT_VAR-OS_BASE + 0x9104
|
mov edi, BOOT_VARS-OS_BASE + 0x9104
|
||||||
mov ecx, [edi-4]
|
mov ecx, [edi-4]
|
||||||
xor esi, esi; esi will hold total amount of memory
|
xor esi, esi; esi will hold total amount of memory
|
||||||
xor edx, edx; edx will hold maximum allocatable address
|
xor edx, edx; edx will hold maximum allocatable address
|
||||||
@ -195,7 +195,7 @@ proc init_page_map
|
|||||||
rep stosd
|
rep stosd
|
||||||
|
|
||||||
; scan through memory map and mark free areas as available
|
; scan through memory map and mark free areas as available
|
||||||
mov ebx, BOOT_VAR-OS_BASE + 0x9104
|
mov ebx, BOOT_VARS-OS_BASE + 0x9104
|
||||||
mov edx, [ebx-4]
|
mov edx, [ebx-4]
|
||||||
.scanmap:
|
.scanmap:
|
||||||
cmp [ebx+16], byte 1
|
cmp [ebx+16], byte 1
|
||||||
@ -453,6 +453,9 @@ acpi_dev_data rd 1
|
|||||||
acpi_dev_size rd 1
|
acpi_dev_size rd 1
|
||||||
|
|
||||||
acpi_rsdt_base rd 1
|
acpi_rsdt_base rd 1
|
||||||
|
acpi_fadt_base rd 1
|
||||||
|
acpi_dsdt_base rd 1
|
||||||
|
acpi_dsdt_size rd 1
|
||||||
acpi_madt_base rd 1
|
acpi_madt_base rd 1
|
||||||
acpi_ioapic_base rd 1
|
acpi_ioapic_base rd 1
|
||||||
|
|
||||||
@ -464,6 +467,7 @@ ACPI_HI_RSDP_WINDOW_START equ 0x000E0000
|
|||||||
ACPI_HI_RSDP_WINDOW_END equ 0x00100000
|
ACPI_HI_RSDP_WINDOW_END equ 0x00100000
|
||||||
ACPI_RSDP_CHECKSUM_LENGTH equ 20
|
ACPI_RSDP_CHECKSUM_LENGTH equ 20
|
||||||
ACPI_MADT_SIGN equ 0x43495041
|
ACPI_MADT_SIGN equ 0x43495041
|
||||||
|
ACPI_FADT_SIGN equ 0x50434146
|
||||||
|
|
||||||
|
|
||||||
acpi_locate:
|
acpi_locate:
|
||||||
@ -535,9 +539,22 @@ check_acpi:
|
|||||||
jz .done
|
jz .done
|
||||||
|
|
||||||
mov ecx, [eax+16]
|
mov ecx, [eax+16]
|
||||||
mov edx, ACPI_MADT_SIGN
|
mov edx, 0x50434146
|
||||||
mov [acpi_rsdt_base-OS_BASE], ecx
|
mov [acpi_rsdt_base-OS_BASE], ecx
|
||||||
call rsdt_find
|
call rsdt_find
|
||||||
|
mov [acpi_fadt_base-OS_BASE], eax
|
||||||
|
test eax, eax
|
||||||
|
jz @f
|
||||||
|
|
||||||
|
mov eax, [eax+40]
|
||||||
|
mov [acpi_dsdt_base-OS_BASE], eax
|
||||||
|
mov eax, [eax+4]
|
||||||
|
mov [acpi_dsdt_size-OS_BASE], eax
|
||||||
|
|
||||||
|
@@:
|
||||||
|
mov edx, ACPI_MADT_SIGN
|
||||||
|
mov ecx, [acpi_rsdt_base-OS_BASE]
|
||||||
|
call rsdt_find
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jz .done
|
jz .done
|
||||||
|
|
||||||
|
@ -265,12 +265,11 @@ B32:
|
|||||||
|
|
||||||
; SAVE & CLEAR 0-0xffff
|
; SAVE & CLEAR 0-0xffff
|
||||||
|
|
||||||
xor esi, esi
|
|
||||||
mov edi, (BOOT_VAR-OS_BASE)
|
|
||||||
mov ecx, 0x10000 / 4
|
|
||||||
rep movsd
|
|
||||||
mov edi, 0x1000
|
mov edi, 0x1000
|
||||||
mov ecx, 0xf000 / 4
|
mov ecx, 0x8000 / 4
|
||||||
|
rep stosd
|
||||||
|
mov edi, 0xa000
|
||||||
|
mov ecx, 0x6000 / 4
|
||||||
rep stosd
|
rep stosd
|
||||||
|
|
||||||
call test_cpu
|
call test_cpu
|
||||||
@ -359,13 +358,13 @@ high_code:
|
|||||||
|
|
||||||
; SAVE REAL MODE VARIABLES
|
; SAVE REAL MODE VARIABLES
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
mov ax, [BOOT_VAR + BOOT_IDE_PI_16]
|
mov ax, [BOOT_VARS + BOOT_IDE_PI_16]
|
||||||
mov [IDEContrProgrammingInterface], ax
|
mov [IDEContrProgrammingInterface], ax
|
||||||
mov ax, [BOOT_VAR + BOOT_IDE_BASE_ADDR]
|
mov ax, [BOOT_VARS + BOOT_IDE_BASE_ADDR]
|
||||||
mov [IDEContrRegsBaseAddr], ax
|
mov [IDEContrRegsBaseAddr], ax
|
||||||
mov ax, [BOOT_VAR + BOOT_IDE_BAR0_16]
|
mov ax, [BOOT_VARS + BOOT_IDE_BAR0_16]
|
||||||
mov [IDE_BAR0_val], ax
|
mov [IDE_BAR0_val], ax
|
||||||
|
|
||||||
cmp ax, 0
|
cmp ax, 0
|
||||||
je @f
|
je @f
|
||||||
cmp ax, 1
|
cmp ax, 1
|
||||||
@ -375,9 +374,9 @@ high_code:
|
|||||||
mov [hd_address_table], eax
|
mov [hd_address_table], eax
|
||||||
mov [hd_address_table+8], eax
|
mov [hd_address_table+8], eax
|
||||||
@@:
|
@@:
|
||||||
mov ax, [BOOT_VAR + BOOT_IDE_BAR1_16]
|
mov ax, [BOOT_VARS + BOOT_IDE_BAR1_16]
|
||||||
mov [IDE_BAR1_val], ax
|
mov [IDE_BAR1_val], ax
|
||||||
mov ax, [BOOT_VAR + BOOT_IDE_BAR2_16]
|
mov ax, [BOOT_VARS + BOOT_IDE_BAR2_16]
|
||||||
mov [IDE_BAR2_val], ax
|
mov [IDE_BAR2_val], ax
|
||||||
|
|
||||||
cmp ax, 0
|
cmp ax, 0
|
||||||
@ -389,18 +388,18 @@ high_code:
|
|||||||
mov [hd_address_table+16], eax
|
mov [hd_address_table+16], eax
|
||||||
mov [hd_address_table+24], eax
|
mov [hd_address_table+24], eax
|
||||||
@@:
|
@@:
|
||||||
mov ax, [BOOT_VAR + BOOT_IDE_BAR3_16]
|
mov ax, [BOOT_VARS + BOOT_IDE_BAR3_16]
|
||||||
mov [IDE_BAR3_val], ax
|
mov [IDE_BAR3_val], ax
|
||||||
|
|
||||||
; --------------- APM ---------------------
|
; --------------- APM ---------------------
|
||||||
|
|
||||||
; init selectors
|
; init selectors
|
||||||
mov ebx, [BOOT_VAR+BOOT_APM_ENTRY] ; offset of APM entry point
|
mov ebx, [BOOT_VARS+BOOT_APM_ENTRY] ; offset of APM entry point
|
||||||
movzx eax, word [BOOT_VAR+BOOT_APM_CODE_32] ; real-mode segment base address of
|
movzx eax, word [BOOT_VARS+BOOT_APM_CODE_32] ; real-mode segment base address of
|
||||||
; protected-mode 32-bit code segment
|
; protected-mode 32-bit code segment
|
||||||
movzx ecx, word [BOOT_VAR+BOOT_APM_CODE_16]; real-mode segment base address of
|
movzx ecx, word [BOOT_VARS+BOOT_APM_CODE_16]; real-mode segment base address of
|
||||||
; protected-mode 16-bit code segment
|
; protected-mode 16-bit code segment
|
||||||
movzx edx, word [BOOT_VAR+BOOT_APM_DATA_16]; real-mode segment base address of
|
movzx edx, word [BOOT_VARS+BOOT_APM_DATA_16]; real-mode segment base address of
|
||||||
; protected-mode 16-bit data segment
|
; protected-mode 16-bit data segment
|
||||||
|
|
||||||
shl eax, 4
|
shl eax, 4
|
||||||
@ -421,28 +420,28 @@ high_code:
|
|||||||
mov dword[apm_entry], ebx
|
mov dword[apm_entry], ebx
|
||||||
mov word [apm_entry + 4], apm_code_32 - gdts
|
mov word [apm_entry + 4], apm_code_32 - gdts
|
||||||
|
|
||||||
mov eax, [BOOT_VAR + BOOT_APM_VERSION] ; version & flags
|
mov eax, [BOOT_VARS + BOOT_APM_VERSION] ; version & flags
|
||||||
mov [apm_vf], eax
|
mov [apm_vf], eax
|
||||||
; -----------------------------------------
|
; -----------------------------------------
|
||||||
mov al, [BOOT_VAR+BOOT_DMA] ; DMA access
|
mov al, [BOOT_VARS+BOOT_DMA] ; DMA access
|
||||||
mov [allow_dma_access], al
|
mov [allow_dma_access], al
|
||||||
movzx eax, byte [BOOT_VAR+BOOT_BPP] ; bpp
|
movzx eax, byte [BOOT_VARS+BOOT_BPP] ; bpp
|
||||||
mov [_display.bpp], eax
|
mov [_display.bpp], eax
|
||||||
mov [_display.vrefresh], 60
|
mov [_display.vrefresh], 60
|
||||||
|
|
||||||
movzx eax, word [BOOT_VAR+BOOT_X_RES]; X max
|
movzx eax, word [BOOT_VARS+BOOT_X_RES]; X max
|
||||||
mov [_display.width], eax
|
mov [_display.width], eax
|
||||||
mov [display_width_standard], eax
|
mov [display_width_standard], eax
|
||||||
dec eax
|
dec eax
|
||||||
mov [Screen_Max_X], eax
|
mov [Screen_Max_X], eax
|
||||||
mov [screen_workarea.right], eax
|
mov [screen_workarea.right], eax
|
||||||
movzx eax, word [BOOT_VAR+BOOT_Y_RES]; Y max
|
movzx eax, word [BOOT_VARS+BOOT_Y_RES]; Y max
|
||||||
mov [_display.height], eax
|
mov [_display.height], eax
|
||||||
mov [display_height_standard], eax
|
mov [display_height_standard], eax
|
||||||
dec eax
|
dec eax
|
||||||
mov [Screen_Max_Y], eax
|
mov [Screen_Max_Y], eax
|
||||||
mov [screen_workarea.bottom], eax
|
mov [screen_workarea.bottom], eax
|
||||||
movzx eax, word [BOOT_VAR+BOOT_VESA_MODE] ; screen mode
|
movzx eax, word [BOOT_VARS+BOOT_VESA_MODE] ; screen mode
|
||||||
mov dword [SCR_MODE], eax
|
mov dword [SCR_MODE], eax
|
||||||
; mov eax, [BOOT_VAR+0x9014] ; Vesa 1.2 bnk sw add
|
; mov eax, [BOOT_VAR+0x9014] ; Vesa 1.2 bnk sw add
|
||||||
; mov [BANK_SWITCH], eax
|
; mov [BANK_SWITCH], eax
|
||||||
@ -451,7 +450,7 @@ high_code:
|
|||||||
je @f
|
je @f
|
||||||
cmp [SCR_MODE], word 0x12 ; VGA 640x480
|
cmp [SCR_MODE], word 0x12 ; VGA 640x480
|
||||||
je @f
|
je @f
|
||||||
movzx eax, word[BOOT_VAR+BOOT_PITCH] ; for other modes
|
movzx eax, word[BOOT_VARS+BOOT_PITCH] ; for other modes
|
||||||
@@:
|
@@:
|
||||||
mov [_display.pitch], eax
|
mov [_display.pitch], eax
|
||||||
mov eax, [_display.width]
|
mov eax, [_display.width]
|
||||||
@ -464,7 +463,7 @@ high_code:
|
|||||||
; equal to [_display.width] * [ScreenBPP] / 8
|
; equal to [_display.width] * [ScreenBPP] / 8
|
||||||
call calculate_fast_getting_offset_for_LFB
|
call calculate_fast_getting_offset_for_LFB
|
||||||
|
|
||||||
mov esi, BOOT_VAR+0x9080
|
mov esi, BOOT_VARS+0x9080
|
||||||
movzx ecx, byte [esi-1]
|
movzx ecx, byte [esi-1]
|
||||||
mov [NumBiosDisks], ecx
|
mov [NumBiosDisks], ecx
|
||||||
mov edi, BiosDisksData
|
mov edi, BiosDisksData
|
||||||
@ -472,7 +471,7 @@ high_code:
|
|||||||
|
|
||||||
; GRAPHICS ADDRESSES
|
; GRAPHICS ADDRESSES
|
||||||
|
|
||||||
mov eax, [BOOT_VAR+BOOT_LFB]
|
mov eax, [BOOT_VARS+BOOT_LFB]
|
||||||
mov [LFBAddress], eax
|
mov [LFBAddress], eax
|
||||||
|
|
||||||
cmp [SCR_MODE], word 0100000000000000b
|
cmp [SCR_MODE], word 0100000000000000b
|
||||||
@ -917,22 +916,8 @@ end if
|
|||||||
; LOAD FIRST APPLICATION
|
; LOAD FIRST APPLICATION
|
||||||
cli
|
cli
|
||||||
|
|
||||||
; cmp byte [BOOT_VAR+0x9030],1
|
|
||||||
; jne no_load_vrr_m
|
|
||||||
|
|
||||||
; mov ebp, vrr_m
|
|
||||||
; call fs_execute_from_sysdir
|
|
||||||
;
|
|
||||||
;; cmp eax,2 ; if vrr_m app found (PID=2)
|
|
||||||
; sub eax,2
|
|
||||||
; jz first_app_found
|
|
||||||
;
|
|
||||||
;no_load_vrr_m:
|
|
||||||
|
|
||||||
mov ebp, firstapp
|
mov ebp, firstapp
|
||||||
call fs_execute_from_sysdir
|
call fs_execute_from_sysdir
|
||||||
|
|
||||||
; cmp eax,2 ; continue if a process has been loaded
|
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jns first_app_found
|
jns first_app_found
|
||||||
|
|
||||||
@ -1066,17 +1051,17 @@ end if
|
|||||||
|
|
||||||
cmp [IDEContrRegsBaseAddr], 0
|
cmp [IDEContrRegsBaseAddr], 0
|
||||||
setnz [dma_hdd]
|
setnz [dma_hdd]
|
||||||
|
|
||||||
cmp [dma_hdd], 0
|
cmp [dma_hdd], 0
|
||||||
je .print_pio
|
je .print_pio
|
||||||
.print_dma:
|
.print_dma:
|
||||||
DEBUGF 1, "K : IDE DMA mode\n"
|
DEBUGF 1, "K : IDE DMA mode\n"
|
||||||
jmp .continue
|
jmp .continue
|
||||||
|
|
||||||
.print_pio:
|
.print_pio:
|
||||||
DEBUGF 1, "K : IDE PIO mode\n"
|
DEBUGF 1, "K : IDE PIO mode\n"
|
||||||
.continue:
|
.continue:
|
||||||
|
|
||||||
mov [timer_ticks_enable], 1 ; for cd driver
|
mov [timer_ticks_enable], 1 ; for cd driver
|
||||||
|
|
||||||
sti
|
sti
|
||||||
@ -1284,10 +1269,10 @@ set_variables:
|
|||||||
loop .fl60
|
loop .fl60
|
||||||
push eax
|
push eax
|
||||||
|
|
||||||
mov ax, [BOOT_VAR+BOOT_Y_RES]
|
mov ax, [BOOT_VARS+BOOT_Y_RES]
|
||||||
shr ax, 1
|
shr ax, 1
|
||||||
shl eax, 16
|
shl eax, 16
|
||||||
mov ax, [BOOT_VAR+BOOT_X_RES]
|
mov ax, [BOOT_VARS+BOOT_X_RES]
|
||||||
shr ax, 1
|
shr ax, 1
|
||||||
mov [MOUSE_X], eax
|
mov [MOUSE_X], eax
|
||||||
call wakeup_osloop
|
call wakeup_osloop
|
||||||
@ -1683,7 +1668,7 @@ endg
|
|||||||
|
|
||||||
cmp ecx, 1
|
cmp ecx, 1
|
||||||
jnz noprmahd
|
jnz noprmahd
|
||||||
mov eax, [hd_address_table]
|
mov eax, [hd_address_table]
|
||||||
mov [hdbase], eax ;0x1f0
|
mov [hdbase], eax ;0x1f0
|
||||||
and dword [hdid], 0x0
|
and dword [hdid], 0x0
|
||||||
mov dword [hdpos], ecx
|
mov dword [hdpos], ecx
|
||||||
@ -2174,7 +2159,7 @@ sysfn_shutdown: ; 18.9 = system shutdown
|
|||||||
jl exit_for_anyone
|
jl exit_for_anyone
|
||||||
cmp ecx, 4
|
cmp ecx, 4
|
||||||
jg exit_for_anyone
|
jg exit_for_anyone
|
||||||
mov [BOOT_VAR+0x9030], cl
|
mov [BOOT_VARS+0x9030], cl
|
||||||
|
|
||||||
mov eax, [TASK_COUNT]
|
mov eax, [TASK_COUNT]
|
||||||
mov [SYS_SHUTDOWN], al
|
mov [SYS_SHUTDOWN], al
|
||||||
@ -5628,7 +5613,7 @@ undefined_syscall: ; Undefined system call
|
|||||||
align 4
|
align 4
|
||||||
system_shutdown: ; shut down the system
|
system_shutdown: ; shut down the system
|
||||||
|
|
||||||
cmp byte [BOOT_VAR+0x9030], 1
|
cmp byte [BOOT_VARS+0x9030], 1
|
||||||
jne @F
|
jne @F
|
||||||
ret
|
ret
|
||||||
@@:
|
@@:
|
||||||
@ -5653,11 +5638,11 @@ if ~ defined extended_primary_loader
|
|||||||
rep movsb
|
rep movsb
|
||||||
end if
|
end if
|
||||||
|
|
||||||
mov esi, BOOT_VAR ; restore 0x0 - 0xffff
|
; mov esi, BOOT_VAR ; restore 0x0 - 0xffff
|
||||||
mov edi, OS_BASE
|
; mov edi, OS_BASE
|
||||||
mov ecx, 0x10000/4
|
; mov ecx, 0x10000/4
|
||||||
cld
|
; cld
|
||||||
rep movsd
|
; rep movsd
|
||||||
|
|
||||||
call restorefatchain
|
call restorefatchain
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user