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**/
22VOID
23EFIAPI
24AsmEnableCache (
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