Home | History | Annotate | Download | only in EfiLdr
      1 /*++
      2 
      3 Copyright (c) 2006 - 2011, 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   EfiLdr.c
     14 
     15 Abstract:
     16 
     17 Revision History:
     18 
     19 --*/
     20 
     21 #ifndef _DUET_EFI_LOADER_H_
     22 #define _DUET_EFI_LOADER_H_
     23 
     24 #include "Uefi.h"
     25 #include "EfiLdrHandoff.h"
     26 
     27 #include <Protocol/LoadedImage.h>
     28 #include <IndustryStandard/PeImage.h>
     29 #include <Library/BaseLib.h>
     30 #include <Library/BaseMemoryLib.h>
     31 #include <Library/PrintLib.h>
     32 #include <Library/SerialPortLib.h>
     33 
     34 #define INT15_E820_AddressRangeMemory   1
     35 #define INT15_E820_AddressRangeReserved 2
     36 #define INT15_E820_AddressRangeACPI     3
     37 #define INT15_E820_AddressRangeNVS      4
     38 
     39 #define EFI_FIRMWARE_BASE_ADDRESS  0x00200000
     40 
     41 #define EFI_DECOMPRESSED_BUFFER_ADDRESS 0x00600000
     42 
     43 #define EFI_MAX_MEMORY_DESCRIPTORS 64
     44 
     45 #define LOADED_IMAGE_SIGNATURE     SIGNATURE_32('l','d','r','i')
     46 
     47 typedef struct {
     48   UINTN                       Signature;
     49   CHAR16                      *Name;          // Displayable name
     50   UINTN                       Type;
     51 
     52   BOOLEAN                     Started;        // If entrypoint has been called
     53   VOID                        *StartImageContext;
     54 
     55   EFI_IMAGE_ENTRY_POINT       EntryPoint;     // The image's entry point
     56   EFI_LOADED_IMAGE_PROTOCOL   Info;           // loaded image protocol
     57 
     58   //
     59   EFI_PHYSICAL_ADDRESS        ImageBasePage;  // Location in memory
     60   UINTN                       NoPages;        // Number of pages
     61   UINT8                       *ImageBase;     // As a char pointer
     62   UINT8                       *ImageEof;      // End of memory image
     63 
     64   // relocate info
     65   UINT8                       *ImageAdjust;   // Bias for reloc calculations
     66   UINTN                       StackAddress;
     67   UINT8                       *FixupData;     //  Original fixup data
     68 } EFILDR_LOADED_IMAGE;
     69 
     70 #pragma pack(4)
     71 typedef struct {
     72   UINT64       BaseAddress;
     73   UINT64       Length;
     74   UINT32       Type;
     75 } BIOS_MEMORY_MAP_ENTRY;
     76 #pragma pack()
     77 
     78 typedef struct {
     79   UINT32                MemoryMapSize;
     80   BIOS_MEMORY_MAP_ENTRY MemoryMapEntry[1];
     81 } BIOS_MEMORY_MAP;
     82 
     83 typedef
     84 VOID
     85 (EFIAPI * EFI_MAIN_ENTRYPOINT) (
     86     IN EFILDRHANDOFF  *Handoff
     87     );
     88 
     89 #endif //_DUET_EFI_LOADER_H_
     90