Home | History | Annotate | Download | only in Ia32
      1 /** @file
      2 
      3 Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
      4 This program and the accompanying materials
      5 are licensed and made available under the terms and conditions of the BSD License
      6 which accompanies this distribution.  The full text of the license may be found at
      7 http://opensource.org/licenses/bsd-license.php
      8 
      9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     11 
     12 Module Name:
     13   VirtualMemory.h
     14 
     15 Abstract:
     16 
     17 Revision History:
     18 
     19 **/
     20 
     21 #ifndef _VIRTUAL_MEMORY_H_
     22 #define _VIRTUAL_MEMORY_H_
     23 
     24 #pragma pack(1)
     25 
     26 //
     27 // Page Directory Entry 4K
     28 //
     29 typedef union {
     30   struct {
     31     UINT32  Present:1;                // 0 = Not present in memory, 1 = Present in memory
     32     UINT32  ReadWrite:1;              // 0 = Read-Only, 1= Read/Write
     33     UINT32  UserSupervisor:1;         // 0 = Supervisor, 1=User
     34     UINT32  WriteThrough:1;           // 0 = Write-Back caching, 1=Write-Through caching
     35     UINT32  CacheDisabled:1;          // 0 = Cached, 1=Non-Cached
     36     UINT32  Accessed:1;               // 0 = Not accessed, 1 = Accessed (set by CPU)
     37     UINT32  MustBeZero:3;             // Must Be Zero
     38     UINT32  Available:3;              // Available for use by system software
     39     UINT32  PageTableBaseAddress:20;  // Page Table Base Address
     40   } Bits;
     41   UINT32    Uint32;
     42 } IA32_PAGE_DIRECTORY_ENTRY_4K;
     43 
     44 //
     45 // Page Table Entry 4K
     46 //
     47 typedef union {
     48   struct {
     49     UINT32  Present:1;                // 0 = Not present in memory, 1 = Present in memory
     50     UINT32  ReadWrite:1;              // 0 = Read-Only, 1= Read/Write
     51     UINT32  UserSupervisor:1;         // 0 = Supervisor, 1=User
     52     UINT32  WriteThrough:1;           // 0 = Write-Back caching, 1=Write-Through caching
     53     UINT32  CacheDisabled:1;          // 0 = Cached, 1=Non-Cached
     54     UINT32  Accessed:1;               // 0 = Not accessed (cleared by software), 1 = Accessed (set by CPU)
     55     UINT32  Dirty:1;                  // 0 = Not written to (cleared by software), 1 = Written to (set by CPU)
     56     UINT32  PAT:1;                    // 0 = Disable PAT, 1 = Enable PAT
     57     UINT32  Global:1;                 // Ignored
     58     UINT32  Available:3;              // Available for use by system software
     59     UINT32  PageTableBaseAddress:20;  // Page Table Base Address
     60   } Bits;
     61   UINT32    Uint32;
     62 } IA32_PAGE_TABLE_ENTRY_4K;
     63 
     64 //
     65 // Page Table Entry 4M
     66 //
     67 typedef union {
     68   struct {
     69     UINT32  Present:1;                // 0 = Not present in memory, 1 = Present in memory
     70     UINT32  ReadWrite:1;              // 0 = Read-Only, 1= Read/Write
     71     UINT32  UserSupervisor:1;         // 0 = Supervisor, 1=User
     72     UINT32  WriteThrough:1;           // 0 = Write-Back caching, 1=Write-Through caching
     73     UINT32  CacheDisabled:1;          // 0 = Cached, 1=Non-Cached
     74     UINT32  Accessed:1;               // 0 = Not accessed, 1 = Accessed (set by CPU)
     75     UINT32  Dirty:1;                  // 0 = Not Dirty, 1 = written by processor on access to page
     76     UINT32  MustBe1:1;                // Must be 1
     77     UINT32  Global:1;                 // 0 = Not global page, 1 = global page TLB not cleared on CR3 write
     78     UINT32  Available:3;              // Available for use by system software
     79     UINT32  PAT:1;                    //
     80     UINT32  MustBeZero:9;             // Must be zero;
     81     UINT32  PageTableBaseAddress:10;  // Page Table Base Address
     82   } Bits;
     83   UINT32    Uint32;
     84 } IA32_PAGE_TABLE_ENTRY_4M;
     85 
     86 #pragma pack()
     87 
     88 #endif
     89