]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Library/BaseLib/X64/CpuId.nasm
MdePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdePkg / Library / BaseLib / X64 / CpuId.nasm
1 ;------------------------------------------------------------------------------
2 ;
3 ; Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
4 ; SPDX-License-Identifier: BSD-2-Clause-Patent
5 ;
6 ; Module Name:
7 ;
8 ; CpuId.Asm
9 ;
10 ; Abstract:
11 ;
12 ; AsmCpuid function
13 ;
14 ; Notes:
15 ;
16 ;------------------------------------------------------------------------------
17
18 DEFAULT REL
19 SECTION .text
20
21 ;------------------------------------------------------------------------------
22 ; VOID
23 ; EFIAPI
24 ; AsmCpuid (
25 ; IN UINT32 RegisterInEax,
26 ; OUT UINT32 *RegisterOutEax OPTIONAL,
27 ; OUT UINT32 *RegisterOutEbx OPTIONAL,
28 ; OUT UINT32 *RegisterOutEcx OPTIONAL,
29 ; OUT UINT32 *RegisterOutEdx OPTIONAL
30 ; )
31 ;------------------------------------------------------------------------------
32 global ASM_PFX(AsmCpuid)
33 ASM_PFX(AsmCpuid):
34 push rbx
35 mov eax, ecx
36 push rax ; save Index on stack
37 push rdx
38 cpuid
39 test r9, r9
40 jz .0
41 mov [r9], ecx
42 .0:
43 pop rcx
44 jrcxz .1
45 mov [rcx], eax
46 .1:
47 mov rcx, r8
48 jrcxz .2
49 mov [rcx], ebx
50 .2:
51 mov rcx, [rsp + 0x38]
52 jrcxz .3
53 mov [rcx], edx
54 .3:
55 pop rax ; restore Index to rax as return value
56 pop rbx
57 ret
58