MCPcopy Create free account
hub / github.com/F-Stack/f-stack / atomic_load_64

Function atomic_load_64

freebsd/arm/include/atomic-v6.h:628–645  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

626}
627
628static __inline uint64_t
629atomic_load_64(volatile uint64_t *p)
630{
631 uint64_t ret;
632
633 /*
634 * The only way to atomically load 64 bits is with LDREXD which puts the
635 * exclusive monitor into the exclusive state, so reset it to open state
636 * with CLREX because we don't actually need to store anything.
637 */
638 __asm __volatile(
639 "ldrexd %Q[ret], %R[ret], [%[ptr]] \n"
640 "clrex \n"
641 : [ret] "=&r" (ret)
642 : [ptr] "r" (p)
643 : "cc", "memory");
644 return (ret);
645}
646
647static __inline uint64_t
648atomic_load_acq_64(volatile uint64_t *p)

Callers 6

atomic_load_acq_64Function · 0.70
counter_u64_read_oneFunction · 0.70
vn_read_from_objFunction · 0.50
uma_zone_get_maxFunction · 0.50
uma_zone_get_curFunction · 0.50

Calls

no outgoing calls

Tested by

no test coverage detected