]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPkg/Library/CompilerIntrinsicsLib/Arm/uread.S
ArmPkg/CompilerIntrinsicsLib: Add uread, uwrite GCC assembly sources
[mirror_edk2.git] / ArmPkg / Library / CompilerIntrinsicsLib / Arm / uread.S
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/uread.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/uread.S
new file mode 100644 (file)
index 0000000..e8a1dba
--- /dev/null
@@ -0,0 +1,54 @@
+#------------------------------------------------------------------------------\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_uread4 (\r
+#  IN VOID   *Pointer\r
+#  );\r
+#\r
+ASM_FUNC(__aeabi_uread4)\r
+    ldrb    r1, [r0]\r
+    ldrb    r2, [r0, #1]\r
+    ldrb    r3, [r0, #2]\r
+    ldrb    r0, [r0, #3]\r
+    orr     r1, r1, r2, lsl #8\r
+    orr     r1, r1, r3, lsl #16\r
+    orr     r0, r1, r0, lsl #24\r
+    bx      lr\r
+\r
+#\r
+#UINT64\r
+#EFIAPI\r
+#__aeabi_uread8 (\r
+#  IN VOID   *Pointer\r
+#  );\r
+#\r
+ASM_FUNC(__aeabi_uread8)\r
+    mov     r3, r0\r
+\r
+    ldrb    r1, [r3]\r
+    ldrb    r2, [r3, #1]\r
+    orr     r1, r1, r2, lsl #8\r
+    ldrb    r2, [r3, #2]\r
+    orr     r1, r1, r2, lsl #16\r
+    ldrb    r0, [r3, #3]\r
+    orr     r0, r1, r0, lsl #24\r
+\r
+    ldrb    r1, [r3, #4]\r
+    ldrb    r2, [r3, #5]\r
+    orr     r1, r1, r2, lsl #8\r
+    ldrb    r2, [r3, #6]\r
+    orr     r1, r1, r2, lsl #16\r
+    ldrb    r2, [r3, #7]\r
+    orr     r1, r1, r2, lsl #24\r
+\r
+    bx      lr\r