/** @file
  Header file that support Framework extension to UEFI/PI for PEI modules.

  This header file must include Framework extension definitions common to PEI
  modules.

Copyright (c) 2007 - 2018, 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 _FRAMEWORK_PEI_H_
#define _FRAMEWORK_PEI_H_

#include <PiPei.h>

#include <Framework/FirmwareVolumeImageFormat.h>
#include <Framework/FirmwareVolumeHeader.h>
#include <Framework/Hob.h>
#include <Framework/StatusCode.h>
#include <Framework/BootScript.h>
#include <Framework/PeiCis.h>

#endif
