OpenCore  1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
GenPage.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include "VirtualMemory.h"

Go to the source code of this file.

Macros

#define EFI_PAGE_BASE_OFFSET_IN_LDR   0x70000
 
#define EFI_PAGE_BASE_ADDRESS   (EFI_PAGE_BASE_OFFSET_IN_LDR + 0x20000)
 
#define EFI_MAX_ENTRY_NUM   512
 
#define EFI_PML4_ENTRY_NUM   1
 
#define EFI_PDPTE_ENTRY_NUM   4
 
#define EFI_PDE_ENTRY_NUM   EFI_MAX_ENTRY_NUM
 
#define EFI_PML4_PAGE_NUM   1
 
#define EFI_PDPTE_PAGE_NUM   EFI_PML4_ENTRY_NUM
 
#define EFI_PDE_PAGE_NUM   (EFI_PML4_ENTRY_NUM * EFI_PDPTE_ENTRY_NUM)
 
#define EFI_PAGE_NUMBER   (EFI_PML4_PAGE_NUM + EFI_PDPTE_PAGE_NUM + EFI_PDE_PAGE_NUM)
 
#define EFI_SIZE_OF_PAGE   0x1000
 
#define EFI_PAGE_SIZE_2M   0x200000
 
#define CONVERT_BIN_PAGE_ADDRESS(a)
 
#define UTILITY_NAME   "GenPage"
 
#define UTILITY_MAJOR_VERSION   0
 
#define UTILITY_MINOR_VERSION   2
 

Functions

void Error (char *FileName, uint32_t LineNumber, uint32_t ErrorCode, char *OffendingText, char *MsgFmt,...)
 
void Version (void)
 
void Usage (void)
 
void * CreateIdentityMappingPageTables (void)
 
int32_t GenBinPage (void *BaseMemory, char *NoPageFileName, char *PageFileName)
 
int main (int argc, char **argv)
 

Variables

uint32_t gPageTableBaseAddress = EFI_PAGE_BASE_ADDRESS
 
uint32_t gPageTableOffsetInFile = EFI_PAGE_BASE_OFFSET_IN_LDR
 

Detailed Description

Pre-Create a 4G page table (2M pages). It's used in DUET x64 build needed to enter LongMode.

Create 4G page table (2M pages)

                        Linear Address

63 48 47 39 38 30 29 21 20 0 +-----—+----—+------------—+--------—+--------------------------—+ PML4 Directory-Ptr Directory Offset

Paging-Structures := PML4 ( Directory-Ptr Directory {512} ) {4}

Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php

THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

Definition in file GenPage.c.

Macro Definition Documentation

◆ CONVERT_BIN_PAGE_ADDRESS

#define CONVERT_BIN_PAGE_ADDRESS ( a)
Value:
((uint8_t *) a - PageTable + gPageTableBaseAddress)
uint32_t gPageTableBaseAddress
Definition GenPage.c:38
UINT8 uint8_t

Definition at line 56 of file GenPage.c.

◆ EFI_MAX_ENTRY_NUM

#define EFI_MAX_ENTRY_NUM   512

Definition at line 41 of file GenPage.c.

◆ EFI_PAGE_BASE_ADDRESS

#define EFI_PAGE_BASE_ADDRESS   (EFI_PAGE_BASE_OFFSET_IN_LDR + 0x20000)

Definition at line 36 of file GenPage.c.

◆ EFI_PAGE_BASE_OFFSET_IN_LDR

#define EFI_PAGE_BASE_OFFSET_IN_LDR   0x70000

Definition at line 35 of file GenPage.c.

◆ EFI_PAGE_NUMBER

#define EFI_PAGE_NUMBER   (EFI_PML4_PAGE_NUM + EFI_PDPTE_PAGE_NUM + EFI_PDE_PAGE_NUM)

Definition at line 51 of file GenPage.c.

◆ EFI_PAGE_SIZE_2M

#define EFI_PAGE_SIZE_2M   0x200000

Definition at line 54 of file GenPage.c.

◆ EFI_PDE_ENTRY_NUM

#define EFI_PDE_ENTRY_NUM   EFI_MAX_ENTRY_NUM

Definition at line 45 of file GenPage.c.

◆ EFI_PDE_PAGE_NUM

#define EFI_PDE_PAGE_NUM   (EFI_PML4_ENTRY_NUM * EFI_PDPTE_ENTRY_NUM)

Definition at line 49 of file GenPage.c.

◆ EFI_PDPTE_ENTRY_NUM

#define EFI_PDPTE_ENTRY_NUM   4

Definition at line 44 of file GenPage.c.

◆ EFI_PDPTE_PAGE_NUM

#define EFI_PDPTE_PAGE_NUM   EFI_PML4_ENTRY_NUM

Definition at line 48 of file GenPage.c.

◆ EFI_PML4_ENTRY_NUM

#define EFI_PML4_ENTRY_NUM   1

Definition at line 43 of file GenPage.c.

◆ EFI_PML4_PAGE_NUM

#define EFI_PML4_PAGE_NUM   1

Definition at line 47 of file GenPage.c.

◆ EFI_SIZE_OF_PAGE

#define EFI_SIZE_OF_PAGE   0x1000

Definition at line 53 of file GenPage.c.

◆ UTILITY_MAJOR_VERSION

#define UTILITY_MAJOR_VERSION   0

Definition at line 66 of file GenPage.c.

◆ UTILITY_MINOR_VERSION

#define UTILITY_MINOR_VERSION   2

Definition at line 67 of file GenPage.c.

◆ UTILITY_NAME

#define UTILITY_NAME   "GenPage"

Definition at line 61 of file GenPage.c.

Function Documentation

◆ CreateIdentityMappingPageTables()

void * CreateIdentityMappingPageTables ( void )

Definition at line 141 of file GenPage.c.

◆ Error()

void Error ( char * FileName,
uint32_t LineNumber,
uint32_t ErrorCode,
char * OffendingText,
char * MsgFmt,
... )

Definition at line 70 of file GenPage.c.

◆ GenBinPage()

int32_t GenBinPage ( void * BaseMemory,
char * NoPageFileName,
char * PageFileName )

Definition at line 232 of file GenPage.c.

◆ main()

int main ( int argc,
char ** argv )

Definition at line 311 of file GenPage.c.

◆ Usage()

void Usage ( void )

Definition at line 110 of file GenPage.c.

◆ Version()

void Version ( void )

Definition at line 87 of file GenPage.c.

Variable Documentation

◆ gPageTableBaseAddress

uint32_t gPageTableBaseAddress = EFI_PAGE_BASE_ADDRESS

Definition at line 38 of file GenPage.c.

◆ gPageTableOffsetInFile

uint32_t gPageTableOffsetInFile = EFI_PAGE_BASE_OFFSET_IN_LDR

Definition at line 39 of file GenPage.c.