Author: andrew
Date: Fri Jan  3 10:03:36 2020
New Revision: 356316
URL: https://svnweb.freebsd.org/changeset/base/356316

Log:
  Add the 8 and 16 bit atomic load/store functions with a barrier on arm64.
  
  Reviewed by:  cem
  MFC after:    2 weeks
  Sponsored by: DARPA, AFRL
  Differential Revision:        https://reviews.freebsd.org/D22966

Modified:
  head/sys/arm64/include/atomic.h

Modified: head/sys/arm64/include/atomic.h
==============================================================================
--- head/sys/arm64/include/atomic.h     Fri Jan  3 04:37:47 2020        
(r356315)
+++ head/sys/arm64/include/atomic.h     Fri Jan  3 10:03:36 2020        
(r356316)
@@ -448,6 +448,34 @@ atomic_swap_64(volatile uint64_t *p, uint64_t val)
        return (ret);
 }
 
+static __inline uint8_t
+atomic_load_acq_8(volatile uint8_t *p)
+{
+       uint8_t ret;
+
+       __asm __volatile(
+           "ldarb      %w0, [%1] \n"
+           : "=&r" (ret)
+           : "r" (p)
+           : "memory");
+
+       return (ret);
+}
+
+static __inline uint16_t
+atomic_load_acq_16(volatile uint16_t *p)
+{
+       uint16_t ret;
+
+       __asm __volatile(
+           "ldarh      %w0, [%1] \n"
+           : "=&r" (ret)
+           : "r" (p)
+           : "memory");
+
+       return (ret);
+}
+
 static __inline uint32_t
 atomic_load_acq_32(volatile uint32_t *p)
 {
@@ -474,6 +502,28 @@ atomic_load_acq_64(volatile uint64_t *p)
            : "memory");
 
        return (ret);
+}
+
+static __inline void
+atomic_store_rel_8(volatile uint8_t *p, uint8_t val)
+{
+
+       __asm __volatile(
+           "stlrb      %w0, [%1] \n"
+           :
+           : "r" (val), "r" (p)
+           : "memory");
+}
+
+static __inline void
+atomic_store_rel_16(volatile uint16_t *p, uint16_t val)
+{
+
+       __asm __volatile(
+           "stlrh      %w0, [%1] \n"
+           :
+           : "r" (val), "r" (p)
+           : "memory");
 }
 
 static __inline void
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to