small update copyright year in kernel
git-svn-id: svn://kolibrios.org@9715 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; ;;
|
||||
;; Copyright (C) KolibriOS team 2004-2020. All rights reserved. ;;
|
||||
;; Copyright (C) KolibriOS team 2004-2022. All rights reserved. ;;
|
||||
;; Distributed under terms of the GNU General Public License ;;
|
||||
;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
@@ -14,7 +14,7 @@ proc mem_test
|
||||
jnz .ret
|
||||
|
||||
mov eax, cr0
|
||||
and eax, not (CR0_CD+CR0_NW)
|
||||
and eax, not (CR0_CD + CR0_NW)
|
||||
or eax, CR0_CD ;disable caching
|
||||
mov cr0, eax
|
||||
wbinvd ;invalidate cache
|
||||
@@ -28,16 +28,16 @@ proc mem_test
|
||||
xchg ebx, dword [edi]
|
||||
je @b
|
||||
|
||||
and eax, not (CR0_CD+CR0_NW) ;enable caching
|
||||
and eax, not (CR0_CD + CR0_NW) ;enable caching
|
||||
mov cr0, eax
|
||||
inc dword [BOOT_LO.memmap_block_cnt]
|
||||
xor eax, eax
|
||||
mov [BOOT_LO.memmap_blocks+e820entry.addr.lo], eax
|
||||
mov [BOOT_LO.memmap_blocks+e820entry.addr.hi], eax
|
||||
mov [BOOT_LO.memmap_blocks+e820entry.size.lo], edi
|
||||
mov [BOOT_LO.memmap_blocks+e820entry.size.hi], eax
|
||||
mov [BOOT_LO.memmap_blocks + e820entry.addr.lo], eax
|
||||
mov [BOOT_LO.memmap_blocks + e820entry.addr.hi], eax
|
||||
mov [BOOT_LO.memmap_blocks + e820entry.size.lo], edi
|
||||
mov [BOOT_LO.memmap_blocks + e820entry.size.hi], eax
|
||||
inc eax
|
||||
mov [BOOT_LO.memmap_blocks+e820entry.type], eax
|
||||
mov [BOOT_LO.memmap_blocks + e820entry.type], eax
|
||||
.ret:
|
||||
ret
|
||||
endp
|
||||
@@ -51,29 +51,29 @@ proc init_mem
|
||||
xor edx, edx; edx will hold maximum allocatable address
|
||||
.calcmax:
|
||||
; round all to pages
|
||||
mov eax, [edi+e820entry.addr.lo]
|
||||
cmp byte [edi+e820entry.type], 1
|
||||
mov eax, [edi + e820entry.addr.lo]
|
||||
cmp byte [edi + e820entry.type], 1
|
||||
jne .unusable
|
||||
|
||||
test eax, 0xFFF
|
||||
jz @f
|
||||
neg eax
|
||||
and eax, 0xFFF
|
||||
add [edi+e820entry.addr.lo], eax
|
||||
adc [edi+e820entry.addr.hi], 0
|
||||
sub [edi+e820entry.size.lo], eax
|
||||
sbb [edi+e820entry.size.hi], 0
|
||||
add [edi + e820entry.addr.lo], eax
|
||||
adc [edi + e820entry.addr.hi], 0
|
||||
sub [edi + e820entry.size.lo], eax
|
||||
sbb [edi + e820entry.size.hi], 0
|
||||
jc .unusable
|
||||
@@:
|
||||
and [edi+e820entry.size.lo], not 0xFFF
|
||||
and [edi + e820entry.size.lo], not 0xFFF
|
||||
jz .unusable
|
||||
; ignore memory after 4 GiB
|
||||
cmp [edi+e820entry.addr.hi], 0
|
||||
cmp [edi + e820entry.addr.hi], 0
|
||||
jnz .unusable
|
||||
mov eax, [edi+e820entry.addr.lo]
|
||||
cmp [edi+e820entry.size.hi], 0
|
||||
mov eax, [edi + e820entry.addr.lo]
|
||||
cmp [edi + e820entry.size.hi], 0
|
||||
jnz .overflow
|
||||
add eax, [edi+e820entry.size.lo]
|
||||
add eax, [edi + e820entry.size.lo]
|
||||
jnc @f
|
||||
.overflow:
|
||||
mov eax, 0xFFFFF000
|
||||
@@ -82,8 +82,8 @@ proc init_mem
|
||||
jae @f
|
||||
mov edx, eax
|
||||
@@:
|
||||
sub eax, [edi+e820entry.addr.lo]
|
||||
mov [edi+e820entry.size.lo], eax
|
||||
sub eax, [edi + e820entry.addr.lo]
|
||||
mov [edi + e820entry.size.lo], eax
|
||||
add esi, eax
|
||||
jmp .usable
|
||||
.unusable:
|
||||
@@ -92,18 +92,18 @@ proc init_mem
|
||||
add edi, sizeof.e820entry
|
||||
loop .calcmax
|
||||
.calculated:
|
||||
mov [MEM_AMOUNT-OS_BASE], esi
|
||||
mov [pg_data.mem_amount-OS_BASE], esi
|
||||
mov [MEM_AMOUNT - OS_BASE], esi
|
||||
mov [pg_data.mem_amount - OS_BASE], esi
|
||||
shr esi, 12
|
||||
mov [pg_data.pages_count-OS_BASE], esi
|
||||
mov [pg_data.pages_count - OS_BASE], esi
|
||||
|
||||
shr edx, 12
|
||||
add edx, 31
|
||||
and edx, not 31
|
||||
shr edx, 3
|
||||
mov [pg_data.pagemap_size-OS_BASE], edx
|
||||
mov [pg_data.pagemap_size - OS_BASE], edx
|
||||
|
||||
add edx, (sys_pgmap-OS_BASE)+4095
|
||||
add edx, (sys_pgmap - OS_BASE)+4095
|
||||
and edx, not 4095
|
||||
mov [tmp_page_tabs], edx
|
||||
|
||||
@@ -114,29 +114,29 @@ proc init_mem
|
||||
mov edx, (OS_BASE/4096)
|
||||
jmp .set
|
||||
@@:
|
||||
cmp edx, (HEAP_BASE-OS_BASE+HEAP_MIN_SIZE)/4096
|
||||
cmp edx, (HEAP_BASE - OS_BASE + HEAP_MIN_SIZE)/4096
|
||||
jae .set
|
||||
mov edx, (HEAP_BASE-OS_BASE+HEAP_MIN_SIZE)/4096
|
||||
mov edx, (HEAP_BASE - OS_BASE + HEAP_MIN_SIZE)/4096
|
||||
.set:
|
||||
mov [pg_data.kernel_pages-OS_BASE], edx
|
||||
mov [pg_data.kernel_pages - OS_BASE], edx
|
||||
shr edx, 10
|
||||
mov [pg_data.kernel_tables-OS_BASE], edx
|
||||
mov [pg_data.kernel_tables - OS_BASE], edx
|
||||
|
||||
xor eax, eax
|
||||
mov edi, sys_proc-OS_BASE
|
||||
mov edi, sys_proc - OS_BASE
|
||||
mov ecx, 8192/4
|
||||
cld
|
||||
rep stosd
|
||||
|
||||
mov edx, (sys_proc-OS_BASE+PROC.pdt_0)+ 0x800; (OS_BASE shr 20)
|
||||
bt [cpu_caps-OS_BASE], CAPS_PSE
|
||||
mov edx, (sys_proc - OS_BASE + PROC.pdt_0) + 0x800; (OS_BASE shr 20)
|
||||
bt [cpu_caps - OS_BASE], CAPS_PSE
|
||||
jnc .no_PSE
|
||||
|
||||
mov ebx, cr4
|
||||
or ebx, CR4_PSE
|
||||
mov eax, PDE_LARGE+PG_SWR
|
||||
mov eax, PDE_LARGE + PG_SWR
|
||||
mov cr4, ebx
|
||||
dec [pg_data.kernel_tables-OS_BASE]
|
||||
dec [pg_data.kernel_tables - OS_BASE]
|
||||
|
||||
mov [edx], eax
|
||||
add edx, 4
|
||||
@@ -156,12 +156,12 @@ proc init_mem
|
||||
jnz @B
|
||||
|
||||
.map_kernel_heap:
|
||||
mov ecx, [pg_data.kernel_tables-OS_BASE]
|
||||
mov ecx, [pg_data.kernel_tables - OS_BASE]
|
||||
shl ecx, 10
|
||||
xor eax, eax
|
||||
rep stosd
|
||||
|
||||
mov ecx, [pg_data.kernel_tables-OS_BASE]
|
||||
mov ecx, [pg_data.kernel_tables - OS_BASE]
|
||||
mov eax, [tmp_page_tabs]
|
||||
or eax, PG_SWR
|
||||
mov edi, edx
|
||||
@@ -174,8 +174,8 @@ proc init_mem
|
||||
|
||||
mov dword [sys_proc-OS_BASE+PROC.pdt_0+(page_tabs shr 20)], sys_proc+PROC.pdt_0+PG_SWR-OS_BASE
|
||||
|
||||
mov edi, (sys_proc+PROC.pdt_0-OS_BASE)
|
||||
lea esi, [edi+(OS_BASE shr 20)]
|
||||
mov edi, (sys_proc + PROC.pdt_0 - OS_BASE)
|
||||
lea esi, [edi + (OS_BASE shr 20)]
|
||||
movsd
|
||||
movsd
|
||||
ret
|
||||
@@ -184,8 +184,8 @@ endp
|
||||
align 4
|
||||
proc init_page_map
|
||||
; mark all memory as unavailable
|
||||
mov edi, sys_pgmap-OS_BASE
|
||||
mov ecx, [pg_data.pagemap_size-OS_BASE]
|
||||
mov edi, sys_pgmap - OS_BASE
|
||||
mov ecx, [pg_data.pagemap_size - OS_BASE]
|
||||
shr ecx, 2
|
||||
xor eax, eax
|
||||
cld
|
||||
@@ -195,18 +195,18 @@ proc init_page_map
|
||||
mov ebx, BOOT_LO.memmap_blocks
|
||||
mov edx, [ebx-4]
|
||||
.scanmap:
|
||||
cmp byte [ebx+e820entry.type], 1
|
||||
cmp byte [ebx + e820entry.type], 1
|
||||
jne .next
|
||||
|
||||
mov ecx, [ebx+e820entry.size.lo]
|
||||
mov ecx, [ebx + e820entry.size.lo]
|
||||
shr ecx, 12; ecx = number of pages
|
||||
jz .next
|
||||
mov edi, [ebx+e820entry.addr.lo]
|
||||
mov edi, [ebx + e820entry.addr.lo]
|
||||
shr edi, 12; edi = first page
|
||||
mov eax, edi
|
||||
shr edi, 5
|
||||
shl edi, 2
|
||||
add edi, sys_pgmap-OS_BASE
|
||||
add edi, sys_pgmap - OS_BASE
|
||||
and eax, 31
|
||||
jz .startok
|
||||
add ecx, eax
|
||||
@@ -245,13 +245,13 @@ proc init_page_map
|
||||
|
||||
; mark kernel memory as allocated (unavailable)
|
||||
mov ecx, [tmp_page_tabs]
|
||||
mov edx, [pg_data.pages_count-OS_BASE]
|
||||
mov edx, [pg_data.pages_count - OS_BASE]
|
||||
shr ecx, 12
|
||||
add ecx, [pg_data.kernel_tables-OS_BASE]
|
||||
add ecx, [pg_data.kernel_tables - OS_BASE]
|
||||
sub edx, ecx
|
||||
mov [pg_data.pages_free-OS_BASE], edx
|
||||
mov [pg_data.pages_free - OS_BASE], edx
|
||||
|
||||
mov edi, sys_pgmap-OS_BASE
|
||||
mov edi, sys_pgmap - OS_BASE
|
||||
mov ebx, ecx
|
||||
shr ecx, 5
|
||||
xor eax, eax
|
||||
@@ -263,11 +263,11 @@ proc init_page_map
|
||||
shl eax, cl
|
||||
and [edi], eax
|
||||
add edi, OS_BASE
|
||||
mov [page_start-OS_BASE], edi;
|
||||
mov [page_start - OS_BASE], edi;
|
||||
|
||||
mov ebx, sys_pgmap
|
||||
add ebx, [pg_data.pagemap_size-OS_BASE]
|
||||
mov [page_end-OS_BASE], ebx
|
||||
add ebx, [pg_data.pagemap_size - OS_BASE]
|
||||
mov [page_end - OS_BASE], ebx
|
||||
|
||||
ret
|
||||
endp
|
||||
@@ -311,24 +311,24 @@ init_BIOS32:
|
||||
|
||||
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)], 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
|
||||
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
|
||||
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_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
|
||||
mov [(pci_bios_entry - OS_BASE)], edx
|
||||
; jmp .end
|
||||
.PCI_BIOS32_not_found:
|
||||
; pci_emu_dat structure should be filled here
|
||||
@@ -344,9 +344,9 @@ proc test_cpu
|
||||
|
||||
xor eax, eax
|
||||
mov [cpu_type], eax
|
||||
mov [cpu_caps-OS_BASE], eax
|
||||
mov [cpu_caps+4-OS_BASE], eax
|
||||
mov [cpu_phys_addr_width-OS_BASE], 32
|
||||
mov [cpu_caps - OS_BASE], eax
|
||||
mov [cpu_caps + 4 - OS_BASE], eax
|
||||
mov [cpu_phys_addr_width - OS_BASE], 32
|
||||
|
||||
pushfd
|
||||
pop eax
|
||||
@@ -375,22 +375,22 @@ proc test_cpu
|
||||
xor eax, eax
|
||||
cpuid
|
||||
|
||||
mov [cpu_vendor-OS_BASE], ebx
|
||||
mov [cpu_vendor+4-OS_BASE], edx
|
||||
mov [cpu_vendor+8-OS_BASE], ecx
|
||||
mov [cpu_vendor - OS_BASE], ebx
|
||||
mov [cpu_vendor + 4 - OS_BASE], edx
|
||||
mov [cpu_vendor + 8 - OS_BASE], ecx
|
||||
|
||||
cmp eax, 1
|
||||
jl .end_cpuid
|
||||
mov eax, 1
|
||||
cpuid
|
||||
mov [cpu_sign-OS_BASE], eax
|
||||
mov [cpu_info-OS_BASE], ebx
|
||||
mov [cpu_caps-OS_BASE], edx
|
||||
mov [cpu_caps+4-OS_BASE], ecx
|
||||
mov [cpu_sign - OS_BASE], eax
|
||||
mov [cpu_info - OS_BASE], ebx
|
||||
mov [cpu_caps - OS_BASE], edx
|
||||
mov [cpu_caps + 4 - OS_BASE], ecx
|
||||
|
||||
bt edx, CAPS_PAE
|
||||
jnc @f
|
||||
mov [cpu_phys_addr_width-OS_BASE], 36
|
||||
mov [cpu_phys_addr_width - OS_BASE], 36
|
||||
@@:
|
||||
mov eax, 0x80000000
|
||||
cpuid
|
||||
@@ -398,10 +398,10 @@ proc test_cpu
|
||||
jb @f
|
||||
mov eax, 0x80000008
|
||||
cpuid
|
||||
mov [cpu_phys_addr_width-OS_BASE], al
|
||||
mov [cpu_phys_addr_width - OS_BASE], al
|
||||
@@:
|
||||
|
||||
mov eax, [cpu_sign-OS_BASE]
|
||||
mov eax, [cpu_sign - OS_BASE]
|
||||
shr eax, 8
|
||||
and eax, 0x0f
|
||||
ret
|
||||
@@ -415,14 +415,14 @@ ACPI_HI_RSDP_WINDOW_END = 0x00100000
|
||||
ACPI_RSDP_CHECKSUM_LENGTH = 20
|
||||
|
||||
proc acpi_locate_tables uses ebx esi edi
|
||||
mov ebx, [ebx+ACPI_RSDP.RsdtAddress]
|
||||
mov [acpi_rsdt_base-OS_BASE], ebx
|
||||
mov eax, [ebx+ACPI_RSDT.Length]
|
||||
mov [acpi_rsdt_size-OS_BASE], eax
|
||||
mov ebx, [ebx + ACPI_RSDP.RsdtAddress]
|
||||
mov [acpi_rsdt_base - OS_BASE], ebx
|
||||
mov eax, [ebx + ACPI_RSDT.Length]
|
||||
mov [acpi_rsdt_size - OS_BASE], eax
|
||||
|
||||
mov esi, [acpi_rsdt_base-OS_BASE]
|
||||
mov ecx, [esi+ACPI_RSDT.Length]
|
||||
lea edi, [esi+ecx]
|
||||
mov esi, [acpi_rsdt_base - OS_BASE]
|
||||
mov ecx, [esi + ACPI_RSDT.Length]
|
||||
lea edi, [esi + ecx]
|
||||
add esi, sizeof.ACPI_TABLE
|
||||
movi ecx, 1
|
||||
.next_table:
|
||||
@@ -439,35 +439,35 @@ proc acpi_locate_tables uses ebx esi edi
|
||||
jz .hpet
|
||||
jmp .next_table
|
||||
.ssdt:
|
||||
mov [acpi_ssdt_base+ecx*4-OS_BASE], eax
|
||||
mov [acpi_ssdt_base + ecx*4 - OS_BASE], eax
|
||||
mov eax, [eax+ACPI_TABLE.Length]
|
||||
mov [acpi_ssdt_size+ecx*4-OS_BASE], eax
|
||||
mov [acpi_ssdt_size + ecx*4 - OS_BASE], eax
|
||||
inc ecx
|
||||
jmp .next_table
|
||||
.fadt:
|
||||
mov [acpi_fadt_base-OS_BASE], eax
|
||||
cmp [eax+ACPI_FADT.DSDT], 0
|
||||
mov [acpi_fadt_base - OS_BASE], eax
|
||||
cmp [eax + ACPI_FADT.DSDT], 0
|
||||
jz @f
|
||||
mov edx, [eax+ACPI_FADT.DSDT]
|
||||
mov [acpi_ssdt_base-OS_BASE], edx
|
||||
mov edx, [edx+ACPI_TABLE.Length]
|
||||
mov [acpi_ssdt_size-OS_BASE], edx
|
||||
mov edx, [eax + ACPI_FADT.DSDT]
|
||||
mov [acpi_ssdt_base - OS_BASE], edx
|
||||
mov edx, [edx + ACPI_TABLE.Length]
|
||||
mov [acpi_ssdt_size - OS_BASE], edx
|
||||
@@:
|
||||
mov eax, [eax+ACPI_TABLE.Length]
|
||||
mov [acpi_fadt_size-OS_BASE], eax
|
||||
mov eax, [eax + ACPI_TABLE.Length]
|
||||
mov [acpi_fadt_size - OS_BASE], eax
|
||||
jmp .next_table
|
||||
.madt:
|
||||
mov [acpi_madt_base-OS_BASE], eax
|
||||
mov eax, [eax+ACPI_TABLE.Length]
|
||||
mov [acpi_madt_size-OS_BASE], eax
|
||||
mov [acpi_madt_base - OS_BASE], eax
|
||||
mov eax, [eax + ACPI_TABLE.Length]
|
||||
mov [acpi_madt_size - OS_BASE], eax
|
||||
jmp .next_table
|
||||
.hpet:
|
||||
mov [acpi_hpet_base-OS_BASE], eax
|
||||
mov eax, [eax+ACPI_TABLE.Length]
|
||||
mov [acpi_hpet_size-OS_BASE], eax
|
||||
mov [acpi_hpet_base - OS_BASE], eax
|
||||
mov eax, [eax + ACPI_TABLE.Length]
|
||||
mov [acpi_hpet_size - OS_BASE], eax
|
||||
jmp .next_table
|
||||
.done:
|
||||
mov [acpi_ssdt_cnt-OS_BASE], ecx
|
||||
mov [acpi_ssdt_cnt - OS_BASE], ecx
|
||||
ret
|
||||
endp
|
||||
|
||||
@@ -497,7 +497,7 @@ else
|
||||
call .check
|
||||
end if
|
||||
.done:
|
||||
mov [acpi_rsdp_base-OS_BASE], ebx
|
||||
mov [acpi_rsdp_base - OS_BASE], ebx
|
||||
test ebx, ebx
|
||||
jz @f
|
||||
call acpi_locate_tables
|
||||
|
Reference in New Issue
Block a user