diff --git a/arch/x86_64/include/barriers.h b/arch/x86_64/include/barriers.h new file mode 100644 index 00000000000..deb7d984e6b --- /dev/null +++ b/arch/x86_64/include/barriers.h @@ -0,0 +1,31 @@ +/**************************************************************************** + * arch/x86_64/include/barriers.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_X86_64_INCLUDE_BARRIERS_H +#define __ARCH_X86_64_INCLUDE_BARRIERS_H + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#define UP_DSB() __asm__ __volatile__ ("mfence") +#define UP_DMB() __asm__ __volatile__ ("mfence") + +#endif /* __ARCH_X86_64_INCLUDE_BARRIERS_H */ diff --git a/arch/x86_64/include/spinlock.h b/arch/x86_64/include/spinlock.h index 6afb3b2eb34..e7705e820d3 100644 --- a/arch/x86_64/include/spinlock.h +++ b/arch/x86_64/include/spinlock.h @@ -31,6 +31,8 @@ # include #endif /* __ASSEMBLY__ */ +#include + /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ @@ -57,9 +59,6 @@ * */ -#define UP_DSB() __asm__ __volatile__ ("mfence") -#define UP_DMB() __asm__ __volatile__ ("mfence") - /**************************************************************************** * Public Types ****************************************************************************/ diff --git a/arch/x86_64/src/common/x86_64_pgalloc.c b/arch/x86_64/src/common/x86_64_pgalloc.c index d95ae21d740..499be39f88f 100644 --- a/arch/x86_64/src/common/x86_64_pgalloc.c +++ b/arch/x86_64/src/common/x86_64_pgalloc.c @@ -121,7 +121,7 @@ uintptr_t x86_64_get_pgtable(arch_addrenv_t *addrenv, uintptr_t vaddr) /* Flush the data cache, so the changes are committed to memory */ - SP_DMB(); + UP_DMB(); return paddr; } @@ -226,7 +226,7 @@ uintptr_t pgalloc(uintptr_t brkaddr, unsigned int npages) /* Flush the data cache, so the changes are committed to memory */ - SP_DMB(); + UP_DMB(); return brkaddr; }