; ; This file contains an 'Intel Pre-EFI Module' and is licensed ; for Intel CPUs and Chipsets under the terms of your license ; agreement with Intel or your vendor. This file may be ; modified by the user, subject to additional terms of the ; license agreement ; ;------------------------------------------------------------------------------ ; ; Copyright (c) 2006 - 2012 Intel Corporation. All rights reserved ; This software and associated documentation (if any) is furnished ; under a license and may only be used or copied in accordance ; with the terms of the license. Except as permitted by such ; license, no part of this software or documentation may be ; reproduced, stored in a retrieval system, or transmitted in any ; form or by any means without the express written consent of ; Intel Corporation. ; ; ; Module Name: ; ; Cpu.asm ; ; Abstract: ; ; Assembly code of Cpu ; ;------------------------------------------------------------------------------ .686p .model flat .xmm IA32_CR4_OSFXSR equ 200h IA32_CR4_OSXMMEXCPT equ 400h IA32_CR0_MP equ 2h IA32_CPUID_SSE2 equ 02000000h IA32_CPUID_SSE2_B equ 26 .code ;------------------------------------------------------------------------------ ; Set up flags in CR4 for XMM instruction enabling ;------------------------------------------------------------------------------ XmmInit PROC C PUBLIC push ebx ; Check whether SSE2 is supported mov eax, 1 cpuid bt edx, IA32_CPUID_SSE2_B jnc @F ; Enable XMM mov eax, cr0 or eax, IA32_CR0_MP mov cr0, eax mov eax, cr4 or eax, IA32_CR4_OSFXSR OR IA32_CR4_OSXMMEXCPT mov cr4, eax @@: pop ebx ret XmmInit ENDP ;------------------------------------------------------------------------------ ; Invalidate cache ;------------------------------------------------------------------------------ CacheInvd PROC C PUBLIC invd ret CacheInvd ENDP END