Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 2442 → Rev 2443

/kernel/trunk/core/apic.inc
61,7 → 61,7
call IRQ_mask_all
 
; IOAPIC init
stdcall map_io_mem, [acpi_ioapic_base], 0x20, PG_SW
stdcall map_io_mem, [acpi_ioapic_base], 0x20, PG_SW+PG_NOCACHE
mov [IOAPIC_base], eax
 
mov eax, IOAPIC_VER
121,14 → 121,11
;===========================================================
align 4
LAPIC_init:
; Check MSR support
;....
; Get LAPIC base address
; mov ecx, 0x1b
; rdmsr ; it may be replaced to
; and ax, 0xf000 ; mov eax, 0xfee00000
 
stdcall map_io_mem, [acpi_lapic_base], 0x1000, PG_SW
cmp [LAPIC_BASE], 0
jne .done
 
stdcall map_io_mem, [acpi_lapic_base], 0x1000, PG_SW+PG_NOCACHE
mov [LAPIC_BASE], eax
mov esi, eax
 
200,6 → 197,8
; Start (every 0.01 sec)
mov dword[esi + APIC_LVT_timer], 0x30020; periodic int 0x20
mov dword[esi + APIC_timer_init], eax
 
.done:
ret
 
;===========================================================
/kernel/trunk/gui/window.inc
548,6 → 548,7
align 4
.exit:
pop ebp
inc [_display.mask_seqno]
popfd
pop esi
ret
998,6 → 999,7
mov edi, [TASK_COUNT]
movzx esi, word[WIN_POS + edi * 2]
call window._.set_screen
inc [_display.mask_seqno]
popad
 
; tell application to redraw itself
1102,7 → 1104,7
add ecx, eax
add edx, ebx
call ebp
 
inc [_display.mask_seqno]
mov byte[MOUSE_BACKGROUND], 0
;--------------------------------------
align 4
1204,6 → 1206,7
;--------------------------------------
align 4
.exit:
inc [_display.mask_seqno]
ret
;------------------------------------------------------------------------------
align 4
1949,6 → 1952,7
align 4
.exit:
popad
inc [_display.mask_seqno]
ret
;--------------------------------------
align 4
/kernel/trunk/init.inc
432,6 → 432,11
ret
endp
 
iglobal
align 4
acpi_lapic_base dd 0xfee00000 ; default local apic base
endg
 
uglobal
align 4
acpi_rsdp rd 1
443,8 → 448,10
 
acpi_rsdt_base rd 1
acpi_madt_base rd 1
acpi_lapic_base rd 1
acpi_ioapic_base rd 1
 
cpu_count rd 1
smpt rd 16
endg
 
ACPI_HI_RSDP_WINDOW_START equ 0x000E0000
493,6 → 500,7
lea ebx, [ecx+36]
mov esi, [ecx+4]
add esi, ecx
align 4
.next:
mov eax, [ebx]
cmp [eax], edx
513,9 → 521,7
pop ebx
ret
 
 
align 4
 
check_acpi:
 
call acpi_locate
533,15 → 539,36
mov ecx, [eax+36]
mov [acpi_lapic_base-OS_BASE], ecx
 
mov edi, smpt-OS_BASE
mov ebx, [ecx+0x20]
shr ebx, 24 ; read APIC ID
 
mov [edi], ebx ; bootstrap always first
inc [cpu_count-OS_BASE]
add edi, 4
 
lea edx, [eax+44]
mov ecx, [eax+4]
add ecx, eax
.check:
mov eax, [edx]
cmp al, 1
je .ioapic
cmp al, 0
jne .io_apic
 
shr eax, 24 ; get APIC ID
cmp eax, ebx ; skip self
je .next
 
test [edx+4], byte 1 ; is enabled ?
jz .next
 
cmp [cpu_count-OS_BASE], 16
jae .next
 
stosd ; store APIC ID
inc [cpu_count-OS_BASE]
.next:
mov eax, [edx]
movzx eax, ah
add edx, eax
cmp edx, ecx
548,7 → 575,11
jb .check
.done:
ret
.ioapic:
 
.io_apic:
cmp al, 1
jne .next
 
mov eax, [edx+4]
mov [acpi_ioapic_base-OS_BASE], eax
ret
jmp .next
/kernel/trunk/kernel.asm
295,6 → 295,8
 
org OS_BASE+$
 
include 'fdo.inc'
 
align 4
high_code:
mov ax, os_stack
980,6 → 982,13
 
end if
 
mov eax, [cpu_count]
test eax, eax
jnz @F
mov al, 1 ; at least one CPU
@@:
DEBUGF 1, "K : %d CPU detected\n", eax
 
; START MULTITASKING
 
; A 'All set - press ESC to start' messages if need
1005,7 → 1014,6
; Fly :)
 
include 'unpacker.inc'
include 'fdo.inc'
 
align 4
boot_log: