forked from KolibriOS/kolibrios
kernel: export GetCpuFreq
git-svn-id: svn://kolibrios.org@3481 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
d15a13f685
commit
d67b35544c
@ -218,10 +218,10 @@ KEY_BUFF equ (OS_BASE+0x000F401)
|
|||||||
BTN_COUNT equ (OS_BASE+0x000F500)
|
BTN_COUNT equ (OS_BASE+0x000F500)
|
||||||
BTN_BUFF equ (OS_BASE+0x000F501)
|
BTN_BUFF equ (OS_BASE+0x000F501)
|
||||||
|
|
||||||
CPU_FREQ equ (OS_BASE+0x000F600)
|
;CPU_FREQ equ (OS_BASE+0x000F600)
|
||||||
|
|
||||||
;unused ? no active references
|
;unused ? no active references
|
||||||
MOUSE_PORT equ (OS_BASE+0x000F604)
|
;MOUSE_PORT equ (OS_BASE+0x000F604)
|
||||||
|
|
||||||
;unused
|
;unused
|
||||||
PS2_CHUNK equ (OS_BASE+0x000FB00)
|
PS2_CHUNK equ (OS_BASE+0x000FB00)
|
||||||
|
@ -335,7 +335,8 @@ __exports:
|
|||||||
delay_hs, 'Delay', \ ; ebx
|
delay_hs, 'Delay', \ ; ebx
|
||||||
set_mouse_data, 'SetMouseData', \ ;
|
set_mouse_data, 'SetMouseData', \ ;
|
||||||
set_keyboard_data, 'SetKeyboardData', \ ; gcc fastcall
|
set_keyboard_data, 'SetKeyboardData', \ ; gcc fastcall
|
||||||
timer_hs, 'TimerHs' ; stdcall
|
timer_hs, 'TimerHs', \ ; stdcall
|
||||||
|
get_cpu_freq, 'GetCpuFreq'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ if lang eq ru
|
|||||||
boot_pal_vga db '“áâ ®¢ª VGA 640x480 ¯ «¨âàë',0
|
boot_pal_vga db '“áâ ®¢ª VGA 640x480 ¯ «¨âàë',0
|
||||||
boot_failed db '‡ £à㧪 ¯¥à¢®£® ¯à¨«®¦¥¨ï ¥ 㤠« áì',0
|
boot_failed db '‡ £à㧪 ¯¥à¢®£® ¯à¨«®¦¥¨ï ¥ 㤠« áì',0
|
||||||
boot_mtrr db '“áâ ®¢ª MTRR',0
|
boot_mtrr db '“áâ ®¢ª MTRR',0
|
||||||
|
|
||||||
boot_APIC_found db 'APIC ¢ª«îç¥', 0
|
boot_APIC_found db 'APIC ¢ª«îç¥', 0
|
||||||
boot_APIC_nfound db 'APIC ¥ ©¤¥', 0
|
boot_APIC_nfound db 'APIC ¥ ©¤¥', 0
|
||||||
if preboot_blogesc
|
if preboot_blogesc
|
||||||
@ -119,7 +119,7 @@ else
|
|||||||
boot_pal_vga db 'Setting VGA 640x480 palette',0
|
boot_pal_vga db 'Setting VGA 640x480 palette',0
|
||||||
boot_failed db 'Failed to start first app',0
|
boot_failed db 'Failed to start first app',0
|
||||||
boot_mtrr db 'Setting MTRR',0
|
boot_mtrr db 'Setting MTRR',0
|
||||||
|
|
||||||
boot_APIC_found db 'APIC enabled', 0
|
boot_APIC_found db 'APIC enabled', 0
|
||||||
boot_APIC_nfound db 'APIC not found', 0
|
boot_APIC_nfound db 'APIC not found', 0
|
||||||
if preboot_blogesc
|
if preboot_blogesc
|
||||||
@ -332,6 +332,8 @@ mem_block_list rd 64*2
|
|||||||
mem_used_list rd 64*2
|
mem_used_list rd 64*2
|
||||||
mem_hash_cnt rd 64
|
mem_hash_cnt rd 64
|
||||||
|
|
||||||
|
cpu_freq rq 1
|
||||||
|
|
||||||
heap_mutex MUTEX
|
heap_mutex MUTEX
|
||||||
heap_size rd 1
|
heap_size rd 1
|
||||||
heap_free rd 1
|
heap_free rd 1
|
||||||
|
@ -165,6 +165,7 @@ raise_event: ;; EXPORT use
|
|||||||
; esi - event data (=0 => skip)
|
; esi - event data (=0 => skip)
|
||||||
;scratched: ebx,ecx,esi,edi
|
;scratched: ebx,ecx,esi,edi
|
||||||
call NotDummyTest ; not returned for fail !!!
|
call NotDummyTest ; not returned for fail !!!
|
||||||
|
mov [check_idle_semaphore], 5
|
||||||
or esi, esi
|
or esi, esi
|
||||||
jz @f
|
jz @f
|
||||||
lea edi, [ebx+EVENT.code]
|
lea edi, [ebx+EVENT.code]
|
||||||
|
@ -420,7 +420,7 @@ high_code:
|
|||||||
|
|
||||||
call calculate_fast_getting_offset_for_WinMapAddress
|
call calculate_fast_getting_offset_for_WinMapAddress
|
||||||
; for Qemu or non standart video cards
|
; for Qemu or non standart video cards
|
||||||
; Unfortunately [BytesPerScanLine] does not always
|
; Unfortunately [BytesPerScanLine] does not always
|
||||||
; equal to [_display.width] * [ScreenBPP] / 8
|
; equal to [_display.width] * [ScreenBPP] / 8
|
||||||
call calculate_fast_getting_offset_for_LFB
|
call calculate_fast_getting_offset_for_LFB
|
||||||
|
|
||||||
@ -837,16 +837,19 @@ end if
|
|||||||
rdtsc ;call _rdtsc
|
rdtsc ;call _rdtsc
|
||||||
sti
|
sti
|
||||||
sub eax, ecx
|
sub eax, ecx
|
||||||
|
xor edx, edx
|
||||||
|
shld edx, eax, 2
|
||||||
shl eax, 2
|
shl eax, 2
|
||||||
mov [CPU_FREQ], eax ; save tsc / sec
|
mov dword [cpu_freq], eax
|
||||||
; mov ebx, 1000000
|
mov dword [cpu_freq+4], edx
|
||||||
; div ebx
|
mov ebx, 1000000
|
||||||
|
div ebx
|
||||||
; ¢®®¡é¥-â® ¯à®¨§¢®¤¨â¥«ì®áâì ¢ ¤ ®¬ ª®ªà¥â®¬ ¬¥áâ¥
|
; ¢®®¡é¥-â® ¯à®¨§¢®¤¨â¥«ì®áâì ¢ ¤ ®¬ ª®ªà¥â®¬ ¬¥áâ¥
|
||||||
; ᮢ¥à襮 ¥ªà¨â¨ç , ® çâ®¡ë § âªãâì «î¡¨â¥«¥©
|
; ᮢ¥à襮 ¥ªà¨â¨ç , ® çâ®¡ë § âªãâì «î¡¨â¥«¥©
|
||||||
; ®¯â¨¬¨§¨àãîé¨å ª®¬¯¨«ïâ®à®¢ Ÿ‚“...
|
; ®¯â¨¬¨§¨àãîé¨å ª®¬¯¨«ïâ®à®¢ Ÿ‚“...
|
||||||
mov edx, 2251799814
|
; mov edx, 2251799814
|
||||||
mul edx
|
; mul edx
|
||||||
shr edx, 19
|
; shr edx, 19
|
||||||
mov [stall_mcs], edx
|
mov [stall_mcs], edx
|
||||||
; PRINT CPU FREQUENCY
|
; PRINT CPU FREQUENCY
|
||||||
mov esi, boot_cpufreq
|
mov esi, boot_cpufreq
|
||||||
@ -2240,10 +2243,14 @@ sysfn_getidletime: ; 18.4 = GET IDLETIME
|
|||||||
ret
|
ret
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
sysfn_getcpuclock: ; 18.5 = GET TSC/SEC
|
sysfn_getcpuclock: ; 18.5 = GET TSC/SEC
|
||||||
mov eax, [CPU_FREQ]
|
mov eax, dword [cpu_freq]
|
||||||
mov [esp+32], eax
|
mov [esp+32], eax
|
||||||
ret
|
ret
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
|
get_cpu_freq:
|
||||||
|
mov eax, dword [cpu_freq]
|
||||||
|
mov edx, dword [cpu_freq+4]
|
||||||
|
ret
|
||||||
; SAVE ramdisk to /hd/1/menuet.img
|
; SAVE ramdisk to /hd/1/menuet.img
|
||||||
;!!!!!!!!!!!!!!!!!!!!!!!!
|
;!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
include 'blkdev/rdsave.inc'
|
include 'blkdev/rdsave.inc'
|
||||||
|
Loading…
Reference in New Issue
Block a user