/kernel/branches/Kolibri-acpi/core/apic.inc |
---|
8,7 → 8,7 |
IRQ_RESERVE = 24 ; 16 or 24 |
iglobal |
IRQ_COUNT dd 16 |
IRQ_COUNT dd 24 |
endg |
uglobal |
45,8 → 45,8 |
APIC_init: |
mov dword[APIC], 0 |
; jmp .no_apic ; NO APIC |
bt [cpu_caps], CAPS_APIC |
jnc .no_apic |
; bt [cpu_caps], CAPS_APIC |
; jnc .no_apic |
; Check for MP table |
;..... |
96,6 → 96,12 |
call LAPIC_init |
mov dword[APIC], 0xffffffff |
mov al, 0x70 |
out 0x22, al |
mov al, 1 |
out 0x23, al |
; mov dword[irq_type_to_set], IRQ_TYPE_APIC |
.no_apic: |
ret |
/kernel/branches/Kolibri-acpi/core/dll.inc |
---|
17,6 → 17,9 |
align 4 |
proc attach_int_handler stdcall, irq:dword, handler:dword, access_rights:dword |
pushfd |
cli |
push ebx |
mov ebx, [irq] ;irq num |
46,10 → 49,12 |
stdcall enable_irq, [irq] |
pop ebx |
mov eax, 1 |
popfd |
ret |
.err: |
pop ebx |
xor eax, eax |
popfd |
ret |
endp |
100,7 → 105,7 |
jmp .main |
} |
irq_serv_h 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12 |
irq_serv_h 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15 |
; I don`t known how to use IRQ_RESERVE |
if IRQ_RESERVE > 16 |
118,6 → 123,26 |
cmp [v86_irqhooks+eax*8], 0 |
jnz v86_irq |
cmp al, 6 |
jnz @f |
push eax |
call [fdc_irq_func] |
pop eax |
@@: |
cmp al, 14 |
jnz @f |
push eax |
call [irq14_func] |
pop eax |
@@: |
cmp al, 15 |
jnz @f |
push eax |
call [irq15_func] |
pop eax |
@@: |
mov ebx, [irq_tab+eax*4] |
test ebx, ebx |
jz .exit |
/kernel/branches/Kolibri-acpi/core/exports.inc |
---|
75,6 → 75,9 |
szSleep db 'Sleep',0 |
szGetTimerTicks db 'GetTimerTicks',0 |
szGetDisplay db 'GetDisplay',0 |
szSetScreen db 'SetScreen',0 |
szStrncat db 'strncat',0 |
szStrncpy db 'strncpy',0 |
szstrncmp db 'strncmp',0 |
147,6 → 150,9 |
dd szSleep , delay_ms |
dd szGetTimerTicks , get_timer_ticks |
dd szGetDisplay , get_display |
dd szSetScreen , set_screen |
dd szStrncat , strncat |
dd szStrncpy , strncpy |
dd szstrncmp , strncmp |
/kernel/branches/Kolibri-acpi/core/memory.inc |
---|
1426,7 → 1426,7 |
mov ebx, [size] |
dec ebx |
mov eax, 0xFFFFFFFF |
mov edx, 0x0000000F |
mov edx, 0x00000000 |
sub eax, ebx |
sbb edx, 0 |
or eax, 0x800 |
/kernel/branches/Kolibri-acpi/core/peload.inc |
---|
322,8 → 322,10 |
unmap_pages, 'UnmapPages', \ ; eax, ecx |
sys_msg_board_str, 'SysMsgBoardStr', \ |
get_timer_ticks, 'GetTimerTicks', \ |
get_stack_base, 'GetStackBase', \ |
delay_hs, 'Delay', \ ; ebx |
set_mouse_data, 'SetMouseData' |
set_mouse_data, 'SetMouseData', \ ; |
set_keyboard_data, 'SetKeyboardData' ; gcc fastcall |
/kernel/branches/Kolibri-acpi/core/sys32.inc |
---|
46,11 → 46,9 |
else |
dd p_irq3, p_irq4 ;??? íåñòûêîâêà |
end if |
dd irq_serv.irq_5, p_irq6, irq_serv.irq_7 |
dd irq_serv.irq_5, irq_serv.irq_6, irq_serv.irq_7 |
dd irq_serv.irq_8, irq_serv.irq_9, irq_serv.irq_10 |
dd irq_serv.irq_11, irq_serv.irq_12 |
dd irq13 |
dd p_irq14,p_irq15 |
dd irq_serv.irq_11, irq_serv.irq_12, irqD, irq_serv.irq_14, irq_serv.irq_15 |
; I don`t known how to use IRQ_RESERVE |
if IRQ_RESERVE > 16 |
dd irq_serv.irq_16 |
208,6 → 206,14 |
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= |
; bl - error vector |
show_error_parameters: |
cmp bl, 0x06 |
jnz .no_ud |
push ebx |
mov ebx, ud_user_message |
mov ebp, notifyapp |
call fs_execute_from_sysdir_param |
pop ebx |
.no_ud: |
mov edx,[TASK_BASE] ;not scratched below |
DEBUGF 1, "K : Process - forced terminate PID: %x\n", [edx+TASKDATA.pid] |
cmp bl, 0x08 |
/kernel/branches/Kolibri-acpi/core/syscall.inc |
---|
193,6 → 193,7 |
dd file_system_lfn ; 70-Common file system interface, version 2 |
dd syscall_window_settings ; 71-Window settings |
dd sys_sendwindowmsg ; 72-Send window message |
dd blit_32 ; blitter; |
times 255 - ( ($-servetable2) /4 ) dd undefined_syscall |
dd sys_end ; -1-end application |
/kernel/branches/Kolibri-acpi/core/taskman.inc |
---|
48,6 → 48,7 |
fs_execute_from_sysdir: |
xor ebx, ebx |
fs_execute_from_sysdir_param: |
xor edx, edx |
mov esi, sysdir_path |
1166,4 → 1167,13 |
ret |
endp |
align 4 |
get_stack_base: |
mov eax,[current_slot] |
mov eax,[eax+APPDATA.pl0_stack] |
ret |
include "debug.inc" |