--- /dev/null
+/** @file\r
+ Runtime Architectural Protocol as defined in DXE CIS\r
+\r
+ This code is used to produce the EFI 1.0 runtime virtual switch over\r
+\r
+ This driver must add SetVirtualAddressMap () and ConvertPointer () to\r
+ the EFI system table. This driver is not responcible for CRCing the \r
+ EFI system table.\r
+\r
+ This driver will add EFI_RUNTIME_ARCH_PROTOCOL_GUID protocol with a \r
+ pointer to the Runtime Arch Protocol instance structure. The protocol\r
+ member functions are used by the DXE core to export information need\r
+ by this driver to produce the runtime transition to virtual mode\r
+ calling.\r
+\r
+ Copyright (c) 2006, Intel Corporation \r
+ All rights reserved. This program and the accompanying materials \r
+ are licensed and made available under the terms and conditions of the BSD License \r
+ which accompanies this distribution. The full text of the license may be found at \r
+ http://opensource.org/licenses/bsd-license.php \r
+\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+ Module Name: Runtime.h\r
+\r
+ @par Revision Reference:\r
+ Version 0.91.\r
+\r
+**/\r
+\r
+#ifndef __ARCH_PROTOCOL_RUNTIME_H__\r
+#define __ARCH_PROTOCOL_RUNTIME_H__\r
+\r
+//\r
+// Global ID for the Runtime Architectural Protocol\r
+//\r
+#define EFI_RUNTIME_ARCH_PROTOCOL_GUID \\r
+ { 0xb7dfb4e1, 0x52f, 0x449f, {0x87, 0xbe, 0x98, 0x18, 0xfc, 0x91, 0xb7, 0x33 } }\r
+\r
+typedef struct _EFI_RUNTIME_ARCH_PROTOCOL EFI_RUNTIME_ARCH_PROTOCOL;\r
+\r
+//\r
+// LIST_ENTRY from BaseType \r
+//\r
+typedef LIST_ENTRY EFI_LIST_ENTRY;\r
+\r
+typedef struct _EFI_RUNTIME_IMAGE_ENTRY EFI_RUNTIME_IMAGE_ENTRY;\r
+\r
+struct _EFI_RUNTIME_IMAGE_ENTRY {\r
+ VOID *ImageBase;\r
+ UINT64 ImageSize;\r
+ VOID *RelocationData;\r
+ EFI_HANDLE Handle;\r
+ EFI_LIST_ENTRY Link;\r
+};\r
+\r
+typedef struct _EFI_RUNTIME_EVENT_ENTRY EFI_RUNTIME_EVENT_ENTRY;\r
+\r
+struct _EFI_RUNTIME_EVENT_ENTRY {\r
+ UINT32 Type;\r
+ EFI_TPL NotifyTpl;\r
+ EFI_EVENT_NOTIFY NotifyFunction;\r
+ VOID *NotifyContext;\r
+ EFI_EVENT *Event;\r
+ EFI_LIST_ENTRY Link;\r
+};\r
+\r
+//\r
+// Interface stucture for the Runtime Architectural Protocol\r
+//\r
+/**\r
+ @par Protocol Description:\r
+ Allows the runtime functionality of the DXE Foundation to be contained in a \r
+ separate driver. It also provides hooks for the DXE Foundation to export \r
+ information that is needed at runtime. As such, this protocol allows the DXE \r
+ Foundation to manage runtime drivers and events. This protocol also implies \r
+ that the runtime services required to transition to virtual mode, \r
+ SetVirtualAddressMap() and ConvertPointer(), have been registered into the \r
+ EFI Runtime Table in the EFI System Partition. This protocol must be produced \r
+ by a runtime DXE driver and may only be consumed by the DXE Foundation.\r
+\r
+ @param ImageHead\r
+ A list of type EFI_RUNTIME_IMAGE_ENTRY.\r
+\r
+ @param EventHead\r
+ A list of type EFI_RUNTIME_EVENT_ENTRY.\r
+\r
+ @param MemoryDescriptorSize\r
+ Size of a memory descriptor that is return by GetMemoryMap().\r
+\r
+ @param MemoryDescriptorVersion\r
+ Version of a memory descriptor that is return by GetMemoryMap().\r
+\r
+ @param MemoryMapSize \r
+ Size of the memory map in bytes contained in MemoryMapPhysical and MemoryMapVirtual. \r
+\r
+ @param MemoryMapPhysical\r
+ Pointer to a runtime buffer that contains a copy of \r
+ the memory map returned via GetMemoryMap().\r
+\r
+ @param MemoryMapVirtual\r
+ Pointer to MemoryMapPhysical that is updated to virtual mode after SetVirtualAddressMap().\r
+\r
+ @param VirtualMode\r
+ Boolean that is TRUE if SetVirtualAddressMap() has been called.\r
+\r
+ @param AtRuntime\r
+ Boolean that is TRUE if ExitBootServices () has been called.\r
+\r
+**/\r
+struct _EFI_RUNTIME_ARCH_PROTOCOL {\r
+ EFI_LIST_ENTRY ImageHead;\r
+ EFI_LIST_ENTRY EventHead;\r
+ UINTN MemoryDescriptorSize;\r
+ UINT32 MemoryDesciptorVersion;\r
+ UINTN MemoryMapSize;\r
+ EFI_MEMORY_DESCRIPTOR *MemoryMapPhysical;\r
+ EFI_MEMORY_DESCRIPTOR *MemoryMapVirtual;\r
+ BOOLEAN VirtualMode;\r
+ BOOLEAN AtRuntime;\r
+};\r
+\r
+extern EFI_GUID gEfiRuntimeArchProtocolGuid;\r
+\r
+#endif\r