Home | History | Annotate | Download | only in Ia32
      1 /** @file
      2   AsmEnableCache function
      3 
      4   Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
      5   This program and the accompanying materials
      6   are licensed and made available under the terms and conditions of the BSD License
      7   which accompanies this distribution.  The full text of the license may be found at
      8   http://opensource.org/licenses/bsd-license.php.
      9 
     10   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     11   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     12 
     13 **/
     14 
     15 /**
     16   Perform a WBINVD and clear both the CD and NW bits of CR0.
     17 
     18   Enables the caches by executing a WBINVD instruction and then clear both the CD and NW
     19   bits of CR0 to 0.  This function is only available on IA-32 and x64.
     20 
     21 **/
     22 VOID
     23 EFIAPI
     24 AsmEnableCache (
     25   VOID
     26   )
     27 {
     28   _asm {
     29     wbinvd
     30     mov     eax, cr0
     31     btr     eax, 30
     32     btr     eax, 29
     33     mov     cr0, eax
     34   }
     35 }
     36 
     37