; ; Copyright (c) 2014-2018, Linaro Limited. All rights reserved. ; ; SPDX-License-Identifier: BSD-2-Clause-Patent ; AREA IoLibMmio, CODE, READONLY EXPORT MmioRead8Internal EXPORT MmioWrite8Internal EXPORT MmioRead16Internal EXPORT MmioWrite16Internal EXPORT MmioRead32Internal EXPORT MmioWrite32Internal EXPORT MmioRead64Internal 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. ; MmioRead8Internal ldrb w0, [x0] dmb ld ret ; ; 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. ; MmioWrite8Internal dmb st strb w1, [x0] ret ; ; 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. ; MmioRead16Internal ldrh w0, [x0] dmb ld ret ; ; 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. ; MmioWrite16Internal dmb st strh w1, [x0] ret ; ; 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. ; MmioRead32Internal ldr w0, [x0] dmb ld ret ; ; 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. ; MmioWrite32Internal dmb st str w1, [x0] ret ; ; 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. ; MmioRead64Internal ldr x0, [x0] dmb ld ret ; ; 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. ; MmioWrite64Internal dmb st str x1, [x0] ret END