diff options
author | oliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524> | 2011-09-22 23:11:03 +0000 |
---|---|---|
committer | oliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524> | 2011-09-22 23:11:03 +0000 |
commit | 8fc38a3f50915b6b11b48f830f6c7b091dbb35d8 (patch) | |
tree | 459a4a3c480686413b588183f04cc312a6bbd9d0 /ArmPlatformPkg/Include | |
parent | 5b1928ffd6c03d171a06b89542d25ed01562c1eb (diff) | |
download | edk2-platforms-8fc38a3f50915b6b11b48f830f6c7b091dbb35d8.tar.xz |
ArmPlatformPkg: Introduce ArmPlatformGlobalVariableLib
This library hides where the 'XIP' Global Variable are located in the memory.
It is expected the Sec/PrePi modules define the Global Variable area through
the GlobalVariable HOB.
The ArmPlatformGlobalVariableLib library allows access to global variables by
their offsets in this region.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12420 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'ArmPlatformPkg/Include')
-rw-r--r-- | ArmPlatformPkg/Include/Guid/ArmGlobalVariableHob.h | 48 | ||||
-rw-r--r-- | ArmPlatformPkg/Include/Library/ArmPlatformGlobalVariableLib.h | 33 | ||||
-rw-r--r-- | ArmPlatformPkg/Include/Ppi/ArmGlobalVariable.h | 55 |
3 files changed, 136 insertions, 0 deletions
diff --git a/ArmPlatformPkg/Include/Guid/ArmGlobalVariableHob.h b/ArmPlatformPkg/Include/Guid/ArmGlobalVariableHob.h new file mode 100644 index 0000000000..7414b10050 --- /dev/null +++ b/ArmPlatformPkg/Include/Guid/ArmGlobalVariableHob.h @@ -0,0 +1,48 @@ +/** @file +* +* Copyright (c) 2011, ARM Limited. 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 __ARM_GLOBAL_VARIABLE_GUID_H__ +#define __ARM_GLOBAL_VARIABLE_GUID_H__ + +#define ARM_HOB_GLOBAL_VARIABLE_GUID \ + { 0xc3253c90, 0xa24f, 0x4599, { 0xa6, 0x64, 0x1f, 0x88, 0x13, 0x77, 0x8f, 0xc9} }; + +extern EFI_GUID gArmGlobalVariableGuid; + +/// +/// Describes all memory ranges used during the HOB producer +/// phase that exist outside the HOB list. This HOB type +/// describes how memory is used, not the physical attributes of memory. +/// +typedef struct { + /// + /// The Guid HOB header. Header.HobType = EFI_HOB_TYPE_GUID_EXTENSION + /// and Header.Name = gArmGlobalVariableGuid + /// + EFI_HOB_GUID_TYPE Header; + + /// + /// The base address of memory allocated by this HOB. Type + /// EFI_PHYSICAL_ADDRESS is defined in AllocatePages() in the UEFI 2.0 + /// specification. + /// + EFI_PHYSICAL_ADDRESS GlobalVariableBase; + + /// + /// The length in bytes of memory allocated by this HOB. + /// + UINT32 GlobalVariableSize; +} ARM_HOB_GLOBAL_VARIABLE; + +#endif diff --git a/ArmPlatformPkg/Include/Library/ArmPlatformGlobalVariableLib.h b/ArmPlatformPkg/Include/Library/ArmPlatformGlobalVariableLib.h new file mode 100644 index 0000000000..c0264c24bd --- /dev/null +++ b/ArmPlatformPkg/Include/Library/ArmPlatformGlobalVariableLib.h @@ -0,0 +1,33 @@ +/** @file +* +* Copyright (c) 2011, ARM Limited. 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 __ARM_PLATFORM_GLOBAL_VARIABLE_LIB_H_ +#define __ARM_PLATFORM_GLOBAL_VARIABLE_LIB_H_ + +VOID +ArmPlatformGetGlobalVariable ( + IN UINTN VariableOffset, + IN UINTN VariableSize, + OUT VOID* Variable + ); + +VOID +ArmPlatformSetGlobalVariable ( + IN UINTN VariableOffset, + IN UINTN VariableSize, + OUT VOID* Variable + ); + +#endif + diff --git a/ArmPlatformPkg/Include/Ppi/ArmGlobalVariable.h b/ArmPlatformPkg/Include/Ppi/ArmGlobalVariable.h new file mode 100644 index 0000000000..8a29b83465 --- /dev/null +++ b/ArmPlatformPkg/Include/Ppi/ArmGlobalVariable.h @@ -0,0 +1,55 @@ +/** @file
+*
+* Copyright (c) 2011, ARM Limited. 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 __ARM_GLOBAL_VARIABLE_H__
+#define __ARM_GLOBAL_VARIABLE_H__
+
+#define ARM_GLOBAL_VARIABLE_PPI_GUID \
+ { 0xab1c1816, 0xd542, 0x4e6f, {0x9b, 0x1e, 0x8e, 0xcd, 0x92, 0x53, 0xe2, 0xe7} }
+
+
+/**
+ This service of the EFI_PEI_TEMPORARY_RAM_SUPPORT_PPI that migrates temporary RAM into
+ permanent memory.
+
+ @param PeiServices Pointer to the PEI Services Table.
+ @param TemporaryMemoryBase Source Address in temporary memory from which the SEC or PEIM will copy the
+ Temporary RAM contents.
+ @param PermanentMemoryBase Destination Address in permanent memory into which the SEC or PEIM will copy the
+ Temporary RAM contents.
+ @param CopySize Amount of memory to migrate from temporary to permanent memory.
+
+ @retval EFI_SUCCESS The data was successfully returned.
+ @retval EFI_INVALID_PARAMETER PermanentMemoryBase + CopySize > TemporaryMemoryBase when
+ TemporaryMemoryBase > PermanentMemoryBase.
+
+**/
+typedef
+EFI_STATUS
+(EFIAPI * ARM_GLOBAL_VARIABLE_GET_MEMORY) (
+ OUT EFI_PHYSICAL_ADDRESS *GlobalVariableBase
+);
+
+///
+/// This service abstracts the ability to migrate contents of the platform early memory store.
+/// Note: The name EFI_PEI_TEMPORARY_RAM_SUPPORT_PPI is different from the current PI 1.2 spec.
+/// This PPI was optional.
+///
+typedef struct {
+ ARM_GLOBAL_VARIABLE_GET_MEMORY GetGlobalVariableMemory;
+} ARM_GLOBAL_VARIABLE_PPI;
+
+extern EFI_GUID gArmGlobalVariablePpiGuid;
+
+#endif
|