diff --git a/repos/dde_linux/lib/import/import-lxip_include.mk b/repos/dde_linux/lib/import/import-lxip_include.mk index 0c06540bf..3794facf9 100644 --- a/repos/dde_linux/lib/import/import-lxip_include.mk +++ b/repos/dde_linux/lib/import/import-lxip_include.mk @@ -21,6 +21,9 @@ ifeq ($(filter-out $(SPECS),arm),) ARCH_SRC_INC_DIR += $(REP_DIR)/src/include/spec/arm_v7 endif # arm_v7 endif # arm +ifeq ($(filter-out $(SPECS),arm_64),) + ARCH_SRC_INC_DIR += $(REP_DIR)/src/include/spec/arm_64 +endif # arm_v7 # # The order of include-search directories is important, we need to look into diff --git a/repos/dde_linux/src/include/spec/arm_64/lx_emul/barrier.h b/repos/dde_linux/src/include/spec/arm_64/lx_emul/barrier.h new file mode 100644 index 000000000..76f0e6d85 --- /dev/null +++ b/repos/dde_linux/src/include/spec/arm_64/lx_emul/barrier.h @@ -0,0 +1,31 @@ +/* + * \brief ARMv8-specific part of the Linux API emulation + * \author Christian Prochaska + * \date 2014-05-28 + */ + +/* + * Copyright (C) 2019 Genode Labs GmbH + * + * This file is distributed under the terms of the GNU General Public License + * version 2. + */ + +/******************* + ** asm/barrier.h ** + *******************/ + +#define mb() asm volatile ("dsb ld": : :"memory") +#define rmb() mb() +#define wmb() asm volatile ("dsb st": : :"memory") + +/* + * This is the "safe" implementation as needed for a configuration + * with bufferable DMA memory and SMP enabled. + */ + +#define smp_mb() asm volatile ("dmb ish": : :"memory") +#define smp_rmb() smp_mb() +#define smp_wmb() asm volatile ("dmb ishst": : :"memory") + +static inline void barrier() { asm volatile ("": : :"memory"); }