]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Library/BaseLib/X64/CpuIdEx.nasm
MdePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdePkg / Library / BaseLib / X64 / CpuIdEx.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 ; CpuIdEx.Asm
9 ;
10 ; Abstract:
11 ;
12 ; AsmCpuidEx function
13 ;
14 ; Notes:
15 ;
16 ;------------------------------------------------------------------------------
17
18 DEFAULT REL
19 SECTION .text
20
21 ;------------------------------------------------------------------------------
22 ; UINT32
23 ; EFIAPI
24 ; AsmCpuidEx (
25 ; IN UINT32 RegisterInEax,
26 ; IN UINT32 RegisterInEcx,
27 ; OUT UINT32 *RegisterOutEax OPTIONAL,
28 ; OUT UINT32 *RegisterOutEbx OPTIONAL,
29 ; OUT UINT32 *RegisterOutEcx OPTIONAL,
30 ; OUT UINT32 *RegisterOutEdx OPTIONAL
31 ; )
32 ;------------------------------------------------------------------------------
33 global ASM_PFX(AsmCpuidEx)
34 ASM_PFX(AsmCpuidEx):
35 push rbx
36 mov eax, ecx
37 mov ecx, edx
38 push rax ; save Index on stack
39 cpuid
40 mov r10, [rsp + 0x38]
41 test r10, r10
42 jz .0
43 mov [r10], ecx
44 .0:
45 mov rcx, r8
46 jrcxz .1
47 mov [rcx], eax
48 .1:
49 mov rcx, r9
50 jrcxz .2
51 mov [rcx], ebx
52 .2:
53 mov rcx, [rsp + 0x40]
54 jrcxz .3
55 mov [rcx], edx
56 .3:
57 pop rax ; restore Index to rax as return value
58 pop rbx
59 ret
60