1;------------------------------------------------------------------------------ 2; 3; Copyright (c) 2006, 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 SECTION .text 19 20;------------------------------------------------------------------------------ 21; VOID 22; EFIAPI 23; AsmCpuid ( 24; IN UINT32 RegisterInEax, 25; OUT UINT32 *RegisterOutEax OPTIONAL, 26; OUT UINT32 *RegisterOutEbx OPTIONAL, 27; OUT UINT32 *RegisterOutEcx OPTIONAL, 28; OUT UINT32 *RegisterOutEdx OPTIONAL 29; ); 30;------------------------------------------------------------------------------ 31global ASM_PFX(AsmCpuid) 32ASM_PFX(AsmCpuid): 33 push ebx 34 push ebp 35 mov ebp, esp 36 mov eax, [ebp + 12] 37 cpuid 38 push ecx 39 mov ecx, [ebp + 16] 40 jecxz .0 41 mov [ecx], eax 42.0: 43 mov ecx, [ebp + 20] 44 jecxz .1 45 mov [ecx], ebx 46.1: 47 mov ecx, [ebp + 24] 48 jecxz .2 49 pop DWORD [ecx] 50.2: 51 mov ecx, [ebp + 28] 52 jecxz .3 53 mov [ecx], edx 54.3: 55 mov eax, [ebp + 12] 56 leave 57 pop ebx 58 ret 59 60