]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPkg/Library/CompilerIntrinsicsLib/Arm/uwrite.S
ArmPkg/CompilerIntrinsicsLib: Add uread, uwrite GCC assembly sources
[mirror_edk2.git] / ArmPkg / Library / CompilerIntrinsicsLib / Arm / uwrite.S
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/uwrite.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/uwrite.S
new file mode 100644 (file)
index 0000000..9432ac4
--- /dev/null
@@ -0,0 +1,53 @@
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
+#\r
+# SPDX-License-Identifier: BSD-2-Clause-Patent\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+#include <AsmMacroIoLib.h>\r
+\r
+#\r
+#UINT32\r
+#EFIAPI\r
+#__aeabi_uwrite4 (\r
+#  IN UINT32 Data,\r
+#  IN VOID   *Pointer\r
+#  );\r
+#\r
+ASM_FUNC(__aeabi_uwrite4)\r
+    mov     r2, r0, lsr #8\r
+    strb    r0, [r1]\r
+    strb    r2, [r1, #1]\r
+    mov     r2, r0, lsr #16\r
+    strb    r2, [r1, #2]\r
+    mov     r2, r0, lsr #24\r
+    strb    r2, [r1, #3]\r
+    bx      lr\r
+\r
+#\r
+#UINT64\r
+#EFIAPI\r
+#__aeabi_uwrite8 (\r
+#  IN UINT64 Data,\r
+#  IN VOID   *Pointer\r
+#  );\r
+#\r
+ASM_FUNC(__aeabi_uwrite8)\r
+    mov     r3, r0, lsr #8\r
+    strb    r0, [r2]\r
+    strb    r3, [r2, #1]\r
+    mov     r3, r0, lsr #16\r
+    strb    r3, [r2, #2]\r
+    mov     r3, r0, lsr #24\r
+    strb    r3, [r2, #3]\r
+\r
+    mov     r3, r1, lsr #8\r
+    strb    r1, [r2, #4]\r
+    strb    r3, [r2, #5]\r
+    mov     r3, r1, lsr #16\r
+    strb    r3, [r2, #6]\r
+    mov     r3, r1, lsr #24\r
+    strb    r3, [r2, #7]\r
+    bx      lr\r