/** @file
  Header file that supports Framework extension to UEFI/PI for PEI modules.

  This header file must include Framework extension definitions common to PEI
  modules.

  Copyright (c) 2007, 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.

**/

#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
