/*++

Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
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.             

Module Name:
  EfiLdrHandoff.h

Abstract:

Revision History:

--*/

#ifndef _EFILDR_HANDOFF_H_
#define _EFILDR_HANDOFF_H_

#define EFILDR_BASE_SEGMENT 0x2000
#define EFILDR_LOAD_ADDRESS        (EFILDR_BASE_SEGMENT << 4)
#define EFILDR_HEADER_ADDRESS      (EFILDR_LOAD_ADDRESS+0x2000)

#define EFILDR_CB_VA        0x00

typedef struct _EFILDRHANDOFF {
    UINTN                    MemDescCount;
    EFI_MEMORY_DESCRIPTOR   *MemDesc;
    VOID                    *BfvBase;
    UINTN                   BfvSize;
    VOID                    *DxeIplImageBase;
    UINTN                   DxeIplImageSize;
    VOID                    *DxeCoreImageBase;
    UINTN                   DxeCoreImageSize;
    VOID                    *DxeCoreEntryPoint;
} EFILDRHANDOFF;

typedef struct {
    UINT32       CheckSum;
    UINT32       Offset;
    UINT32       Length;
    UINT8        FileName[52];
} EFILDR_IMAGE;

typedef struct {          
    UINT32       Signature;     
    UINT32       HeaderCheckSum;
    UINT32       FileLength;
    UINT32       NumberOfImages;
} EFILDR_HEADER;

#endif
