/** @file
  Define Name, GUID and data format for an EFI Variable that is used to save the entry point
  of a code segment which will be loaded and executed by a standalone boot script
  executor on S3 boot path.

  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>

  SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#ifndef _BOOT_SCRIPT_EXECUTOR_VARIABLE_H_
#define _BOOT_SCRIPT_EXECUTOR_VARIABLE_H_

#define EFI_BOOT_SCRIPT_EXECUTOR_VARIABLE_GUID \
  { \
    0x3079818c, 0x46d4, 0x4a73, {0xae, 0xf3, 0xe3, 0xe4, 0x6c, 0xf1, 0xee, 0xdb} \
  }

//
// The following structure boosts performance by combining structure all ACPI related variables into one.
//
#pragma pack(1)

typedef struct {
  EFI_PHYSICAL_ADDRESS    BootScriptExecutorEntrypoint;
} BOOT_SCRIPT_EXECUTOR_VARIABLE;

#pragma pack()

#define BOOT_SCRIPT_EXECUTOR_VARIABLE_NAME  L"BootScriptExecutorVariable"

extern EFI_GUID  gEfiBootScriptExecutorVariableGuid;

#define EFI_BOOT_SCRIPT_EXECUTOR_CONTEXT_GUID \
  { \
    0x79cb58c4, 0xac51, 0x442f, {0xaf, 0xd7, 0x98, 0xe4, 0x7d, 0x2e, 0x99, 0x8} \
  }

extern EFI_GUID  gEfiBootScriptExecutorContextGuid;

#endif
