/** @file

  Root include file for Mde Package DXE_CORE, DXE, RUNTIME, SMM, SAL type modules.

Copyright (c) 2006 - 2010, 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 that 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.

**/

#ifndef __PI_DXE_H__
#define __PI_DXE_H__

#include <Uefi/UefiBaseType.h>
#include <Uefi/UefiSpec.h>

#include <Pi/PiDxeCis.h>

#endif

