Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 5628 → Rev 5629

/kernel/branches/Kolibri-acpi/core/apic.inc
439,7 → 439,27
pop ebp
ret
 
align 4
get_clock_ns:
push ebx
pushfd
cli
 
mov ebx, [hpet_base]
@@:
mov edx, [ebx+0xF4]
mov eax, [ebx+0xF0]
mov ecx, [ebx+0xF4]
cmp ecx, edx
jnz @B
 
mov ecx, [hpet_period]
mov ebx, edx
imul ebx, ecx
mul ecx
add edx, ebx
 
popfd
pop ebx
ret
 
/kernel/branches/Kolibri-acpi/core/exports.inc
75,6 → 75,7
unmap_pages, 'UnmapPages', \ ; eax, ecx
sys_msg_board_str, 'SysMsgBoardStr', \
sys_msg_board, 'SysMsgBoard', \
get_clock_ns, 'GetClockNs', \ ;retval edx:eax 64-bit value
get_timer_ticks, 'GetTimerTicks', \
get_stack_base, 'GetStackBase', \
delay_hs, 'Delay', \ ; ebx
/kernel/branches/Kolibri-acpi/init.inc
435,6 → 435,9
acpi_dsdt_size rd 1
acpi_madt_base rd 1
acpi_ioapic_base rd 1
acpi_hpet_base rd 1
hpet_base rd 1
hpet_period rd 1
 
cpu_count rd 1
smpt rd 16
443,6 → 446,8
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
 
516,7 → 521,7
jz .done
 
mov ecx, [eax+16]
mov edx, 0x50434146
mov edx, ACPI_FADT_SIGN
mov [acpi_rsdt_base-OS_BASE], ecx
call rsdt_find
mov [acpi_fadt_base-OS_BASE], eax
527,7 → 532,16
mov [acpi_dsdt_base-OS_BASE], eax
mov eax, [eax+4]
mov [acpi_dsdt_size-OS_BASE], eax
@@:
mov edx, ACPI_HPET_SIGN
mov ecx, [acpi_rsdt_base-OS_BASE]
call rsdt_find
test eax, eax
jz @F
 
mov [acpi_hpet_base-OS_BASE], eax
mov eax, [eax+44]
mov [hpet_base-OS_BASE], eax
@@:
mov edx, ACPI_MADT_SIGN
mov ecx, [acpi_rsdt_base-OS_BASE]
583,3 → 597,33
mov eax, [edx+4]
mov [acpi_ioapic_base-OS_BASE], eax
jmp .next
 
HPET_PERIOD equ 0x004
HPET_CFG_ENABLE equ 1
HPET_CFG equ 0x010
 
align 4
init_hpet:
mov ebx, [hpet_base-OS_BASE]
 
mov eax, [ebx+HPET_PERIOD]
mov edx, 0x431BDE83
mul edx
shr edx, 18
mov [hpet_period-OS_BASE], edx
 
mov eax, [ebx+HPET_CFG]
and eax, not HPET_CFG_ENABLE
mov [ebx+HPET_CFG], eax ;stop main counter
 
xor ecx, ecx
mov [ebx+0xF0], ecx ;reset counter
mov [ebx+0xF4], ecx
 
or eax, HPET_CFG_ENABLE
mov [ebx+HPET_CFG], eax ;and start again
ret
 
 
 
 
/kernel/branches/Kolibri-acpi/kernel.asm
283,6 → 283,7
bts [cpu_caps-OS_BASE], CAPS_TSC ;force use rdtsc
 
call check_acpi
call init_hpet
call init_BIOS32
; MEMORY MODEL
call mem_test
697,6 → 698,17
@@:
mov [clipboard_main_list], eax
 
mov eax, [acpi_hpet_base]
DEBUGF 1, "K : ACPI HPET base %x\n", eax
mov eax, [hpet_base]
DEBUGF 1, "K : HPET base %x\n", eax
mov eax, [hpet_period]
DEBUGF 1, "K : HPET period %d\n", eax
 
mov eax, [hpet_base]
stdcall map_io_mem, [hpet_base], 1024, PG_GLOBAL+PAT_UC+PG_SWR
mov [hpet_base], eax
 
; SET UP OS TASK
 
mov esi, boot_setostask