3 * Copyright (c) 2011, ARM Limited. All rights reserved.
5 * This program and the accompanying materials
6 * are licensed and made available under the terms and conditions of the BSD License
7 * which accompanies this distribution. The full text of the license may be found at
8 * http://opensource.org/licenses/bsd-license.php
10 * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
16 #include <Library/ArmPlatformGlobalVariableLib.h>
17 #include <Library/BaseMemoryLib.h>
18 #include <Library/DebugLib.h>
19 #include <Library/HobLib.h>
20 #include <Library/PcdLib.h>
22 #include <Guid/ArmGlobalVariableHob.h>
24 UINTN mGlobalVariableBase
= 0;
28 ArmPlatformGlobalVariableConstructor (
32 ARM_HOB_GLOBAL_VARIABLE
*Hob
;
34 Hob
= GetFirstGuidHob (&gArmGlobalVariableGuid
);
37 mGlobalVariableBase
= Hob
->GlobalVariableBase
;
43 ArmPlatformGetGlobalVariable (
44 IN UINTN VariableOffset
,
45 IN UINTN VariableSize
,
49 if (mGlobalVariableBase
== 0) {
50 ArmPlatformGlobalVariableConstructor ();
53 CopyMem (Variable
, (VOID
*)(mGlobalVariableBase
+ VariableOffset
), VariableSize
);
57 ArmPlatformSetGlobalVariable (
58 IN UINTN VariableOffset
,
59 IN UINTN VariableSize
,
63 if (mGlobalVariableBase
== 0) {
64 ArmPlatformGlobalVariableConstructor ();
67 CopyMem ((VOID
*)(mGlobalVariableBase
+ VariableOffset
), Variable
, VariableSize
);