]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ia32/CpuIdEx.c
Update the copyright notice format
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Library / EdkIIGlueLib / Library / BaseLib / Ia32 / CpuIdEx.c
CommitLineData
c7f33ca4 1/**\r
2 AsmCpuidEx function.\r
3\r
4 Copyright (c) 2006 - 2007, Intel Corporation\r
5 All rights reserved. This program and the accompanying materials\r
6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution. The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
9\r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13**/\r
14\r
15#include "BaseLibInternals.h"\r
16\r
17UINT32\r
18EFIAPI\r
19AsmCpuidEx (\r
20 IN UINT32 Index,\r
21 IN UINT32 SubIndex,\r
22 OUT UINT32 *RegisterEax, OPTIONAL\r
23 OUT UINT32 *RegisterEbx, OPTIONAL\r
24 OUT UINT32 *RegisterEcx, OPTIONAL\r
25 OUT UINT32 *RegisterEdx OPTIONAL\r
26 )\r
27{\r
28 _asm {\r
29 mov eax, Index\r
30 mov ecx, SubIndex\r
31 cpuid\r
32 push ecx\r
33 mov ecx, RegisterEax\r
34 jecxz SkipEax\r
35 mov [ecx], eax\r
36SkipEax:\r
37 mov ecx, RegisterEbx\r
38 jecxz SkipEbx\r
39 mov [ecx], ebx\r
40SkipEbx:\r
41 pop eax\r
42 mov ecx, RegisterEcx\r
43 jecxz SkipEcx\r
44 mov [ecx], eax\r
45SkipEcx:\r
46 mov ecx, RegisterEdx\r
47 jecxz SkipEdx\r
48 mov [ecx], edx\r
49SkipEdx:\r
50 mov eax, Index\r
51 }\r
52}\r