From 6c14941decb4b032f2c75ae78fbca0c1340d93bb Mon Sep 17 00:00:00 2001 From: Travis Geiselbrecht Date: Fri, 24 May 2024 22:32:33 -0700 Subject: [PATCH] [arch][arm64][mmio] add 'Z' to the mmio write accessor inline asm This allows the compiler to use the xzr register if writing a zero value, instead of uselessly moving 0 into a register first. --- arch/arm64/include/arch/reg.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/arm64/include/arch/reg.h b/arch/arm64/include/arch/reg.h index bb1a76b1b..8ef5b19e7 100644 --- a/arch/arm64/include/arch/reg.h +++ b/arch/arm64/include/arch/reg.h @@ -39,11 +39,11 @@ }) #define _ARCH_MMIO_WRITE8(addr, val) \ - __asm__ volatile("strb %w1, %0" : "=m"(*(addr)) : "r"(val) : "memory") + __asm__ volatile("strb %w1, %0" : "=m"(*(addr)) : "Zr"(val) : "memory") #define _ARCH_MMIO_WRITE16(addr, val) \ - __asm__ volatile("strh %w1, %0" : "=m"(*(addr)): "r"(val) : "memory") + __asm__ volatile("strh %w1, %0" : "=m"(*(addr)): "Zr"(val) : "memory") #define _ARCH_MMIO_WRITE32(addr, val) \ - __asm__ volatile("str %w1, %0" : "=m"(*(addr)) : "r"(val) : "memory") + __asm__ volatile("str %w1, %0" : "=m"(*(addr)) : "Zr"(val) : "memory") #define _ARCH_MMIO_WRITE64(addr, val) \ - __asm__ volatile("str %1, %0" : "=m"(*(addr)) : "r"(val) : "memory") + __asm__ volatile("str %1, %0" : "=m"(*(addr)) : "Zr"(val) : "memory")