--- /dev/null
+##------------------------------------------------------------------------------\r
+#\r
+# MemoryFence() for AArch64\r
+#\r
+# Copyright (c) 2013, ARM Ltd. All rights reserved.\r
+#\r
+# 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
+##------------------------------------------------------------------------------\r
+\r
+.text\r
+.p2align 2\r
+\r
+GCC_ASM_EXPORT(MemoryFence)\r
+\r
+\r
+#/**\r
+# Used to serialize load and store operations.\r
+#\r
+# All loads and stores that proceed calls to this function are guaranteed to be\r
+# globally visible when this function returns.\r
+#\r
+#**/\r
+#VOID\r
+#EFIAPI\r
+#MemoryFence (\r
+# VOID\r
+# );\r
+#\r
+ASM_PFX(MemoryFence):\r
+ // System wide Data Memory Barrier.\r
+ dmb sy\r
+ ret\r
--- /dev/null
+##------------------------------------------------------------------------------\r
+#\r
+# MemoryFence() for AArch64\r
+#\r
+# Copyright (c) 2013, ARM Ltd. All rights reserved.\r
+#\r
+# 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
+##------------------------------------------------------------------------------\r
+\r
+.text\r
+.p2align 2\r
+\r
+GCC_ASM_EXPORT(MemoryFence)\r
+\r
+\r
+#/**\r
+# Used to serialize load and store operations.\r
+#\r
+# All loads and stores that proceed calls to this function are guaranteed to be\r
+# globally visible when this function returns.\r
+#\r
+#**/\r
+#VOID\r
+#EFIAPI\r
+#MemoryFence (\r
+# VOID\r
+# );\r
+#\r
+ASM_PFX(MemoryFence):\r
+ // System wide Data Memory Barrier.\r
+ dmb\r
+ bx lr\r
--- /dev/null
+;------------------------------------------------------------------------------\r
+;\r
+; MemoryFence() for AArch64\r
+;\r
+; Copyright (c) 2013, ARM Ltd. All rights reserved.\r
+;\r
+; 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
+;------------------------------------------------------------------------------\r
+\r
+ EXPORT MemoryFence\r
+\r
+ AREA MemoryBarriers, CODE, READONLY\r
+\r
+;/**\r
+; Used to serialize load and store operations.\r
+;\r
+; All loads and stores that proceed calls to this function are guaranteed to be\r
+; globally visible when this function returns.\r
+;\r
+;**/\r
+;VOID\r
+;EFIAPI\r
+;MemoryFence (\r
+; VOID\r
+; );\r
+;\r
+MemoryFence FUNCTION\r
+ dmb\r
+ bx lr\r
+ ENDFUNC\r
+\r
+ END\r
Arm/GetInterruptsState.asm | RVCT\r
Arm/CpuPause.asm | RVCT\r
Arm/CpuBreakpoint.asm | RVCT\r
+ Arm/MemoryFence.asm | RVCT\r
\r
Arm/Math64.S | GCC\r
Arm/SwitchStack.S | GCC\r
Arm/GetInterruptsState.S | GCC\r
Arm/SetJumpLongJump.S | GCC\r
Arm/CpuBreakpoint.S | GCC\r
+ Arm/MemoryFence.S | GCC\r
\r
[Sources.AARCH64]\r
Arm/InternalSwitchStack.c\r
Arm/Unaligned.c\r
Math64.c\r
\r
+ AArch64/MemoryFence.S | GCC\r
AArch64/SwitchStack.S | GCC\r
AArch64/EnableInterrupts.S | GCC\r
AArch64/DisableInterrupts.S | GCC\r