]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseIoLibIntrinsic/Arm/ArmVirtMmio.S
MdePkg/BaseIoLibIntrinsicArmVirt ARM: avoid double word loads and stores
[mirror_edk2.git] / MdePkg / Library / BaseIoLibIntrinsic / Arm / ArmVirtMmio.S
index 1e91e87fb88700aa643143497e126a4ad027a558..0d802d6928d6da1cae104ad3ab85b9ae5942f10b 100644 (file)
-#
-#  Copyright (c) 2014-2018, Linaro 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.
-#
-#
-
-GCC_ASM_EXPORT(MmioRead8Internal)
-GCC_ASM_EXPORT(MmioWrite8Internal)
-GCC_ASM_EXPORT(MmioRead16Internal)
-GCC_ASM_EXPORT(MmioWrite16Internal)
-GCC_ASM_EXPORT(MmioRead32Internal)
-GCC_ASM_EXPORT(MmioWrite32Internal)
-GCC_ASM_EXPORT(MmioRead64Internal)
-GCC_ASM_EXPORT(MmioWrite64Internal)
-
-//
-//  Reads an 8-bit MMIO register.
-//
-//  Reads the 8-bit MMIO register specified by Address. The 8-bit read value is
-//  returned. This function must guarantee that all MMIO read and write
-//  operations are serialized.
-//
-//  @param  Address The MMIO register to read.
-//
-//  @return The value read.
-//
-ASM_PFX(MmioRead8Internal):
-  ldrb    r0, [r0]
-  dmb
-  bx      lr
-
-//
-//  Writes an 8-bit MMIO register.
-//
-//  Writes the 8-bit MMIO register specified by Address with the value specified
-//  by Value and returns Value. This function must guarantee that all MMIO read
-//  and write operations are serialized.
-//
-//  @param  Address The MMIO register to write.
-//  @param  Value   The value to write to the MMIO register.
-//
-ASM_PFX(MmioWrite8Internal):
-  dmb     st
-  strb    r1, [r0]
-  bx      lr
-
-//
-//  Reads a 16-bit MMIO register.
-//
-//  Reads the 16-bit MMIO register specified by Address. The 16-bit read value is
-//  returned. This function must guarantee that all MMIO read and write
-//  operations are serialized.
-//
-//  @param  Address The MMIO register to read.
-//
-//  @return The value read.
-//
-ASM_PFX(MmioRead16Internal):
-  ldrh    r0, [r0]
-  dmb
-  bx      lr
-
-//
-//  Writes a 16-bit MMIO register.
-//
-//  Writes the 16-bit MMIO register specified by Address with the value specified
-//  by Value and returns Value. This function must guarantee that all MMIO read
-//  and write operations are serialized.
-//
-//  @param  Address The MMIO register to write.
-//  @param  Value   The value to write to the MMIO register.
-//
-ASM_PFX(MmioWrite16Internal):
-  dmb     st
-  strh    r1, [r0]
-  bx      lr
-
-//
-//  Reads a 32-bit MMIO register.
-//
-//  Reads the 32-bit MMIO register specified by Address. The 32-bit read value is
-//  returned. This function must guarantee that all MMIO read and write
-//  operations are serialized.
-//
-//  @param  Address The MMIO register to read.
-//
-//  @return The value read.
-//
-ASM_PFX(MmioRead32Internal):
-  ldr     r0, [r0]
-  dmb
-  bx      lr
-
-//
-//  Writes a 32-bit MMIO register.
-//
-//  Writes the 32-bit MMIO register specified by Address with the value specified
-//  by Value and returns Value. This function must guarantee that all MMIO read
-//  and write operations are serialized.
-//
-//  @param  Address The MMIO register to write.
-//  @param  Value   The value to write to the MMIO register.
-//
-ASM_PFX(MmioWrite32Internal):
-  dmb     st
-  str     r1, [r0]
-  bx      lr
-
-//
-//  Reads a 64-bit MMIO register.
-//
-//  Reads the 64-bit MMIO register specified by Address. The 64-bit read value is
-//  returned. This function must guarantee that all MMIO read and write
-//  operations are serialized.
-//
-//  @param  Address The MMIO register to read.
-//
-//  @return The value read.
-//
-ASM_PFX(MmioRead64Internal):
-  ldrd    r0, r1, [r0]
-  dmb
-  bx      lr
-
-//
-//  Writes a 64-bit MMIO register.
-//
-//  Writes the 64-bit MMIO register specified by Address with the value specified
-//  by Value and returns Value. This function must guarantee that all MMIO read
-//  and write operations are serialized.
-//
-//  @param  Address The MMIO register to write.
-//  @param  Value   The value to write to the MMIO register.
-//
-ASM_PFX(MmioWrite64Internal):
-  dmb     st
-  strd    r2, r3, [r0]
-  bx      lr
+#\r
+#  Copyright (c) 2014-2018, Linaro Limited. All rights reserved.\r
+#\r
+#  This program and the accompanying materials are licensed and made available\r
+#  under the terms and conditions of the BSD License which accompanies this\r
+#  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
+GCC_ASM_EXPORT(MmioRead8Internal)\r
+GCC_ASM_EXPORT(MmioWrite8Internal)\r
+GCC_ASM_EXPORT(MmioRead16Internal)\r
+GCC_ASM_EXPORT(MmioWrite16Internal)\r
+GCC_ASM_EXPORT(MmioRead32Internal)\r
+GCC_ASM_EXPORT(MmioWrite32Internal)\r
+GCC_ASM_EXPORT(MmioRead64Internal)\r
+GCC_ASM_EXPORT(MmioWrite64Internal)\r
+\r
+//\r
+//  Reads an 8-bit MMIO register.\r
+//\r
+//  Reads the 8-bit MMIO register specified by Address. The 8-bit read value is\r
+//  returned. This function must guarantee that all MMIO read and write\r
+//  operations are serialized.\r
+//\r
+//  @param  Address The MMIO register to read.\r
+//\r
+//  @return The value read.\r
+//\r
+ASM_PFX(MmioRead8Internal):\r
+  ldrb    r0, [r0]\r
+  dmb\r
+  bx      lr\r
+\r
+//\r
+//  Writes an 8-bit MMIO register.\r
+//\r
+//  Writes the 8-bit MMIO register specified by Address with the value specified\r
+//  by Value and returns Value. This function must guarantee that all MMIO read\r
+//  and write operations are serialized.\r
+//\r
+//  @param  Address The MMIO register to write.\r
+//  @param  Value   The value to write to the MMIO register.\r
+//\r
+ASM_PFX(MmioWrite8Internal):\r
+  dmb     st\r
+  strb    r1, [r0]\r
+  bx      lr\r
+\r
+//\r
+//  Reads a 16-bit MMIO register.\r
+//\r
+//  Reads the 16-bit MMIO register specified by Address. The 16-bit read value is\r
+//  returned. This function must guarantee that all MMIO read and write\r
+//  operations are serialized.\r
+//\r
+//  @param  Address The MMIO register to read.\r
+//\r
+//  @return The value read.\r
+//\r
+ASM_PFX(MmioRead16Internal):\r
+  ldrh    r0, [r0]\r
+  dmb\r
+  bx      lr\r
+\r
+//\r
+//  Writes a 16-bit MMIO register.\r
+//\r
+//  Writes the 16-bit MMIO register specified by Address with the value specified\r
+//  by Value and returns Value. This function must guarantee that all MMIO read\r
+//  and write operations are serialized.\r
+//\r
+//  @param  Address The MMIO register to write.\r
+//  @param  Value   The value to write to the MMIO register.\r
+//\r
+ASM_PFX(MmioWrite16Internal):\r
+  dmb     st\r
+  strh    r1, [r0]\r
+  bx      lr\r
+\r
+//\r
+//  Reads a 32-bit MMIO register.\r
+//\r
+//  Reads the 32-bit MMIO register specified by Address. The 32-bit read value is\r
+//  returned. This function must guarantee that all MMIO read and write\r
+//  operations are serialized.\r
+//\r
+//  @param  Address The MMIO register to read.\r
+//\r
+//  @return The value read.\r
+//\r
+ASM_PFX(MmioRead32Internal):\r
+  ldr     r0, [r0]\r
+  dmb\r
+  bx      lr\r
+\r
+//\r
+//  Writes a 32-bit MMIO register.\r
+//\r
+//  Writes the 32-bit MMIO register specified by Address with the value specified\r
+//  by Value and returns Value. This function must guarantee that all MMIO read\r
+//  and write operations are serialized.\r
+//\r
+//  @param  Address The MMIO register to write.\r
+//  @param  Value   The value to write to the MMIO register.\r
+//\r
+ASM_PFX(MmioWrite32Internal):\r
+  dmb     st\r
+  str     r1, [r0]\r
+  bx      lr\r
+\r
+//\r
+//  Reads a 64-bit MMIO register.\r
+//\r
+//  Reads the 64-bit MMIO register specified by Address. The 64-bit read value is\r
+//  returned. This function must guarantee that all MMIO read and write\r
+//  operations are serialized.\r
+//\r
+//  @param  Address The MMIO register to read.\r
+//\r
+//  @return The value read.\r
+//\r
+ASM_PFX(MmioRead64Internal):\r
+  ldr     r1, [r0, #4]\r
+  ldr     r0, [r0]\r
+  dmb\r
+  bx      lr\r
+\r
+//\r
+//  Writes a 64-bit MMIO register.\r
+//\r
+//  Writes the 64-bit MMIO register specified by Address with the value specified\r
+//  by Value and returns Value. This function must guarantee that all MMIO read\r
+//  and write operations are serialized.\r
+//\r
+//  @param  Address The MMIO register to write.\r
+//  @param  Value   The value to write to the MMIO register.\r
+//\r
+ASM_PFX(MmioWrite64Internal):\r
+  dmb     st\r
+  str     r2, [r0]\r
+  str     r3, [r0, #4]\r
+  bx      lr\r