genode/repos/base/include/spec/arm_64/cpu/memory_barrier.h

35 lines
899 B
C++

/*
* \brief Memory barrier
* \author Stefan Kalkowski
* \date 2019-03-25
*
* The memory barrier prevents memory accesses from being reordered in such a
* way that accesses to the guarded resource get outside the guarded stage. As
* cmpxchg() defines the start of the guarded stage it also represents an
* effective memory barrier.
*/
/*
* Copyright (C) 2019 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU Affero General Public License version 3.
*/
#ifndef _INCLUDE__SPEC__ARM_64__CPU__MEMORY_BARRIER_H_
#define _INCLUDE__SPEC__ARM_64__CPU__MEMORY_BARRIER_H_
namespace Genode {
static inline void memory_barrier()
{
/*
* Be conversative for the time-being and synchronize with all level
*/
asm volatile ("dsb #15" ::: "memory");
}
}
#endif /* _INCLUDE__SPEC__ARM_64__CPU__MEMORY_BARRIER_H_ */