forked from KolibriOS/kolibrios
Update BOOT_DATA structure and use it instead of all the BOOT_* vars.
git-svn-id: svn://kolibrios.org@7132 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -282,18 +282,18 @@ else
|
||||
jnz @f
|
||||
mov word [cs:cfgmanager.loader_block], si
|
||||
mov word [cs:cfgmanager.loader_block+2], ds
|
||||
mov word [es:BOOT_KERNEL_RESTART], kernel_restart_bootblock
|
||||
mov word [es:BOOT_LO.kernel_restart], kernel_restart_bootblock
|
||||
@@:
|
||||
; \end{diamond}[02.12.2005]
|
||||
|
||||
; if bootloader sets cx = 'HA' and dx = 'RD', then bx contains identifier of source disk
|
||||
; (see comment to BOOT_BX_FROM_LOAD and loader_doc.txt)
|
||||
mov word [es:BOOT_BX_FROM_LOAD], 'r1' ; default value: /rd/1
|
||||
; (see comment to BOOT_LO.bx_from_load and loader_doc.txt)
|
||||
mov word [es:BOOT_LO.bx_from_load], 'r1' ; default value: /rd/1
|
||||
cmp cx, 'HA'
|
||||
jnz no_hd_load
|
||||
cmp dx, 'RD'
|
||||
jnz no_hd_load
|
||||
mov [es:BOOT_BX_FROM_LOAD], bx
|
||||
mov [es:BOOT_LO.bx_from_load], bx
|
||||
no_hd_load:
|
||||
|
||||
; set up stack
|
||||
@@ -441,15 +441,15 @@ sayerr:
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
sti
|
||||
; --------------- APM ---------------------
|
||||
and word [es:BOOT_APM_VERSION], 0 ; ver = 0.0 (APM not found)
|
||||
and word [es:BOOT_LO.apm_version], 0 ; ver = 0.0 (APM not found)
|
||||
mov ax, 0x5300
|
||||
xor bx, bx
|
||||
int 0x15
|
||||
jc apm_end ; APM not found
|
||||
test cx, 2
|
||||
jz apm_end ; APM 32-bit protected-mode interface not supported
|
||||
mov [es:BOOT_APM_VERSION], ax ; Save APM Version
|
||||
mov [es:BOOT_APM_FLAGS], cx ; Save APM flags
|
||||
mov [es:BOOT_LO.apm_version], ax ; Save APM Version
|
||||
mov [es:BOOT_LO.apm_flags], cx ; Save APM flags
|
||||
|
||||
; Write APM ver ----
|
||||
and ax, 0xf0f
|
||||
@@ -468,10 +468,10 @@ sayerr:
|
||||
xor bx, bx
|
||||
int 0x15
|
||||
|
||||
mov [es:BOOT_APM_ENTRY], ebx
|
||||
mov [es:BOOT_APM_CODE_32], ax
|
||||
mov [es:BOOT_APM_CODE_16], cx
|
||||
mov [es:BOOT_APM_DATA_16], dx
|
||||
mov [es:BOOT_LO.apm_entry], ebx
|
||||
mov [es:BOOT_LO.apm_code_32], ax
|
||||
mov [es:BOOT_LO.apm_code_16], cx
|
||||
mov [es:BOOT_LO.apm_data_16], dx
|
||||
|
||||
apm_end:
|
||||
_setcursor d80x25_top_num, 0
|
||||
@@ -951,33 +951,33 @@ end if
|
||||
|
||||
; GRAPHICS ACCELERATION
|
||||
; force yes
|
||||
mov [es:BOOT_MTRR], byte 1
|
||||
mov [es:BOOT_LO.mtrr], byte 1
|
||||
|
||||
; DMA ACCESS TO HD
|
||||
|
||||
mov al, [preboot_dma]
|
||||
mov [es:BOOT_DMA], al
|
||||
mov [es:BOOT_LO.dma], al
|
||||
|
||||
; Set kernel DEBUG mode - if nonzero, duplicates debug output to the screen.
|
||||
mov al, [preboot_debug]
|
||||
mov [es:BOOT_DEBUG_PRINT], al ;// 0x901E
|
||||
mov [es:BOOT_LO.debug_print], al ;// 0x901E
|
||||
|
||||
; Start the first app (right now it's LAUNCHER) after kernel is loaded?
|
||||
mov al, [preboot_launcher]
|
||||
mov [es:BOOT_LAUNCHER_START], al ;// 0x901D
|
||||
mov [es:BOOT_LO.launcher_start], al ;// 0x901D
|
||||
|
||||
; BOOT DEVICE
|
||||
|
||||
mov al, [preboot_device]
|
||||
dec al
|
||||
mov [es:BOOT_DEV], al
|
||||
mov [es:BOOT_LO.dev], al
|
||||
|
||||
; GET MEMORY MAP
|
||||
include '../detect/biosmem.inc'
|
||||
|
||||
; READ DISKETTE TO MEMORY
|
||||
|
||||
cmp byte [es:BOOT_DEV], 0
|
||||
cmp byte [es:BOOT_LO.dev], 0
|
||||
jne no_sys_on_floppy
|
||||
mov si, diskload
|
||||
call print
|
||||
@@ -1304,7 +1304,7 @@ no_sys_on_floppy:
|
||||
out dx, al
|
||||
|
||||
if defined extended_primary_loader
|
||||
cmp [es:BOOT_DEV], 1
|
||||
cmp [es:BOOT_LO.dev], 1
|
||||
jne no_sys_from_primary
|
||||
; load kolibri.img using callback from primary loader
|
||||
and word [movedesc + 24 + 2], 0
|
||||
@@ -1343,7 +1343,7 @@ end if
|
||||
xor ax, ax
|
||||
mov es, ax
|
||||
|
||||
mov ax, [es:BOOT_VESA_MODE] ; vga & 320x200
|
||||
mov ax, [es:BOOT_LO.vesa_mode] ; vga & 320x200
|
||||
mov bx, ax
|
||||
cmp ax, 0x13
|
||||
je setgr
|
||||
|
@@ -731,9 +731,9 @@ set_vmode:
|
||||
mov bx, word [es:si+2] ; resolution Y
|
||||
|
||||
|
||||
mov word [es:BOOT_X_RES], ax ; resolution X
|
||||
mov word [es:BOOT_Y_RES], bx ; resolution Y
|
||||
mov word [es:BOOT_VESA_MODE], cx ; number of mode
|
||||
mov word [es:BOOT_LO.x_res], ax ; resolution X
|
||||
mov word [es:BOOT_LO.y_res], bx ; resolution Y
|
||||
mov word [es:BOOT_LO.vesa_mode], cx ; number of mode
|
||||
|
||||
cmp cx, 0x12
|
||||
je .mode0x12_0x13
|
||||
@@ -752,11 +752,11 @@ set_vmode:
|
||||
int 0x10
|
||||
; LFB
|
||||
mov eax, [es:mi.PhysBasePtr];di+0x28]
|
||||
mov [es:BOOT_LFB], eax
|
||||
mov [es:BOOT_LO.lfb], eax
|
||||
; ---- vbe voodoo
|
||||
BytesPerLine equ 0x10
|
||||
mov ax, [es:di+BytesPerLine]
|
||||
mov [es:BOOT_PITCH], ax
|
||||
mov [es:BOOT_LO.pitch], ax
|
||||
; BPP
|
||||
cmp [es:mi.BitsPerPixel], 16
|
||||
jne .l0
|
||||
@@ -765,12 +765,12 @@ set_vmode:
|
||||
mov [es:mi.BitsPerPixel], 15
|
||||
.l0:
|
||||
mov al, byte [es:di+0x19]
|
||||
mov [es:BOOT_BPP], al
|
||||
mov [es:BOOT_LO.bpp], al
|
||||
jmp .exit
|
||||
|
||||
.mode0x12_0x13:
|
||||
mov byte [es:BOOT_BPP], 32
|
||||
or dword [es:BOOT_LFB], 0xFFFFFFFF; 0x800000
|
||||
mov byte [es:BOOT_LO.bpp], 32
|
||||
or dword [es:BOOT_LO.lfb], 0xFFFFFFFF; 0x800000
|
||||
|
||||
|
||||
; VESA 1.2 PM BANK SWITCH ADDRESS
|
||||
@@ -789,7 +789,7 @@ set_vmode:
|
||||
; add eax, ebx
|
||||
; push 0x0000
|
||||
; pop es
|
||||
; mov [es:BOOT_BANK_SW], eax
|
||||
; mov [es:BOOT_LO.bank_sw], eax
|
||||
.exit:
|
||||
ret
|
||||
|
||||
|
@@ -11,7 +11,7 @@ $Revision$
|
||||
read_ramdisk:
|
||||
; READ RAMDISK IMAGE FROM HD (only for IDE0, IDE1, IDE2, IDE3)
|
||||
|
||||
cmp byte [BOOT_DEV+OS_BASE+0x10000], 1
|
||||
cmp byte [BOOT.dev+0x10000], 1
|
||||
jne no_sys_on_hd.1
|
||||
|
||||
xor ebp, ebp
|
||||
@@ -112,7 +112,7 @@ no_sys_on_hd:
|
||||
DEBUGF 1, "K : RD not found\n"
|
||||
.1:
|
||||
; test_to_format_ram_disk (need if not using ram disk)
|
||||
cmp byte [BOOT_DEV+OS_BASE+0x10000], 3
|
||||
cmp byte [BOOT.dev+0x10000], 3
|
||||
jne not_format_ram_disk
|
||||
; format_ram_disk
|
||||
mov edi, RAMDISK
|
||||
|
@@ -16,9 +16,9 @@ $Revision$
|
||||
align 4
|
||||
system_shutdown: ; shut down the system
|
||||
|
||||
cmp byte [BOOT_VARS+BOOT_SHUTDOWN_TYPE], SYSTEM_SHUTDOWN
|
||||
cmp byte [BOOT.shutdown_type], SYSTEM_SHUTDOWN
|
||||
jb @F
|
||||
cmp byte [BOOT_VARS+BOOT_SHUTDOWN_TYPE], SYSTEM_RESTART
|
||||
cmp byte [BOOT.shutdown_type], SYSTEM_RESTART
|
||||
jbe .valid
|
||||
@@:
|
||||
ret
|
||||
@@ -62,7 +62,7 @@ yes_shutdown_param:
|
||||
cli
|
||||
call IRQ_mask_all
|
||||
|
||||
mov eax, [OS_BASE + BOOT_SHUTDOWN_TYPE]
|
||||
mov eax, dword[BOOT.shutdown_type]
|
||||
cmp al, SYSTEM_RESTART
|
||||
jne @F
|
||||
|
||||
@@ -91,7 +91,7 @@ org $-OS_BASE
|
||||
mov eax, cr3
|
||||
mov cr3, eax
|
||||
|
||||
cmp byte [BOOT_SHUTDOWN_TYPE], SYSTEM_SHUTDOWN
|
||||
cmp byte [BOOT_LO.shutdown_type], SYSTEM_SHUTDOWN
|
||||
jne no_acpi_power_off
|
||||
|
||||
; system_power_off
|
||||
@@ -179,7 +179,7 @@ align 4
|
||||
restart_code_start:
|
||||
org 0x50000
|
||||
|
||||
cmp byte [BOOT_SHUTDOWN_TYPE], SYSTEM_RESTART
|
||||
cmp byte [BOOT_LO.shutdown_type], SYSTEM_RESTART
|
||||
jne @F
|
||||
|
||||
mov esi, _CLEAN_ZONE-OS_BASE
|
||||
@@ -277,7 +277,7 @@ align 4
|
||||
|
||||
xor ax, ax
|
||||
mov ds, ax
|
||||
mov al, [BOOT_SHUTDOWN_TYPE]
|
||||
mov al, [BOOT_LO.shutdown_type]
|
||||
cmp al, SYSTEM_RESTART
|
||||
je .restart
|
||||
|
||||
@@ -350,7 +350,7 @@ align 4
|
||||
pop ds
|
||||
push 0
|
||||
pop es
|
||||
mov si, [es:BOOT_KERNEL_RESTART]
|
||||
mov si, [es:BOOT_LO.kernel_restart]
|
||||
mov ax, 'KL'
|
||||
jmp 0x1000:0000
|
||||
|
||||
|
@@ -70,7 +70,7 @@ main:
|
||||
cmp [rdi + 8], rdx
|
||||
jnz .not_acpi20
|
||||
mov rax, [rdi + 16]
|
||||
mov rdx, BOOT_ACPI_RSDP
|
||||
mov rdx, BOOT_LO.acpi_rsdp
|
||||
mov [rdx], eax
|
||||
;jmp $
|
||||
jmp .all_tables_done
|
||||
@@ -157,27 +157,27 @@ main:
|
||||
mov rcx, [gop_info]
|
||||
mov eax, [rcx + EFI_GRAPHICS_OUTPUT_MODE_INFORMATION.HorizontalResolution]
|
||||
xor rdx, rdx
|
||||
mov word [rdx + BOOT_X_RES], ax
|
||||
mov word [rdx + BOOT_LO.x_res], ax
|
||||
mov eax, [rcx + EFI_GRAPHICS_OUTPUT_MODE_INFORMATION.VerticalResolution]
|
||||
mov word [rdx + BOOT_Y_RES], ax
|
||||
mov word [rdx + BOOT_LO.y_res], ax
|
||||
mov eax, [rcx + EFI_GRAPHICS_OUTPUT_MODE_INFORMATION.PixelsPerScanLine]
|
||||
shl eax, 2
|
||||
mov word [rdx + BOOT_PITCH], ax
|
||||
mov word [rdx + BOOT_LO.pitch], ax
|
||||
|
||||
mov byte [rdx + BOOT_PCI_DATA + 0], 1
|
||||
mov byte [rdx + BOOT_PCI_DATA + 1], 0
|
||||
mov byte [rdx + BOOT_PCI_DATA + 2], 0x10
|
||||
mov byte [rdx + BOOT_PCI_DATA + 3], 0x02
|
||||
mov dword [rdx + BOOT_PCI_DATA + 4], 0xe3
|
||||
mov byte [rdx + BOOT_LO.pci_data + 0], 1
|
||||
mov byte [rdx + BOOT_LO.pci_data + 1], 0
|
||||
mov byte [rdx + BOOT_LO.pci_data + 2], 0x10
|
||||
mov byte [rdx + BOOT_LO.pci_data + 3], 0x02
|
||||
mov dword [rdx + BOOT_LO.pci_data + 4], 0xe3
|
||||
|
||||
|
||||
uefi_call_wrapper BootServices, GetMemoryMap, memory_map_size, memory_map, memory_map_key, descriptor_size, descriptor_ver
|
||||
cmp eax, EFI_SUCCESS
|
||||
jnz .error
|
||||
|
||||
mov rdi, BOOT_MEMMAP_BLOCK_CNT
|
||||
mov rdi, BOOT_LO.memmap_block_cnt
|
||||
mov dword[rdi], 0
|
||||
mov rdi, BOOT_MEMMAP_BLOCKS
|
||||
mov rdi, BOOT_LO.memmap_blocks
|
||||
mov rax, [memory_map_size]
|
||||
xor edx, edx
|
||||
mov rcx, [descriptor_size]
|
||||
@@ -215,24 +215,24 @@ main:
|
||||
rep movsq
|
||||
|
||||
xor esi, esi
|
||||
mov byte[esi + BOOT_BPP], 32
|
||||
mov word[esi + BOOT_VESA_MODE], 0
|
||||
mov dword[esi + BOOT_BANK_SW], 0
|
||||
mov byte[esi + BOOT_LO.bpp], 32
|
||||
mov word[esi + BOOT_LO.vesa_mode], 0
|
||||
mov dword[esi + BOOT_LO.bank_switch], 0
|
||||
mov rdi, [fb_base]
|
||||
mov dword[esi + BOOT_LFB], edi
|
||||
mov byte[esi + BOOT_MTRR], 1
|
||||
mov byte[esi + BOOT_LAUNCHER_START], 1
|
||||
mov byte[esi + BOOT_DEBUG_PRINT], 1
|
||||
mov byte[esi + BOOT_DMA], 0
|
||||
; mov qword[esi + BOOT_PCI_DATA], 0
|
||||
mov dword[esi + BOOT_APM_ENTRY], 0
|
||||
mov word[esi + BOOT_APM_VERSION], 0
|
||||
mov dword[esi + BOOT_APM_FLAGS], 0
|
||||
mov word[esi + BOOT_APM_CODE_32], 0
|
||||
mov word[esi + BOOT_APM_CODE_16], 0
|
||||
mov word[esi + BOOT_APM_DATA_16], 0
|
||||
mov byte[esi + BOOT_BIOS_HD_CNT], 0
|
||||
mov word[esi + BOOT_BX_FROM_LOAD], 'r1' ; boot from /rd/1
|
||||
mov dword[esi + BOOT_LO.lfb], edi
|
||||
mov byte[esi + BOOT_LO.mtrr], 1
|
||||
mov byte[esi + BOOT_LO.launcher_start], 1
|
||||
mov byte[esi + BOOT_LO.debug_print], 1
|
||||
mov byte[esi + BOOT_LO.dma], 0
|
||||
; mov qword[esi + BOOT_LO.pci_data], 0
|
||||
mov dword[esi + BOOT_LO.apm_entry], 0
|
||||
mov word[esi + BOOT_LO.apm_version], 0
|
||||
mov dword[esi + BOOT_LO.apm_flags], 0
|
||||
mov word[esi + BOOT_LO.apm_code_32], 0
|
||||
mov word[esi + BOOT_LO.apm_code_16], 0
|
||||
mov word[esi + BOOT_LO.apm_data_16], 0
|
||||
mov byte[esi + BOOT_LO.bios_hd_cnt], 0
|
||||
mov word[esi + BOOT_LO.bx_from_load], 'r1' ; boot from /rd/1
|
||||
|
||||
|
||||
lgdt [cs:GDTR]
|
||||
@@ -341,7 +341,7 @@ add_uefi_memmap:
|
||||
.done:
|
||||
mov [rdi + e820entry.type], eax
|
||||
|
||||
mov rax, BOOT_MEMMAP_BLOCK_CNT
|
||||
mov rax, BOOT_LO.memmap_block_cnt
|
||||
inc word[rax]
|
||||
|
||||
pop rdi rsi rdx rcx rbx rax
|
||||
|
Reference in New Issue
Block a user