From ae82738e71683c903a900e148158e2371d643a56 Mon Sep 17 00:00:00 2001 From: Jiafei Pan Date: Fri, 3 Sep 2021 16:56:46 +0800 Subject: [PATCH] arm/arm64: add 64bit read/write APIs Added sys_read64() and sys_write64() for 64bit operations. Signed-off-by: Jiafei Pan --- include/arch/arm64/sys_io.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/include/arch/arm64/sys_io.h b/include/arch/arm64/sys_io.h index 346af3fabca..192ec6c1e70 100644 --- a/include/arch/arm64/sys_io.h +++ b/include/arch/arm64/sys_io.h @@ -81,6 +81,22 @@ static ALWAYS_INLINE void sys_write32(uint32_t data, mem_addr_t addr) __asm__ volatile("str %w0, [%1]" : : "r" (data), "r" (addr)); } +static ALWAYS_INLINE uint64_t sys_read64(mem_addr_t addr) +{ + uint64_t val; + + __asm__ volatile("ldr %x0, [%1]" : "=r" (val) : "r" (addr)); + + __DMB(); + return val; +} + +static ALWAYS_INLINE void sys_write64(uint64_t data, mem_addr_t addr) +{ + __DMB(); + __asm__ volatile("str %x0, [%1]" : : "r" (data), "r" (addr)); +} + #ifdef __cplusplus } #endif