git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@152 6f19259b-4bc3-4df7-8a09-765794883524

This commit is contained in:
lgao4 2006-05-14 09:16:36 +00:00
parent 1b7b460ff9
commit c1288a3926
2 changed files with 733 additions and 732 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,62 +1,62 @@
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; ;
; Copyright (c) 2006, Intel Corporation ; Copyright (c) 2006, Intel Corporation
; All rights reserved. This program and the accompanying materials ; All rights reserved. This program and the accompanying materials
; are licensed and made available under the terms and conditions of the BSD License ; are licensed and made available under the terms and conditions of the BSD License
; which accompanies this distribution. The full text of the license may be found at ; which accompanies this distribution. The full text of the license may be found at
; http://opensource.org/licenses/bsd-license.php ; http://opensource.org/licenses/bsd-license.php
; ;
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, ; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. ; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
; ;
; Module Name: ; Module Name:
; ;
; CpuId.Asm ; CpuId.Asm
; ;
; Abstract: ; Abstract:
; ;
; AsmCpuid function ; AsmCpuid function
; ;
; Notes: ; Notes:
; ;
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
.code .code
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; VOID ; VOID
; EFIAPI ; EFIAPI
; AsmCpuid ( ; AsmCpuid (
; IN UINT32 RegisterInEax, ; IN UINT32 RegisterInEax,
; OUT UINT32 *RegisterOutEax OPTIONAL, ; OUT UINT32 *RegisterOutEax OPTIONAL,
; OUT UINT32 *RegisterOutEbx OPTIONAL, ; OUT UINT32 *RegisterOutEbx OPTIONAL,
; OUT UINT32 *RegisterOutEcx OPTIONAL, ; OUT UINT32 *RegisterOutEcx OPTIONAL,
; OUT UINT32 *RegisterOutEdx OPTIONAL ; OUT UINT32 *RegisterOutEdx OPTIONAL
; ) ; )
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
AsmCpuid PROC USES rbx AsmCpuid PROC USES rbx
mov eax, ecx mov eax, ecx
push rdx push rdx
push rax ; save Index on stack push rax ; save Index on stack
cpuid cpuid
test r9, r9 test r9, r9
jz @F jz @F
mov [r9], ecx mov [r9], ecx
@@: @@:
pop rcx pop rcx
jrcxz @F jrcxz @F
mov [rcx], eax mov [rcx], eax
@@: @@:
mov rcx, r8 mov rcx, r8
jrcxz @F jrcxz @F
mov [rcx], ebx mov [rcx], ebx
@@: @@:
mov rcx, [rsp + 30h] mov rcx, [rsp + 38h]
jrcxz @F jrcxz @F
mov [rcx], edx mov [rcx], edx
@@: @@:
pop rax ; restore Index to rax as return value pop rax ; restore Index to rax as return value
ret ret
AsmCpuid ENDP AsmCpuid ENDP
END END