725,11 → 725,11 |
mov esi,boot_tsc |
call boot_log |
cli |
call _rdtsc |
rdtsc ;call _rdtsc |
mov ecx,eax |
mov esi,250 ; wait 1/4 a second |
call delay_ms |
call _rdtsc |
rdtsc ;call _rdtsc |
sti |
sub eax,ecx |
shl eax,2 |
1013,57 → 1013,27 |
|
checkidle: |
pushad |
|
cmp [check_idle_semaphore],0 |
jne no_idle_state |
|
mov ebx,[timer_ticks] |
call change_task |
mov eax,[idlemem] |
mov ebx,[timer_ticks] ;[0xfdf0] |
cmp eax,ebx |
jnz idle_exit |
call _rdtsc |
jmp idle_loop_entry |
idle_loop: |
cmp ebx,[timer_ticks] |
jne idle_exit |
rdtsc ;call _rdtsc |
mov ecx,eax |
idle_loop: |
hlt |
rdtsc ;call _rdtsc |
sub eax,ecx |
add [idleuse],eax |
idle_loop_entry: |
cmp [check_idle_semaphore],0 |
jne idle_loop_exit |
mov eax,[timer_ticks] ;[0xfdf0] |
cmp ebx,eax |
jz idle_loop |
idle_loop_exit: |
mov [idlemem],eax |
call _rdtsc |
sub eax,ecx |
mov ebx,[idleuse] |
add ebx,eax |
mov [idleuse],ebx |
|
popad |
ret |
|
je idle_loop |
dec [check_idle_semaphore] |
idle_exit: |
|
mov ebx,[timer_ticks] ;[0xfdf0] |
mov [idlemem],ebx |
call change_task |
|
popad |
ret |
|
no_idle_state: |
|
dec [check_idle_semaphore] |
|
mov ebx,[timer_ticks] ;[0xfdf0] |
mov [idlemem],ebx |
call change_task |
|
popad |
ret |
|
uglobal |
idlemem dd 0x0 |
idleuse dd 0x0 |
idleusesec dd 0x0 |
check_idle_semaphore dd 0x0 |
1167,7 → 1137,6 |
mov [BTN_ADDR],dword BUTTON_INFO ; address of button list |
|
;!! IP 04.02.2005: |
mov [next_usage_update], 100 |
mov byte [DONT_SWITCH], 0 ; change task if possible |
|
ret |
4669,7 → 4638,7 |
|
ret |
|
|
if used _rdtsc |
_rdtsc: |
bt [cpu_caps], CAPS_TSC |
jnc ret_rdtsc |
4679,6 → 4648,7 |
mov edx,0xffffffff |
mov eax,0xffffffff |
ret |
end if |
|
rerouteirqs: |
|
5621,4 → 5591,3 |
|
uglobals_size = $ - endofcode |
diff16 "end of kernel code",0,$ |
|