aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic/arch
diff options
context:
space:
mode:
Diffstat (limited to 'platform/linux-generic/arch')
-rw-r--r--platform/linux-generic/arch/aarch64/odp_llsc.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/platform/linux-generic/arch/aarch64/odp_llsc.h b/platform/linux-generic/arch/aarch64/odp_llsc.h
index ba7a447d4..498785bd4 100644
--- a/platform/linux-generic/arch/aarch64/odp_llsc.h
+++ b/platform/linux-generic/arch/aarch64/odp_llsc.h
@@ -150,15 +150,15 @@ static inline uint32_t scd(_odp_u128_t *var, _odp_u128_t neu, int mm)
if (mm == __ATOMIC_RELEASE)
__asm__ volatile("stlxp %w0, %1, %2, [%3]"
: "=&r" (ret)
- : "r" (((union i128)neu).i64[0]),
- "r" (((union i128)neu).i64[1]),
+ : "r" (((*(union i128 *)&neu)).i64[0]),
+ "r" (((*(union i128 *)&neu)).i64[1]),
"r" (var)
: "memory");
else if (mm == __ATOMIC_RELAXED)
__asm__ volatile("stxp %w0, %1, %2, [%3]"
: "=&r" (ret)
- : "r" (((union i128)neu).i64[0]),
- "r" (((union i128)neu).i64[1]),
+ : "r" (((*(union i128 *)&neu)).i64[0]),
+ "r" (((*(union i128 *)&neu)).i64[1]),
"r" (var)
: );
else