X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=ArmPlatformPkg%2FLibrary%2FArmPlatformGlobalVariableLib%2FDxe%2FDxeArmPlatformGlobalVariableLib.c;fp=ArmPlatformPkg%2FLibrary%2FArmPlatformGlobalVariableLib%2FDxe%2FDxeArmPlatformGlobalVariableLib.c;h=aebc91293502bafae1ee7d8a78c95351578fe736;hp=0000000000000000000000000000000000000000;hb=8fc38a3f50915b6b11b48f830f6c7b091dbb35d8;hpb=5b1928ffd6c03d171a06b89542d25ed01562c1eb diff --git a/ArmPlatformPkg/Library/ArmPlatformGlobalVariableLib/Dxe/DxeArmPlatformGlobalVariableLib.c b/ArmPlatformPkg/Library/ArmPlatformGlobalVariableLib/Dxe/DxeArmPlatformGlobalVariableLib.c new file mode 100644 index 0000000000..aebc912935 --- /dev/null +++ b/ArmPlatformPkg/Library/ArmPlatformGlobalVariableLib/Dxe/DxeArmPlatformGlobalVariableLib.c @@ -0,0 +1,69 @@ +/** @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. +* +**/ + +#include +#include +#include +#include +#include +#include + +#include + +UINTN mGlobalVariableBase = 0; + +RETURN_STATUS +EFIAPI +ArmPlatformGlobalVariableConstructor ( + VOID + ) +{ + ARM_HOB_GLOBAL_VARIABLE *Hob; + + Hob = GetFirstGuidHob (&gArmGlobalVariableGuid); + ASSERT (Hob != NULL); + + mGlobalVariableBase = Hob->GlobalVariableBase; + + return EFI_SUCCESS; +} + +VOID +ArmPlatformGetGlobalVariable ( + IN UINTN VariableOffset, + IN UINTN VariableSize, + OUT VOID* Variable + ) +{ + if (mGlobalVariableBase == 0) { + ArmPlatformGlobalVariableConstructor (); + } + + CopyMem (Variable, (VOID*)(mGlobalVariableBase + VariableOffset), VariableSize); +} + +VOID +ArmPlatformSetGlobalVariable ( + IN UINTN VariableOffset, + IN UINTN VariableSize, + OUT VOID* Variable + ) +{ + if (mGlobalVariableBase == 0) { + ArmPlatformGlobalVariableConstructor (); + } + + CopyMem ((VOID*)(mGlobalVariableBase + VariableOffset), Variable, VariableSize); +} +