gps/GPSResources/tcpmp/common/cpu/x86.asm

80 lines
1.7 KiB
NASM
Executable File

;*****************************************************************************
;*
;* This program is free software ; you can redistribute it and/or modify
;* it under the terms of the GNU General Public License as published by
;* the Free Software Foundation; either version 2 of the License, or
;* (at your option) any later version.
;*
;* This program is distributed in the hope that it will be useful,
;* but WITHOUT ANY WARRANTY; without even the implied warranty of
;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;* GNU General Public License for more details.
;*
;* You should have received a copy of the GNU General Public License
;* along with this program; if not, write to the Free Software
;* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
;*
;* $Id: x86.asm 271 2005-08-09 08:31:35Z picard $
;*
;* The Core Pocket Media Player
;* Copyright (c) 2004-2005 Gabor Kovacs
;*
;*****************************************************************************
BITS 32
SECTION .text
%macro cglobal 2
%define %1 _%1@%2
global %1
%endmacro
cglobal GetCpuId,8
cglobal CPUSpeedClk,4
ALIGN 16
GetCpuId:
pushfd
pop eax
mov edx,eax
xor eax,00200000h
push eax
popfd
pushfd
pop eax
cmp eax,edx
mov eax,0
jz .NoCpuId
push ebx
push esi
mov eax,[esp+12]
mov esi,[esp+16]
cpuid
mov [esi],eax
mov [esi+4],ebx
mov [esi+8],ecx
mov [esi+12],edx
pop esi
pop ebx
.NoCpuId:
ret 8
CPUSpeedClk:
push ebx
mov ebx,esp
mov edx,[esp+8]
imul eax,edx,1000+3
.CPULoop:
%rep 1000
add ecx,[ebx]
%endrep
sub edx,1
jg .CPULoop
xor edx,edx
pop ebx
ret 4