arch/arm:use UP_DSB, UP_DMB, UP_ISB as barrier standard API
Signed-off-by: lipengfei28 <lipengfei28@xiaomi.com>
This commit is contained in:
parent
d3e3993682
commit
6949c82310
90 changed files with 493 additions and 584 deletions
|
|
@ -1,5 +1,5 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/armv6-m/barriers.h
|
||||
* arch/arm/include/armv6-m/barriers.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
|
|
@ -20,8 +20,8 @@
|
|||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_ARMV6_M_BARRIERS_H
|
||||
#define __ARCH_ARM_SRC_ARMV6_M_BARRIERS_H
|
||||
#ifndef __ARCH_ARM_INCLUDE_ARMV6_M_BARRIERS_H
|
||||
#define __ARCH_ARM_INCLUDE_ARMV6_M_BARRIERS_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
|
|
@ -37,8 +37,8 @@
|
|||
#define arm_isb() __asm__ __volatile__ ("isb " : : : "memory")
|
||||
#define arm_dmb() __asm__ __volatile__ ("dmb " : : : "memory")
|
||||
|
||||
#define ARM_DSB() arm_dsb()
|
||||
#define ARM_ISB() arm_isb()
|
||||
#define ARM_DMB() arm_dmb()
|
||||
#define UP_DSB() arm_dsb()
|
||||
#define UP_ISB() arm_isb()
|
||||
#define UP_DMB() arm_dmb()
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_ARMV6_M_BARRIERS_H */
|
||||
#endif /* __ARCH_ARM_INCLUDE_ARMV6_M_BARRIERS_H */
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/armv7-a/barriers.h
|
||||
* arch/arm/include/armv7-a/barriers.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
|
|
@ -20,8 +20,8 @@
|
|||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_ARMV7_A_BARRIERS_H
|
||||
#define __ARCH_ARM_SRC_ARMV7_A_BARRIERS_H
|
||||
#ifndef __ARCH_ARM_INCLUDE_ARMV7_A_BARRIERS_H
|
||||
#define __ARCH_ARM_INCLUDE_ARMV7_A_BARRIERS_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
|
|
@ -39,10 +39,10 @@
|
|||
#define arm_nop() __asm__ __volatile__ ("nop\n")
|
||||
#define arm_sev() __asm__ __volatile__ ("sev\n")
|
||||
|
||||
#define ARM_DSB() arm_dsb(15)
|
||||
#define ARM_DMB() arm_dmb(15)
|
||||
#define ARM_ISB() arm_isb()
|
||||
#define ARM_NOP() arm_nop()
|
||||
#define ARM_SEV() arm_sev()
|
||||
#define UP_DSB() arm_dsb(15)
|
||||
#define UP_DMB() arm_dmb(15)
|
||||
#define UP_ISB() arm_isb()
|
||||
#define UP_NOP() arm_nop()
|
||||
#define UP_SEV() arm_sev()
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_ARMV7_A_BARRIERS_H */
|
||||
#endif /* __ARCH_ARM_INCLUDE_ARMV7_A_BARRIERS_H */
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/armv7-m/barriers.h
|
||||
* arch/arm/include/armv7-m/barriers.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
|
|
@ -20,8 +20,8 @@
|
|||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_ARMV7_M_BARRIERS_H
|
||||
#define __ARCH_ARM_SRC_ARMV7_M_BARRIERS_H
|
||||
#ifndef __ARCH_ARM_INCLUDE_ARMV7_M_BARRIERS_H
|
||||
#define __ARCH_ARM_INCLUDE_ARMV7_M_BARRIERS_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
|
|
@ -37,8 +37,8 @@
|
|||
#define arm_isb() __asm__ __volatile__ ("isb " : : : "memory")
|
||||
#define arm_dmb() __asm__ __volatile__ ("dmb " : : : "memory")
|
||||
|
||||
#define ARM_DSB() arm_dsb()
|
||||
#define ARM_ISB() arm_isb()
|
||||
#define ARM_DMB() arm_dmb()
|
||||
#define UP_DSB() arm_dsb()
|
||||
#define UP_ISB() arm_isb()
|
||||
#define UP_DMB() arm_dmb()
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_ARMV7_M_BARRIERS_H */
|
||||
#endif /* __ARCH_ARM_INCLUDE_ARMV7_M_BARRIERS_H */
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/armv7-r/barriers.h
|
||||
* arch/arm/include/armv7-r/barriers.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
|
|
@ -20,8 +20,8 @@
|
|||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_ARMV7_R_BARRIERS_H
|
||||
#define __ARCH_ARM_SRC_ARMV7_R_BARRIERS_H
|
||||
#ifndef __ARCH_ARM_INCLUDE_ARMV7_R_BARRIERS_H
|
||||
#define __ARCH_ARM_INCLUDE_ARMV7_R_BARRIERS_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
|
|
@ -39,10 +39,10 @@
|
|||
#define arm_nop() __asm__ __volatile__ ("nop\n")
|
||||
#define arm_sev() __asm__ __volatile__ ("sev\n")
|
||||
|
||||
#define ARM_DSB() arm_dsb(15)
|
||||
#define ARM_DMB() arm_dmb(15)
|
||||
#define ARM_ISB() arm_isb()
|
||||
#define ARM_NOP() arm_nop()
|
||||
#define ARM_SEV() arm_sev()
|
||||
#define UP_DSB() arm_dsb(15)
|
||||
#define UP_DMB() arm_dmb(15)
|
||||
#define UP_ISB() arm_isb()
|
||||
#define UP_NOP() arm_nop()
|
||||
#define UP_SEV() arm_sev()
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_ARMV7_R_BARRIERS_H */
|
||||
#endif /* __ARCH_ARM_INCLUDE_ARMV7_R_BARRIERS_H */
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/armv8-m/barriers.h
|
||||
* arch/arm/include/armv8-m/barriers.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
|
|
@ -20,8 +20,8 @@
|
|||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_ARMV8_M_BARRIERS_H
|
||||
#define __ARCH_ARM_SRC_ARMV8_M_BARRIERS_H
|
||||
#ifndef __ARCH_ARM_INCLUDE_ARMV8_M_BARRIERS_H
|
||||
#define __ARCH_ARM_INCLUDE_ARMV8_M_BARRIERS_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
|
|
@ -37,8 +37,8 @@
|
|||
#define arm_dmb() __asm__ __volatile__ ("dmb " : : : "memory")
|
||||
#define arm_dsb(n) __asm__ __volatile__ ("dsb " #n : : : "memory")
|
||||
|
||||
#define ARM_ISB() arm_isb()
|
||||
#define ARM_DMB() arm_dmb()
|
||||
#define ARM_DSB() arm_dsb(15)
|
||||
#define UP_ISB() arm_isb()
|
||||
#define UP_DMB() arm_dmb()
|
||||
#define UP_DSB() arm_dsb(15)
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_ARMV8_M_BARRIERS_H */
|
||||
#endif /* __ARCH_ARM_INCLUDE_ARMV8_M_BARRIERS_H */
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/armv8-r/barriers.h
|
||||
* arch/arm/include/armv8-r/barriers.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
|
|
@ -20,8 +20,8 @@
|
|||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_ARMV8_R_BARRIERS_H
|
||||
#define __ARCH_ARM_SRC_ARMV8_R_BARRIERS_H
|
||||
#ifndef __ARCH_ARM_INCLUDE_ARMV8_R_BARRIERS_H
|
||||
#define __ARCH_ARM_INCLUDE_ARMV8_R_BARRIERS_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
|
|
@ -39,10 +39,10 @@
|
|||
#define arm_nop() __asm__ __volatile__ ("nop\n")
|
||||
#define arm_sev() __asm__ __volatile__ ("sev\n")
|
||||
|
||||
#define ARM_DSB() arm_dsb(15)
|
||||
#define ARM_DMB() arm_dmb(15)
|
||||
#define ARM_ISB() arm_isb()
|
||||
#define ARM_NOP() arm_nop()
|
||||
#define ARM_SEV() arm_sev()
|
||||
#define UP_DSB() arm_dsb(15)
|
||||
#define UP_DMB() arm_dmb(15)
|
||||
#define UP_ISB() arm_isb()
|
||||
#define UP_NOP() arm_nop()
|
||||
#define UP_SEV() arm_sev()
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_ARMV8_R_BARRIERS_H */
|
||||
#endif /* __ARCH_ARM_INCLUDE_ARMV8_R_BARRIERS_H */
|
||||
52
arch/arm/include/barriers.h
Normal file
52
arch/arm/include/barriers.h
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/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_ARM_INCLUDE_BARRIERS_H
|
||||
#define __ARCH_ARM_INCLUDE_BARRIERS_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#if defined(CONFIG_ARCH_ARMV7A)
|
||||
# include <arch/armv7-a/barriers.h>
|
||||
#elif defined(CONFIG_ARCH_ARMV7R)
|
||||
# include <arch/armv7-r/barriers.h>
|
||||
#elif defined(CONFIG_ARCH_ARMV8R)
|
||||
# include <arch/armv8-r/barriers.h>
|
||||
#elif defined(CONFIG_ARCH_ARMV7M)
|
||||
# include <arch/armv7-m/barriers.h>
|
||||
#elif defined(CONFIG_ARCH_ARMV8M)
|
||||
# include <arch/armv8-m/barriers.h>
|
||||
#elif defined(CONFIG_ARCH_ARMV6M)
|
||||
# include <arch/armv6-m/barriers.h>
|
||||
#else
|
||||
# include <arch/arm/barriers.h>
|
||||
#endif
|
||||
|
||||
#define UP_MB() \
|
||||
do \
|
||||
{ \
|
||||
UP_DSB(); \
|
||||
UP_ISB(); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
#endif /* __ARCH_ARM_INCLUDE_BARRIERS_H */
|
||||
|
|
@ -31,6 +31,8 @@
|
|||
# include <stdint.h>
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
#include <arch/barriers.h>
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Prototypes
|
||||
****************************************************************************/
|
||||
|
|
|
|||
|
|
@ -28,9 +28,9 @@
|
|||
#include <nuttx/cache.h>
|
||||
#include <nuttx/irq.h>
|
||||
#include <sys/param.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "cp15_cacheops.h"
|
||||
#include "barriers.h"
|
||||
#include "l2cc.h"
|
||||
|
||||
/****************************************************************************
|
||||
|
|
|
|||
|
|
@ -40,8 +40,8 @@
|
|||
#include <nuttx/irq.h>
|
||||
#include <nuttx/spinlock.h>
|
||||
|
||||
#include <arch/barriers.h>
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
#include "l2cc.h"
|
||||
#include "l2cc_pl310.h"
|
||||
|
||||
|
|
@ -292,8 +292,7 @@ static void l2cc_disable_nolock(void)
|
|||
/* Disable the L2CC-P310 L2 cache by clearing the Control Register (CR) */
|
||||
|
||||
putreg32(0, L2CC_CR);
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -457,8 +456,7 @@ void arm_l2ccinitialize(void)
|
|||
|
||||
l2cc_invalidate_all();
|
||||
putreg32(L2CC_CR_L2CEN, L2CC_CR);
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
|
||||
sinfo("(%d ways) * (%d bytes/way) = %d bytes\n",
|
||||
|
|
@ -533,8 +531,7 @@ void l2cc_enable(void)
|
|||
|
||||
l2cc_invalidate_all_nolock();
|
||||
putreg32(L2CC_CR_L2CEN, L2CC_CR);
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
spin_unlock_irqrestore(&g_l2cc_lock, flags);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,12 +28,12 @@
|
|||
|
||||
#include <stdint.h>
|
||||
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/irq.h>
|
||||
#include <sched/sched.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "cp15_cacheops.h"
|
||||
#include "barriers.h"
|
||||
#include "sctlr.h"
|
||||
#include "scu.h"
|
||||
|
||||
|
|
@ -83,7 +83,7 @@ void arm_enable_smp(int cpu)
|
|||
*/
|
||||
|
||||
cp15_invalidate_dcache_all();
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
/* Invalidate the L2C-310 -- Missing logic. */
|
||||
|
||||
|
|
@ -95,7 +95,7 @@ void arm_enable_smp(int cpu)
|
|||
|
||||
/* Initialize done, kick other cpus which waiting on __start */
|
||||
|
||||
ARM_SEV();
|
||||
UP_SEV();
|
||||
}
|
||||
|
||||
/* Actions for other CPUs */
|
||||
|
|
@ -107,7 +107,7 @@ void arm_enable_smp(int cpu)
|
|||
*/
|
||||
|
||||
cp15_dcache_op_level(0, CP15_CACHE_INVALIDATE);
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
/* Wait for the SCU to be enabled by the primary processor -- should
|
||||
* not be necessary.
|
||||
|
|
|
|||
|
|
@ -29,10 +29,10 @@
|
|||
#include <nuttx/irq.h>
|
||||
#include <nuttx/kmalloc.h>
|
||||
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/irq.h>
|
||||
|
||||
#include "arm_timer.h"
|
||||
#include "barriers.h"
|
||||
#include "gic.h"
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -98,49 +98,49 @@ static const struct oneshot_operations_s g_arm_timer_ops =
|
|||
static inline void arm_timer_set_freq(uint32_t freq)
|
||||
{
|
||||
CP15_SET(CNTFRQ, freq);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
static inline uint64_t arm_timer_get_count(void)
|
||||
{
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
return CP15_GET64(CNTPCT);
|
||||
}
|
||||
|
||||
static inline uint32_t arm_timer_get_ctrl(void)
|
||||
{
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
return CP15_GET(CNTP_CTL);
|
||||
}
|
||||
|
||||
static inline void arm_timer_set_ctrl(uint32_t ctrl)
|
||||
{
|
||||
CP15_SET(CNTP_CTL, ctrl);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
static inline uint32_t arm_timer_get_tval(void)
|
||||
{
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
return CP15_GET(CNTP_TVAL);
|
||||
}
|
||||
|
||||
static inline void arm_timer_set_tval(uint32_t tval)
|
||||
{
|
||||
CP15_SET(CNTP_TVAL, tval);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
static inline uint64_t arm_timer_get_cval(void)
|
||||
{
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
return CP15_GET64(CNTP_CVAL);
|
||||
}
|
||||
|
||||
static inline void arm_timer_set_cval(uint64_t cval)
|
||||
{
|
||||
CP15_SET64(CNTP_CVAL, cval);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
static inline uint64_t nsec_from_count(uint64_t count, uint32_t freq)
|
||||
|
|
@ -288,7 +288,7 @@ static int arm_timer_interrupt(int irq, void *context, void *arg)
|
|||
|
||||
uint32_t arm_timer_get_freq(void)
|
||||
{
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
return CP15_GET(CNTFRQ);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ static void cp15_dcache_op_mva(uintptr_t start, uintptr_t end, int op)
|
|||
|
||||
line = cp15_dcache_linesize();
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
if ((start & (line - 1)) != 0)
|
||||
{
|
||||
|
|
@ -152,7 +152,7 @@ static void cp15_dcache_op_mva(uintptr_t start, uintptr_t end, int op)
|
|||
start += line;
|
||||
}
|
||||
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -181,7 +181,7 @@ void cp15_dcache_op_level(uint32_t level, int op)
|
|||
way_shift = 32 - ilog2(ways);
|
||||
set_shift = ilog2(line);
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
/* A: Log2(ways)
|
||||
* B: L+S
|
||||
|
|
@ -220,7 +220,7 @@ void cp15_dcache_op_level(uint32_t level, int op)
|
|||
}
|
||||
}
|
||||
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
void cp15_invalidate_icache(uintptr_t start, uintptr_t end)
|
||||
|
|
@ -230,7 +230,7 @@ void cp15_invalidate_icache(uintptr_t start, uintptr_t end)
|
|||
line = cp15_icache_linesize();
|
||||
start &= ~(line - 1);
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
while (start < end)
|
||||
{
|
||||
|
|
@ -238,7 +238,7 @@ void cp15_invalidate_icache(uintptr_t start, uintptr_t end)
|
|||
start += line;
|
||||
}
|
||||
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
void cp15_coherent_dcache(uintptr_t start, uintptr_t end)
|
||||
|
|
|
|||
|
|
@ -587,7 +587,7 @@ static inline void cp15_enable_dcache(void)
|
|||
sctlr = CP15_GET(SCTLR);
|
||||
sctlr |= SCTLR_C;
|
||||
CP15_SET(SCTLR, sctlr);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -611,7 +611,7 @@ static inline void cp15_disable_dcache(void)
|
|||
sctlr = CP15_GET(SCTLR);
|
||||
sctlr &= ~SCTLR_C;
|
||||
CP15_SET(SCTLR, sctlr);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -635,7 +635,7 @@ static inline void cp15_enable_icache(void)
|
|||
sctlr = CP15_GET(SCTLR);
|
||||
sctlr |= SCTLR_I;
|
||||
CP15_SET(SCTLR, sctlr);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -659,7 +659,7 @@ static inline void cp15_disable_icache(void)
|
|||
sctlr = CP15_GET(SCTLR);
|
||||
sctlr &= ~SCTLR_I;
|
||||
CP15_SET(SCTLR, sctlr);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -679,7 +679,7 @@ static inline void cp15_disable_icache(void)
|
|||
static inline void cp15_invalidate_icache_inner_sharable(void)
|
||||
{
|
||||
CP15_SET(ICIALLUIS, 0);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -699,7 +699,7 @@ static inline void cp15_invalidate_icache_inner_sharable(void)
|
|||
static inline void cp15_invalidate_btb_inner_sharable(void)
|
||||
{
|
||||
CP15_SET(BPIALLIS, 0);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -720,7 +720,7 @@ static inline void cp15_invalidate_btb_inner_sharable(void)
|
|||
static inline void cp15_invalidate_icache_all(void)
|
||||
{
|
||||
CP15_SET(ICIALLU, 0);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -740,7 +740,7 @@ static inline void cp15_invalidate_icache_all(void)
|
|||
static inline void cp15_invalidate_icache_bymva(unsigned int va)
|
||||
{
|
||||
CP15_SET(ICIMVAU, va);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -760,7 +760,7 @@ static inline void cp15_invalidate_icache_bymva(unsigned int va)
|
|||
static inline void cp15_flush_btb(void)
|
||||
{
|
||||
CP15_SET(BPIALL, 0);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -780,7 +780,7 @@ static inline void cp15_flush_btb(void)
|
|||
static inline void cp15_flush_btb_bymva(unsigned int va)
|
||||
{
|
||||
CP15_SET(BPIMVA, va);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -802,7 +802,7 @@ static inline void cp15_flush_btb_bymva(unsigned int va)
|
|||
static inline void cp15_invalidate_dcacheline_bymva(unsigned int va)
|
||||
{
|
||||
CP15_SET(DCIMVAC, va);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -824,7 +824,7 @@ static inline void cp15_invalidate_dcacheline_bymva(unsigned int va)
|
|||
static inline void cp15_invalidate_dcacheline_bysetway(unsigned int setway)
|
||||
{
|
||||
CP15_SET(DCISW, setway);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -846,7 +846,7 @@ static inline void cp15_invalidate_dcacheline_bysetway(unsigned int setway)
|
|||
static inline void cp15_clean_dcache_bymva(unsigned int va)
|
||||
{
|
||||
CP15_SET(DCCMVAC, va);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -866,7 +866,7 @@ static inline void cp15_clean_dcache_bymva(unsigned int va)
|
|||
static inline void cp15_clean_dcache_bysetway(unsigned int setway)
|
||||
{
|
||||
CP15_SET(DCCSW, setway);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -886,7 +886,7 @@ static inline void cp15_clean_dcache_bysetway(unsigned int setway)
|
|||
static inline void cp15_clean_ucache_bymva(unsigned int va)
|
||||
{
|
||||
CP15_SET(DCCMVAU, va);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -906,7 +906,7 @@ static inline void cp15_clean_ucache_bymva(unsigned int va)
|
|||
static inline void cp15_cleaninvalidate_dcacheline_bymva(unsigned int va)
|
||||
{
|
||||
CP15_SET(DCCIMVAC, va);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -926,7 +926,7 @@ static inline void cp15_cleaninvalidate_dcacheline_bymva(unsigned int va)
|
|||
static inline void cp15_cleaninvalidate_dcacheline(unsigned int setway)
|
||||
{
|
||||
CP15_SET(DCCISW, setway);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
|
|
|||
|
|
@ -37,12 +37,12 @@
|
|||
|
||||
#include <nuttx/config.h>
|
||||
#include <sys/types.h>
|
||||
#include <arch/barriers.h>
|
||||
#include "sctlr.h"
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
# include <stdint.h>
|
||||
# include "chip.h"
|
||||
# include "barriers.h"
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -1250,7 +1250,7 @@ static inline void cp15_disable_mmu(void)
|
|||
|
||||
static inline void cp15_invalidate_tlbs(void)
|
||||
{
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
#ifdef CONFIG_ARM_HAVE_MPCORE
|
||||
CP15_SET(TLBIALLIS, 0);
|
||||
CP15_SET(BPIALLIS, 0);
|
||||
|
|
@ -1258,8 +1258,7 @@ static inline void cp15_invalidate_tlbs(void)
|
|||
CP15_SET2(TLBIALL, c7, 0);
|
||||
CP15_SET(BPIALL, 0);
|
||||
#endif
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -1275,7 +1274,7 @@ static inline void cp15_invalidate_tlbs(void)
|
|||
|
||||
static inline void cp15_invalidate_tlb_bymva(uint32_t vaddr)
|
||||
{
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
#ifdef CONFIG_ARM_HAVE_MPCORE
|
||||
CP15_SET(TLBIMVAAIS, vaddr);
|
||||
CP15_SET(BPIALLIS, 0);
|
||||
|
|
@ -1283,8 +1282,7 @@ static inline void cp15_invalidate_tlb_bymva(uint32_t vaddr)
|
|||
CP15_SET2(TLBIMVA, c7, vaddr);
|
||||
CP15_SET(BPIALL, 0);
|
||||
#endif
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -1301,14 +1299,14 @@ static inline void cp15_invalidate_tlb_bymva(uint32_t vaddr)
|
|||
static inline void cp15_wrdacr(unsigned int dacr)
|
||||
{
|
||||
CP15_SET(DACR, dacr);
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -1329,14 +1327,14 @@ static inline void cp15_wrdacr(unsigned int dacr)
|
|||
static inline void cp15_wrttb(unsigned int ttb)
|
||||
{
|
||||
CP15_SET(TTBR0, ttb);
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
CP15_SET(TTBCR, 0);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -36,10 +36,9 @@
|
|||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/irq.h>
|
||||
|
||||
#include "barriers.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
|
@ -460,14 +459,14 @@ static inline unsigned int cp15_rdsctlr(void)
|
|||
static inline void cp15_wrsctlr(unsigned int sctlr)
|
||||
{
|
||||
CP15_SET(SCTLR, sctlr);
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
}
|
||||
|
||||
/* Read/write the vector base address register (VBAR) */
|
||||
|
|
|
|||
|
|
@ -42,9 +42,9 @@
|
|||
|
||||
#include <nuttx/config.h>
|
||||
#include <nuttx/cache.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
#include "nvic.h"
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -268,8 +268,7 @@ void up_enable_icache(void)
|
|||
{
|
||||
uint32_t regval;
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
|
||||
/* Invalidate the entire I-Cache */
|
||||
|
||||
|
|
@ -281,8 +280,7 @@ void up_enable_icache(void)
|
|||
regval |= NVIC_CFGCON_IC;
|
||||
putreg32(regval, NVIC_CFGCON);
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -305,8 +303,7 @@ void up_disable_icache(void)
|
|||
{
|
||||
uint32_t regval;
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
|
||||
/* Disable the I-Cache */
|
||||
|
||||
|
|
@ -318,8 +315,7 @@ void up_disable_icache(void)
|
|||
|
||||
putreg32(0, NVIC_ICIALLU);
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -350,7 +346,7 @@ void up_invalidate_icache(uintptr_t start, uintptr_t end)
|
|||
* (ssize - 1) = 0x007f : Mask of the set field
|
||||
*/
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
if ((start & (ssize - 1)) != 0)
|
||||
{
|
||||
|
|
@ -380,8 +376,7 @@ void up_invalidate_icache(uintptr_t start, uintptr_t end)
|
|||
putreg32(start, NVIC_ICIMVAU);
|
||||
}
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
#endif /* CONFIG_ARMV7M_ICACHE */
|
||||
|
||||
|
|
@ -402,15 +397,13 @@ void up_invalidate_icache(uintptr_t start, uintptr_t end)
|
|||
#ifdef CONFIG_ARMV7M_ICACHE
|
||||
void up_invalidate_icache_all(void)
|
||||
{
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
|
||||
/* Invalidate the entire I-Cache */
|
||||
|
||||
putreg32(0, NVIC_ICIALLU);
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -523,7 +516,7 @@ void up_enable_dcache(void)
|
|||
|
||||
/* Invalidate the entire D-Cache */
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
do
|
||||
{
|
||||
int32_t tmpways = ways;
|
||||
|
|
@ -537,7 +530,7 @@ void up_enable_dcache(void)
|
|||
}
|
||||
while (sets--);
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
#ifdef CONFIG_ARMV7M_DCACHE_WRITETHROUGH
|
||||
ccr = getreg32(NVIC_CACR);
|
||||
|
|
@ -551,8 +544,7 @@ void up_enable_dcache(void)
|
|||
ccr |= NVIC_CFGCON_DC;
|
||||
putreg32(ccr, NVIC_CFGCON);
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
#endif /* CONFIG_ARMV7M_DCACHE */
|
||||
|
||||
|
|
@ -601,7 +593,7 @@ void up_disable_dcache(void)
|
|||
|
||||
wshift = arm_clz(ways) & 0x1f;
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
/* Disable the D-Cache */
|
||||
|
||||
|
|
@ -624,8 +616,7 @@ void up_disable_dcache(void)
|
|||
}
|
||||
while (sets--);
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
#endif /* CONFIG_ARMV7M_DCACHE */
|
||||
|
||||
|
|
@ -665,7 +656,7 @@ void up_invalidate_dcache(uintptr_t start, uintptr_t end)
|
|||
* (ssize - 1) = 0x007f : Mask of the set field
|
||||
*/
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
if ((start & (ssize - 1)) != 0)
|
||||
{
|
||||
|
|
@ -695,8 +686,7 @@ void up_invalidate_dcache(uintptr_t start, uintptr_t end)
|
|||
putreg32(start, NVIC_DCCIMVAC);
|
||||
}
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
#endif /* CONFIG_ARMV7M_DCACHE */
|
||||
|
||||
|
|
@ -744,7 +734,7 @@ void up_invalidate_dcache_all(void)
|
|||
|
||||
wshift = arm_clz(ways) & 0x1f;
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
/* Invalidate the entire D-Cache */
|
||||
|
||||
|
|
@ -761,8 +751,7 @@ void up_invalidate_dcache_all(void)
|
|||
}
|
||||
while (sets--);
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
#endif /* CONFIG_ARMV7M_DCACHE */
|
||||
|
||||
|
|
@ -819,7 +808,7 @@ void up_clean_dcache(uintptr_t start, uintptr_t end)
|
|||
#endif
|
||||
|
||||
start &= ~(ssize - 1);
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
do
|
||||
{
|
||||
|
|
@ -839,8 +828,7 @@ void up_clean_dcache(uintptr_t start, uintptr_t end)
|
|||
while (start < end);
|
||||
#endif /* !CONFIG_ARMV7M_DCACHE_WRITETHROUGH */
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
#endif /* CONFIG_ARMV7M_DCACHE */
|
||||
|
||||
|
|
@ -898,7 +886,7 @@ void up_clean_dcache_all(void)
|
|||
|
||||
wshift = arm_clz(ways) & 0x1f;
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
/* Clean the entire D-Cache */
|
||||
|
||||
|
|
@ -916,8 +904,7 @@ void up_clean_dcache_all(void)
|
|||
while (sets--);
|
||||
#endif /* !CONFIG_ARMV7M_DCACHE_WRITETHROUGH */
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
#endif /* CONFIG_ARMV7M_DCACHE */
|
||||
|
||||
|
|
@ -974,7 +961,7 @@ void up_flush_dcache(uintptr_t start, uintptr_t end)
|
|||
#endif
|
||||
|
||||
start &= ~(ssize - 1);
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
do
|
||||
{
|
||||
|
|
@ -993,8 +980,7 @@ void up_flush_dcache(uintptr_t start, uintptr_t end)
|
|||
}
|
||||
while (start < end);
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
#else
|
||||
up_invalidate_dcache(start, end);
|
||||
#endif /* !CONFIG_ARMV7M_DCACHE_WRITETHROUGH */
|
||||
|
|
@ -1054,7 +1040,7 @@ void up_flush_dcache_all(void)
|
|||
|
||||
wshift = arm_clz(ways) & 0x1f;
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
/* Clean and invalidate the entire D-Cache */
|
||||
|
||||
|
|
@ -1071,8 +1057,7 @@ void up_flush_dcache_all(void)
|
|||
}
|
||||
while (sets--);
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
#else
|
||||
up_invalidate_dcache_all();
|
||||
#endif /* !CONFIG_ARMV7M_DCACHE_WRITETHROUGH */
|
||||
|
|
|
|||
|
|
@ -30,9 +30,10 @@
|
|||
#include <assert.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "mpu.h"
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
|
|
@ -226,8 +227,7 @@ static void mpu_reset_internal(void)
|
|||
|
||||
putreg32(0, MPU_CTRL);
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -284,8 +284,7 @@ void mpu_freeregion(unsigned int region)
|
|||
putreg32(0, MPU_RASR);
|
||||
putreg32(0, MPU_RBAR);
|
||||
g_mpu_region &= ~(1 << region);
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -450,8 +449,7 @@ void mpu_control(bool enable, bool hfnmiena, bool privdefena)
|
|||
|
||||
/* Ensure MPU setting take effects */
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -524,8 +522,7 @@ void mpu_modify_region(unsigned int region, uintptr_t base, size_t size,
|
|||
|
||||
/* Ensure MPU setting take effects */
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
|
|||
|
|
@ -28,9 +28,9 @@
|
|||
#include <nuttx/cache.h>
|
||||
#include <nuttx/irq.h>
|
||||
#include <sys/param.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "cp15_cacheops.h"
|
||||
#include "barriers.h"
|
||||
#include "l2cc.h"
|
||||
|
||||
/****************************************************************************
|
||||
|
|
|
|||
|
|
@ -39,9 +39,9 @@
|
|||
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/spinlock.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
#include "l2cc.h"
|
||||
#include "l2cc_pl310.h"
|
||||
|
||||
|
|
@ -292,8 +292,7 @@ static void l2cc_disable_nolock(void)
|
|||
/* Disable the L2CC-P310 L2 cache by clearing the Control Register (CR) */
|
||||
|
||||
putreg32(0, L2CC_CR);
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -457,8 +456,7 @@ void arm_l2ccinitialize(void)
|
|||
|
||||
l2cc_invalidate_all();
|
||||
putreg32(L2CC_CR_L2CEN, L2CC_CR);
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
|
||||
sinfo("(%d ways) * (%d bytes/way) = %d bytes\n",
|
||||
|
|
@ -533,8 +531,7 @@ void l2cc_enable(void)
|
|||
|
||||
l2cc_invalidate_all_nolock();
|
||||
putreg32(L2CC_CR_L2CEN, L2CC_CR);
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
spin_unlock_irqrestore(&g_l2cc_lock, flags);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -281,8 +281,7 @@ void mpu_freeregion(unsigned int region)
|
|||
mpu_set_dracr(0);
|
||||
mpu_set_drsr(0);
|
||||
g_mpu_region &= ~(1 << region);
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
|
|||
|
|
@ -28,12 +28,12 @@
|
|||
|
||||
#include <stdint.h>
|
||||
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/irq.h>
|
||||
#include <sched/sched.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "cp15_cacheops.h"
|
||||
#include "barriers.h"
|
||||
#include "sctlr.h"
|
||||
#include "scu.h"
|
||||
|
||||
|
|
@ -85,7 +85,7 @@ void arm_enable_smp(int cpu)
|
|||
*/
|
||||
|
||||
cp15_invalidate_dcache_all();
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
/* Invalidate the L2C-310 -- Missing logic. */
|
||||
|
||||
|
|
@ -97,7 +97,7 @@ void arm_enable_smp(int cpu)
|
|||
|
||||
/* Initialize done, kick other cpus which waiting on __start */
|
||||
|
||||
ARM_SEV();
|
||||
UP_SEV();
|
||||
}
|
||||
|
||||
/* Actions for other CPUs */
|
||||
|
|
@ -109,7 +109,7 @@ void arm_enable_smp(int cpu)
|
|||
*/
|
||||
|
||||
cp15_dcache_op_level(0, CP15_CACHE_INVALIDATE);
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
/* Wait for the SCU to be enabled by the primary processor -- should
|
||||
* not be necessary.
|
||||
|
|
|
|||
|
|
@ -28,9 +28,9 @@
|
|||
#include <nuttx/arch.h>
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/kmalloc.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "arm_timer.h"
|
||||
#include "barriers.h"
|
||||
#include "gic.h"
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -96,49 +96,49 @@ static const struct oneshot_operations_s g_arm_timer_ops =
|
|||
static inline void arm_timer_set_freq(uint32_t freq)
|
||||
{
|
||||
CP15_SET(CNTFRQ, freq);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
static inline uint64_t arm_timer_get_count(void)
|
||||
{
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
return CP15_GET64(CNTPCT);
|
||||
}
|
||||
|
||||
static inline uint32_t arm_timer_get_ctrl(void)
|
||||
{
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
return CP15_GET(CNTP_CTL);
|
||||
}
|
||||
|
||||
static inline void arm_timer_set_ctrl(uint32_t ctrl)
|
||||
{
|
||||
CP15_SET(CNTP_CTL, ctrl);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
static inline uint32_t arm_timer_get_tval(void)
|
||||
{
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
return CP15_GET(CNTP_TVAL);
|
||||
}
|
||||
|
||||
static inline void arm_timer_set_tval(uint32_t tval)
|
||||
{
|
||||
CP15_SET(CNTP_TVAL, tval);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
static inline uint64_t arm_timer_get_cval(void)
|
||||
{
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
return CP15_GET64(CNTP_CVAL);
|
||||
}
|
||||
|
||||
static inline void arm_timer_set_cval(uint64_t cval)
|
||||
{
|
||||
CP15_SET64(CNTP_CVAL, cval);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
static inline uint64_t nsec_from_count(uint64_t count, uint32_t freq)
|
||||
|
|
@ -286,7 +286,7 @@ static int arm_timer_interrupt(int irq, void *context, void *arg)
|
|||
|
||||
uint32_t arm_timer_get_freq(void)
|
||||
{
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
return CP15_GET(CNTFRQ);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ static void cp15_dcache_op_mva(uintptr_t start, uintptr_t end, int op)
|
|||
|
||||
line = cp15_dcache_linesize();
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
if ((start & (line - 1)) != 0)
|
||||
{
|
||||
|
|
@ -152,7 +152,7 @@ static void cp15_dcache_op_mva(uintptr_t start, uintptr_t end, int op)
|
|||
start += line;
|
||||
}
|
||||
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -181,7 +181,7 @@ void cp15_dcache_op_level(uint32_t level, int op)
|
|||
way_shift = 32 - ilog2(ways);
|
||||
set_shift = ilog2(line);
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
/* A: Log2(ways)
|
||||
* B: L+S
|
||||
|
|
@ -220,7 +220,7 @@ void cp15_dcache_op_level(uint32_t level, int op)
|
|||
}
|
||||
}
|
||||
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
void cp15_invalidate_icache(uintptr_t start, uintptr_t end)
|
||||
|
|
@ -230,7 +230,7 @@ void cp15_invalidate_icache(uintptr_t start, uintptr_t end)
|
|||
line = cp15_icache_linesize();
|
||||
start &= ~(line - 1);
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
while (start < end)
|
||||
{
|
||||
|
|
@ -238,7 +238,7 @@ void cp15_invalidate_icache(uintptr_t start, uintptr_t end)
|
|||
start += line;
|
||||
}
|
||||
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
void cp15_coherent_dcache(uintptr_t start, uintptr_t end)
|
||||
|
|
|
|||
|
|
@ -594,7 +594,7 @@ static inline void cp15_enable_dcache(void)
|
|||
sctlr = CP15_GET(SCTLR);
|
||||
sctlr |= SCTLR_C;
|
||||
CP15_SET(SCTLR, sctlr);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -618,7 +618,7 @@ static inline void cp15_disable_dcache(void)
|
|||
sctlr = CP15_GET(SCTLR);
|
||||
sctlr &= ~SCTLR_C;
|
||||
CP15_SET(SCTLR, sctlr);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -642,7 +642,7 @@ static inline void cp15_enable_icache(void)
|
|||
sctlr = CP15_GET(SCTLR);
|
||||
sctlr |= SCTLR_I;
|
||||
CP15_SET(SCTLR, sctlr);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -666,7 +666,7 @@ static inline void cp15_disable_icache(void)
|
|||
sctlr = CP15_GET(SCTLR);
|
||||
sctlr &= ~SCTLR_I;
|
||||
CP15_SET(SCTLR, sctlr);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -686,7 +686,7 @@ static inline void cp15_disable_icache(void)
|
|||
static inline void cp15_invalidate_icache_inner_sharable(void)
|
||||
{
|
||||
CP15_SET(ICIALLUIS, 0);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -706,7 +706,7 @@ static inline void cp15_invalidate_icache_inner_sharable(void)
|
|||
static inline void cp15_invalidate_btb_inner_sharable(void)
|
||||
{
|
||||
CP15_SET(BPIALLIS, 0);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -727,7 +727,7 @@ static inline void cp15_invalidate_btb_inner_sharable(void)
|
|||
static inline void cp15_invalidate_icache_all(void)
|
||||
{
|
||||
CP15_SET(ICIALLU, 0);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -747,7 +747,7 @@ static inline void cp15_invalidate_icache_all(void)
|
|||
static inline void cp15_invalidate_icache_bymva(unsigned int va)
|
||||
{
|
||||
CP15_SET(ICIMVAU, va);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -767,7 +767,7 @@ static inline void cp15_invalidate_icache_bymva(unsigned int va)
|
|||
static inline void cp15_flush_btb(void)
|
||||
{
|
||||
CP15_SET(BPIALL, 0);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -787,7 +787,7 @@ static inline void cp15_flush_btb(void)
|
|||
static inline void cp15_flush_btb_bymva(unsigned int va)
|
||||
{
|
||||
CP15_SET(BPIMVA, va);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -809,7 +809,7 @@ static inline void cp15_flush_btb_bymva(unsigned int va)
|
|||
static inline void cp15_invalidate_dcacheline_bymva(unsigned int va)
|
||||
{
|
||||
CP15_SET(DCIMVAC, va);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -831,7 +831,7 @@ static inline void cp15_invalidate_dcacheline_bymva(unsigned int va)
|
|||
static inline void cp15_invalidate_dcacheline_bysetway(unsigned int setway)
|
||||
{
|
||||
CP15_SET(DCISW, setway);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -853,7 +853,7 @@ static inline void cp15_invalidate_dcacheline_bysetway(unsigned int setway)
|
|||
static inline void cp15_clean_dcache_bymva(unsigned int va)
|
||||
{
|
||||
CP15_SET(DCCMVAC, va);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -873,7 +873,7 @@ static inline void cp15_clean_dcache_bymva(unsigned int va)
|
|||
static inline void cp15_clean_dcache_bysetway(unsigned int setway)
|
||||
{
|
||||
CP15_SET(DCCSW, setway);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -893,7 +893,7 @@ static inline void cp15_clean_dcache_bysetway(unsigned int setway)
|
|||
static inline void cp15_clean_ucache_bymva(unsigned int va)
|
||||
{
|
||||
CP15_SET(DCCMVAU, va);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -913,7 +913,7 @@ static inline void cp15_clean_ucache_bymva(unsigned int va)
|
|||
static inline void cp15_cleaninvalidate_dcacheline_bymva(unsigned int va)
|
||||
{
|
||||
CP15_SET(DCCIMVAC, va);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -933,7 +933,7 @@ static inline void cp15_cleaninvalidate_dcacheline_bymva(unsigned int va)
|
|||
static inline void cp15_cleaninvalidate_dcacheline(unsigned int setway)
|
||||
{
|
||||
CP15_SET(DCCISW, setway);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
|
|
|||
|
|
@ -34,10 +34,9 @@
|
|||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/irq.h>
|
||||
|
||||
#include "barriers.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
|
@ -524,14 +523,14 @@ static inline unsigned int cp15_rdsctlr(void)
|
|||
static inline void cp15_wrsctlr(unsigned int sctlr)
|
||||
{
|
||||
CP15_SET(SCTLR, sctlr);
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
}
|
||||
|
||||
/* Read/write the vector base address register (VBAR) */
|
||||
|
|
|
|||
|
|
@ -42,9 +42,9 @@
|
|||
|
||||
#include <nuttx/config.h>
|
||||
#include <nuttx/cache.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
#include "nvic.h"
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -268,8 +268,7 @@ void up_enable_icache(void)
|
|||
{
|
||||
uint32_t regval;
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
|
||||
/* Invalidate the entire I-Cache */
|
||||
|
||||
|
|
@ -281,8 +280,7 @@ void up_enable_icache(void)
|
|||
regval |= NVIC_CFGCON_IC;
|
||||
putreg32(regval, NVIC_CFGCON);
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -305,8 +303,7 @@ void up_disable_icache(void)
|
|||
{
|
||||
uint32_t regval;
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
|
||||
/* Disable the I-Cache */
|
||||
|
||||
|
|
@ -318,8 +315,7 @@ void up_disable_icache(void)
|
|||
|
||||
putreg32(0, NVIC_ICIALLU);
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -350,7 +346,7 @@ void up_invalidate_icache(uintptr_t start, uintptr_t end)
|
|||
* (ssize - 1) = 0x007f : Mask of the set field
|
||||
*/
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
if ((start & (ssize - 1)) != 0)
|
||||
{
|
||||
|
|
@ -380,8 +376,7 @@ void up_invalidate_icache(uintptr_t start, uintptr_t end)
|
|||
putreg32(start, NVIC_ICIMVAU);
|
||||
}
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
#endif /* CONFIG_ARMV8M_ICACHE */
|
||||
|
||||
|
|
@ -402,15 +397,13 @@ void up_invalidate_icache(uintptr_t start, uintptr_t end)
|
|||
#ifdef CONFIG_ARMV8M_ICACHE
|
||||
void up_invalidate_icache_all(void)
|
||||
{
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
|
||||
/* Invalidate the entire I-Cache */
|
||||
|
||||
putreg32(0, NVIC_ICIALLU);
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -523,7 +516,7 @@ void up_enable_dcache(void)
|
|||
|
||||
/* Invalidate the entire D-Cache */
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
do
|
||||
{
|
||||
int32_t tmpways = ways;
|
||||
|
|
@ -537,7 +530,7 @@ void up_enable_dcache(void)
|
|||
}
|
||||
while (sets--);
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
#ifdef CONFIG_ARMV8M_DCACHE_WRITETHROUGH
|
||||
ccr = getreg32(NVIC_CACR);
|
||||
|
|
@ -551,8 +544,7 @@ void up_enable_dcache(void)
|
|||
ccr |= NVIC_CFGCON_DC;
|
||||
putreg32(ccr, NVIC_CFGCON);
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
#endif /* CONFIG_ARMV8M_DCACHE */
|
||||
|
||||
|
|
@ -601,7 +593,7 @@ void up_disable_dcache(void)
|
|||
|
||||
wshift = arm_clz(ways) & 0x1f;
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
/* Disable the D-Cache */
|
||||
|
||||
|
|
@ -624,8 +616,7 @@ void up_disable_dcache(void)
|
|||
}
|
||||
while (sets--);
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
#endif /* CONFIG_ARMV8M_DCACHE */
|
||||
|
||||
|
|
@ -665,7 +656,7 @@ void up_invalidate_dcache(uintptr_t start, uintptr_t end)
|
|||
* (ssize - 1) = 0x007f : Mask of the set field
|
||||
*/
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
if ((start & (ssize - 1)) != 0)
|
||||
{
|
||||
|
|
@ -695,8 +686,7 @@ void up_invalidate_dcache(uintptr_t start, uintptr_t end)
|
|||
putreg32(start, NVIC_DCCIMVAC);
|
||||
}
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
#endif /* CONFIG_ARMV8M_DCACHE */
|
||||
|
||||
|
|
@ -744,7 +734,7 @@ void up_invalidate_dcache_all(void)
|
|||
|
||||
wshift = arm_clz(ways) & 0x1f;
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
/* Invalidate the entire D-Cache */
|
||||
|
||||
|
|
@ -761,8 +751,7 @@ void up_invalidate_dcache_all(void)
|
|||
}
|
||||
while (sets--);
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
#endif /* CONFIG_ARMV8M_DCACHE */
|
||||
|
||||
|
|
@ -819,7 +808,7 @@ void up_clean_dcache(uintptr_t start, uintptr_t end)
|
|||
#endif
|
||||
|
||||
start &= ~(ssize - 1);
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
do
|
||||
{
|
||||
|
|
@ -839,8 +828,7 @@ void up_clean_dcache(uintptr_t start, uintptr_t end)
|
|||
while (start < end);
|
||||
#endif /* !CONFIG_ARMV8M_DCACHE_WRITETHROUGH */
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
#endif /* CONFIG_ARMV8M_DCACHE */
|
||||
|
||||
|
|
@ -898,7 +886,7 @@ void up_clean_dcache_all(void)
|
|||
|
||||
wshift = arm_clz(ways) & 0x1f;
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
/* Clean the entire D-Cache */
|
||||
|
||||
|
|
@ -916,8 +904,7 @@ void up_clean_dcache_all(void)
|
|||
while (sets--);
|
||||
#endif /* !CONFIG_ARMV8M_DCACHE_WRITETHROUGH */
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
#endif /* CONFIG_ARMV8M_DCACHE */
|
||||
|
||||
|
|
@ -974,7 +961,7 @@ void up_flush_dcache(uintptr_t start, uintptr_t end)
|
|||
#endif
|
||||
|
||||
start &= ~(ssize - 1);
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
do
|
||||
{
|
||||
|
|
@ -993,8 +980,7 @@ void up_flush_dcache(uintptr_t start, uintptr_t end)
|
|||
}
|
||||
while (start < end);
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
#else
|
||||
up_invalidate_dcache(start, end);
|
||||
#endif /* !CONFIG_ARMV8M_DCACHE_WRITETHROUGH */
|
||||
|
|
@ -1054,7 +1040,7 @@ void up_flush_dcache_all(void)
|
|||
|
||||
wshift = arm_clz(ways) & 0x1f;
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
/* Clean and invalidate the entire D-Cache */
|
||||
|
||||
|
|
@ -1071,8 +1057,7 @@ void up_flush_dcache_all(void)
|
|||
}
|
||||
while (sets--);
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
#else
|
||||
up_invalidate_dcache_all();
|
||||
#endif /* !CONFIG_ARMV8M_DCACHE_WRITETHROUGH */
|
||||
|
|
|
|||
|
|
@ -30,10 +30,10 @@
|
|||
#include <assert.h>
|
||||
#include <debug.h>
|
||||
#include <sys/param.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "mpu.h"
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
|
|
@ -88,8 +88,7 @@ static void mpu_reset_internal(void)
|
|||
|
||||
putreg32(0, MPU_CTRL);
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -146,8 +145,7 @@ void mpu_freeregion(unsigned int region)
|
|||
putreg32(0, MPU_RLAR);
|
||||
putreg32(0, MPU_RBAR);
|
||||
g_mpu_region &= ~(1 << region);
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -200,8 +198,7 @@ void mpu_control(bool enable, bool hfnmiena, bool privdefena)
|
|||
|
||||
/* Ensure MPU setting take effects */
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -254,8 +251,7 @@ void mpu_modify_region(unsigned int region, uintptr_t base, size_t size,
|
|||
|
||||
/* Ensure MPU setting take effects */
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
|
|||
|
|
@ -30,12 +30,12 @@
|
|||
#include <stdio.h>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/irq.h>
|
||||
#include <arch/chip/chip.h>
|
||||
#include <nuttx/spinlock.h>
|
||||
#include <nuttx/timers/arch_alarm.h>
|
||||
|
||||
#include "barriers.h"
|
||||
#include "arm_gic.h"
|
||||
#include "arm_arch_timer.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -28,9 +28,9 @@
|
|||
#include <nuttx/cache.h>
|
||||
#include <nuttx/irq.h>
|
||||
#include <sys/param.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "cp15_cacheops.h"
|
||||
#include "barriers.h"
|
||||
#include "l2cc.h"
|
||||
|
||||
/****************************************************************************
|
||||
|
|
|
|||
|
|
@ -29,12 +29,12 @@
|
|||
#include <assert.h>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/irq.h>
|
||||
#include <arch/chip/chip.h>
|
||||
#include <sched/sched.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
#include "arm_gic.h"
|
||||
|
||||
/***************************************************************************
|
||||
|
|
@ -333,7 +333,7 @@ static void arm_gic_eoi_group0(unsigned int intid)
|
|||
* DEVICE nGnRnE attribute.
|
||||
*/
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
/* (AP -> Pending) Or (Active -> Inactive) or (AP to AP) nested case
|
||||
* Write a Group 0 interrupt completion
|
||||
|
|
@ -367,7 +367,7 @@ void arm_gic_eoi(unsigned int intid)
|
|||
* DEVICE nGnRnE attribute.
|
||||
*/
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
/* (AP -> Pending) Or (Active -> Inactive) or (AP to AP) nested case */
|
||||
|
||||
|
|
@ -393,9 +393,9 @@ static int arm_gic_send_sgi(unsigned int sgi_id, uint64_t target_aff,
|
|||
sgi_val = GICV3_SGIR_VALUE(aff3, aff2, aff1, sgi_id, SGIR_IRM_TO_AFF,
|
||||
target_list);
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
CP15_SET64(ICC_SGI1R, sgi_val);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,9 +39,9 @@
|
|||
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/spinlock.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
#include "l2cc.h"
|
||||
#include "l2cc_pl310.h"
|
||||
|
||||
|
|
@ -292,8 +292,7 @@ static void l2cc_disable_nolock(void)
|
|||
/* Disable the L2CC-P310 L2 cache by clearing the Control Register (CR) */
|
||||
|
||||
putreg32(0, L2CC_CR);
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -457,8 +456,7 @@ void arm_l2ccinitialize(void)
|
|||
|
||||
l2cc_invalidate_all();
|
||||
putreg32(L2CC_CR_L2CEN, L2CC_CR);
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
|
||||
sinfo("(%d ways) * (%d bytes/way) = %d bytes\n",
|
||||
|
|
@ -533,8 +531,7 @@ void l2cc_enable(void)
|
|||
|
||||
l2cc_invalidate_all_nolock();
|
||||
putreg32(L2CC_CR_L2CEN, L2CC_CR);
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
spin_unlock_irqrestore(&g_l2cc_lock, flags);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ static void cp15_dcache_op_mva(uintptr_t start, uintptr_t end, int op)
|
|||
|
||||
line = cp15_dcache_linesize();
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
if ((start & (line - 1)) != 0)
|
||||
{
|
||||
|
|
@ -152,7 +152,7 @@ static void cp15_dcache_op_mva(uintptr_t start, uintptr_t end, int op)
|
|||
start += line;
|
||||
}
|
||||
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -181,7 +181,7 @@ void cp15_dcache_op_level(uint32_t level, int op)
|
|||
way_shift = 32 - ilog2(ways);
|
||||
set_shift = ilog2(line);
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
/* A: Log2(ways)
|
||||
* B: L+S
|
||||
|
|
@ -220,7 +220,7 @@ void cp15_dcache_op_level(uint32_t level, int op)
|
|||
}
|
||||
}
|
||||
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
void cp15_invalidate_icache(uintptr_t start, uintptr_t end)
|
||||
|
|
@ -230,7 +230,7 @@ void cp15_invalidate_icache(uintptr_t start, uintptr_t end)
|
|||
line = cp15_icache_linesize();
|
||||
start &= ~(line - 1);
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
while (start < end)
|
||||
{
|
||||
|
|
@ -238,7 +238,7 @@ void cp15_invalidate_icache(uintptr_t start, uintptr_t end)
|
|||
start += line;
|
||||
}
|
||||
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
void cp15_coherent_dcache(uintptr_t start, uintptr_t end)
|
||||
|
|
|
|||
|
|
@ -594,7 +594,7 @@ static inline void cp15_enable_dcache(void)
|
|||
sctlr = CP15_GET(SCTLR);
|
||||
sctlr |= SCTLR_C;
|
||||
CP15_SET(SCTLR, sctlr);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -618,7 +618,7 @@ static inline void cp15_disable_dcache(void)
|
|||
sctlr = CP15_GET(SCTLR);
|
||||
sctlr &= ~SCTLR_C;
|
||||
CP15_SET(SCTLR, sctlr);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -642,7 +642,7 @@ static inline void cp15_enable_icache(void)
|
|||
sctlr = CP15_GET(SCTLR);
|
||||
sctlr |= SCTLR_I;
|
||||
CP15_SET(SCTLR, sctlr);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -666,7 +666,7 @@ static inline void cp15_disable_icache(void)
|
|||
sctlr = CP15_GET(SCTLR);
|
||||
sctlr &= ~SCTLR_I;
|
||||
CP15_SET(SCTLR, sctlr);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -686,7 +686,7 @@ static inline void cp15_disable_icache(void)
|
|||
static inline void cp15_invalidate_icache_inner_sharable(void)
|
||||
{
|
||||
CP15_SET(ICIALLUIS, 0);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -706,7 +706,7 @@ static inline void cp15_invalidate_icache_inner_sharable(void)
|
|||
static inline void cp15_invalidate_btb_inner_sharable(void)
|
||||
{
|
||||
CP15_SET(BPIALLIS, 0);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -727,7 +727,7 @@ static inline void cp15_invalidate_btb_inner_sharable(void)
|
|||
static inline void cp15_invalidate_icache_all(void)
|
||||
{
|
||||
CP15_SET(ICIALLU, 0);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -747,7 +747,7 @@ static inline void cp15_invalidate_icache_all(void)
|
|||
static inline void cp15_invalidate_icache_bymva(unsigned int va)
|
||||
{
|
||||
CP15_SET(ICIMVAU, va);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -767,7 +767,7 @@ static inline void cp15_invalidate_icache_bymva(unsigned int va)
|
|||
static inline void cp15_flush_btb(void)
|
||||
{
|
||||
CP15_SET(BPIALL, 0);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -787,7 +787,7 @@ static inline void cp15_flush_btb(void)
|
|||
static inline void cp15_flush_btb_bymva(unsigned int va)
|
||||
{
|
||||
CP15_SET(BPIMVA, va);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -809,7 +809,7 @@ static inline void cp15_flush_btb_bymva(unsigned int va)
|
|||
static inline void cp15_invalidate_dcacheline_bymva(unsigned int va)
|
||||
{
|
||||
CP15_SET(DCIMVAC, va);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -831,7 +831,7 @@ static inline void cp15_invalidate_dcacheline_bymva(unsigned int va)
|
|||
static inline void cp15_invalidate_dcacheline_bysetway(unsigned int setway)
|
||||
{
|
||||
CP15_SET(DCISW, setway);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -853,7 +853,7 @@ static inline void cp15_invalidate_dcacheline_bysetway(unsigned int setway)
|
|||
static inline void cp15_clean_dcache_bymva(unsigned int va)
|
||||
{
|
||||
CP15_SET(DCCMVAC, va);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -873,7 +873,7 @@ static inline void cp15_clean_dcache_bymva(unsigned int va)
|
|||
static inline void cp15_clean_dcache_bysetway(unsigned int setway)
|
||||
{
|
||||
CP15_SET(DCCSW, setway);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -893,7 +893,7 @@ static inline void cp15_clean_dcache_bysetway(unsigned int setway)
|
|||
static inline void cp15_clean_ucache_bymva(unsigned int va)
|
||||
{
|
||||
CP15_SET(DCCMVAU, va);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -913,7 +913,7 @@ static inline void cp15_clean_ucache_bymva(unsigned int va)
|
|||
static inline void cp15_cleaninvalidate_dcacheline_bymva(unsigned int va)
|
||||
{
|
||||
CP15_SET(DCCIMVAC, va);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -933,7 +933,7 @@ static inline void cp15_cleaninvalidate_dcacheline_bymva(unsigned int va)
|
|||
static inline void cp15_cleaninvalidate_dcacheline(unsigned int setway)
|
||||
{
|
||||
CP15_SET(DCCISW, setway);
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
|
|
|||
|
|
@ -34,10 +34,9 @@
|
|||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/irq.h>
|
||||
|
||||
#include "barriers.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
|
@ -543,14 +542,14 @@ static inline unsigned int cp15_rdsctlr(void)
|
|||
static inline void cp15_wrsctlr(unsigned int sctlr)
|
||||
{
|
||||
CP15_SET(SCTLR, sctlr);
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
ARM_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
UP_NOP();
|
||||
}
|
||||
|
||||
/* Read/write the vector base address register (VBAR) */
|
||||
|
|
|
|||
|
|
@ -30,12 +30,12 @@
|
|||
#include <assert.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/irq.h>
|
||||
#include <arch/chip/chip.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
|
||||
#include "barriers.h"
|
||||
#include "arm_gic.h"
|
||||
#include "chip.h"
|
||||
#include "fvp_boot.h"
|
||||
|
|
@ -69,7 +69,7 @@ void arm_el_init(void)
|
|||
CP15_SET(ICC_HSRE, ICC_SRE_ELX_SRE_BIT | ICC_SRE_ELX_DFB_BIT |
|
||||
ICC_SRE_ELX_DIB_BIT | ICC_SRE_EL3_EN_BIT);
|
||||
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/sched.h>
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/irq.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
|
|
@ -40,7 +41,6 @@
|
|||
#include "scu.h"
|
||||
#include "gic.h"
|
||||
#include "mmu.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
|
||||
|
|
@ -209,7 +209,7 @@ void imx_cpu_enable(void)
|
|||
|
||||
memcpy((uint32_t *)(PGTABLE_BASE_VADDR + PGTABLE_SIZE * cpu),
|
||||
(uint32_t *)PGTABLE_BASE_VADDR, PGTABLE_SIZE);
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
#endif
|
||||
|
||||
/* Set the start up address */
|
||||
|
|
|
|||
|
|
@ -34,8 +34,7 @@
|
|||
#include <sys/types.h>
|
||||
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include "barriers.h"
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "hardware/imx9_gpc.h"
|
||||
|
|
@ -52,16 +51,6 @@
|
|||
|
||||
#define ROOT_CLOCK_OFFSET 41
|
||||
|
||||
/* Common barrier */
|
||||
|
||||
#define mb() \
|
||||
do \
|
||||
{ \
|
||||
ARM_DSB(); \
|
||||
ARM_ISB(); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
|
|
|||
|
|
@ -32,8 +32,9 @@
|
|||
|
||||
#include <nuttx/userspace.h>
|
||||
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "mpu.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "hardware/imx9_memorymap.h"
|
||||
|
||||
|
|
@ -104,7 +105,7 @@ void imx9_mpu_initialize(void)
|
|||
#ifdef CONFIG_ARMV7M_DCACHE
|
||||
/* Memory barrier */
|
||||
|
||||
ARM_DMB();
|
||||
UP_DMB();
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BUILD_PROTECTED
|
||||
|
|
|
|||
|
|
@ -34,9 +34,9 @@
|
|||
#include <nuttx/cache.h>
|
||||
#include <nuttx/init.h>
|
||||
#include <arch/board/board.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
#include "nvic.h"
|
||||
#include "mpu.h"
|
||||
|
||||
|
|
@ -107,8 +107,7 @@ static inline void imx9_tcmenable(void)
|
|||
{
|
||||
uint32_t regval;
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
|
||||
/* Enabled/disabled ITCM */
|
||||
|
||||
|
|
@ -130,8 +129,7 @@ static inline void imx9_tcmenable(void)
|
|||
#endif
|
||||
putreg32(regval, NVIC_DTCMCR);
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
|
|||
|
|
@ -31,14 +31,13 @@
|
|||
#include <nuttx/config.h>
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/mutex.h>
|
||||
#include <arch/barriers.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "barriers.h"
|
||||
|
||||
#include "hardware/rt106x/imxrt106x_memorymap.h"
|
||||
#include "arm_internal.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@
|
|||
#include <assert.h>
|
||||
#include <debug.h>
|
||||
#include <errno.h>
|
||||
#include <barriers.h>
|
||||
#include <endian.h>
|
||||
|
||||
#include <arpa/inet.h>
|
||||
|
|
@ -55,6 +54,7 @@
|
|||
# include <nuttx/net/pkt.h>
|
||||
#endif
|
||||
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
|
|
@ -778,7 +778,7 @@ static int imxrt_transmit(struct imxrt_driver_s *priv)
|
|||
#ifdef CONFIG_ARMV7M_DCACHE_WRITETHROUGH
|
||||
/* Make sure that descriptors are flushed */
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
#else
|
||||
up_clean_dcache((uintptr_t)txdesc,
|
||||
(uintptr_t)txdesc + sizeof(struct enet_desc_s));
|
||||
|
|
@ -1033,7 +1033,7 @@ static void imxrt_receive(struct imxrt_driver_s *priv)
|
|||
rxdesc->status1 |= RXDESC_E;
|
||||
|
||||
#ifdef CONFIG_ARMV7M_DCACHE_WRITETHROUGH
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
#else
|
||||
up_clean_dcache((uintptr_t)rxdesc,
|
||||
(uintptr_t)rxdesc + sizeof(struct enet_desc_s));
|
||||
|
|
@ -1473,7 +1473,7 @@ static int imxrt_ifup_action(struct net_driver_s *dev, bool resetphy)
|
|||
#ifdef CONFIG_ARMV7M_DCACHE_WRITETHROUGH
|
||||
/* Make sure that descriptors are flushed */
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
#endif
|
||||
|
||||
/* Indicate that there have been empty receive buffers produced */
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@
|
|||
#include <assert.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
|
|
@ -44,7 +45,6 @@
|
|||
#include <nuttx/mutex.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "imxrt_gpio.h"
|
||||
#include "imxrt_periphclks.h"
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@
|
|||
#include <assert.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
|
|
@ -44,7 +45,6 @@
|
|||
#include <nuttx/mutex.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "imxrt_gpio.h"
|
||||
#include "imxrt_periphclks.h"
|
||||
|
|
|
|||
|
|
@ -30,9 +30,9 @@
|
|||
#include <sys/param.h>
|
||||
|
||||
#include <nuttx/userspace.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "mpu.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "hardware/imxrt_memorymap.h"
|
||||
|
||||
|
|
@ -101,7 +101,7 @@ void imxrt_mpu_initialize(void)
|
|||
#ifdef CONFIG_ARMV7M_DCACHE
|
||||
/* Memory barrier */
|
||||
|
||||
ARM_DMB();
|
||||
UP_DMB();
|
||||
|
||||
#ifdef CONFIG_IMXFT_QSPI
|
||||
/* Make QSPI memory region strongly ordered */
|
||||
|
|
|
|||
|
|
@ -28,8 +28,9 @@
|
|||
|
||||
#include <stdint.h>
|
||||
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
#include "imxrt_periphclks.h"
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -72,8 +73,7 @@ void imxrt_periphclk_configure(unsigned int index, unsigned int value)
|
|||
|
||||
putreg32(regval, IMXRT_CCM_LPCG_DIR(index));
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
|
||||
/* Ensure the clock setting is written and active before we return */
|
||||
|
||||
|
|
@ -105,8 +105,7 @@ void imxrt_periphclk_configure(uintptr_t regaddr, unsigned int index,
|
|||
unsigned int value)
|
||||
{
|
||||
modifyreg32(regaddr, CCM_CCGRX_CG_MASK(index), CCM_CCGRX_CG(index, value));
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -32,10 +32,10 @@
|
|||
|
||||
#include <nuttx/cache.h>
|
||||
#include <nuttx/init.h>
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
#include "nvic.h"
|
||||
|
||||
#include "imxrt_clockconfig.h"
|
||||
|
|
@ -101,8 +101,7 @@ static inline void imxrt_tcmenable(void)
|
|||
{
|
||||
uint32_t regval;
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
|
||||
/* Enabled/disabled ITCM */
|
||||
|
||||
|
|
@ -124,8 +123,7 @@ static inline void imxrt_tcmenable(void)
|
|||
#endif
|
||||
putreg32(regval, NVIC_DTCMCR);
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
|
||||
#ifdef CONFIG_ARMV7M_ITCM
|
||||
/* Copy TCM code from flash to ITCM */
|
||||
|
|
|
|||
|
|
@ -28,10 +28,10 @@
|
|||
|
||||
#include <nuttx/cache.h>
|
||||
#include <nuttx/init.h>
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
#include "nvic.h"
|
||||
#include "mps_irq.h"
|
||||
#include "mps_userspace.h"
|
||||
|
|
@ -76,8 +76,7 @@ static inline void mps_tcmenable(void)
|
|||
{
|
||||
uint32_t regval;
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
|
||||
/* Enabled/disabled ITCM */
|
||||
|
||||
|
|
@ -99,8 +98,7 @@ static inline void mps_tcmenable(void)
|
|||
#endif
|
||||
putreg32(regval, NVIC_DTCMCR);
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -164,7 +162,7 @@ void __start(void)
|
|||
#ifdef CONFIG_ARMV7M_DCACHE
|
||||
/* Memory barrier */
|
||||
|
||||
ARM_DMB();
|
||||
UP_DMB();
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -30,9 +30,9 @@
|
|||
#include <assert.h>
|
||||
#include <sys/param.h>
|
||||
#include <nuttx/userspace.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "mpu.h"
|
||||
#include "barriers.h"
|
||||
#include "arm_internal.h"
|
||||
#include "mps_userspace.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -43,8 +43,9 @@
|
|||
#include <nuttx/config.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "hardware/nrf52_ficr.h"
|
||||
#include "hardware/nrf52_nvmc.h"
|
||||
|
|
@ -99,8 +100,7 @@ static inline void wait_for_flash_ready(void)
|
|||
|
||||
static inline void nrf_mem_barrier(void)
|
||||
{
|
||||
ARM_ISB();
|
||||
ARM_DSB();
|
||||
UP_MB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
|
|||
|
|
@ -52,10 +52,6 @@
|
|||
#define QSPI_BLOCK_ERASE 0xd8
|
||||
#define QSPI_ALL_ERASE 0xc7
|
||||
|
||||
/* QSPI memory synchronization */
|
||||
|
||||
#define MEMORY_SYNC() do { ARM_DSB(); ARM_ISB(); } while (0)
|
||||
|
||||
/****************************************************************************
|
||||
* Private Types
|
||||
****************************************************************************/
|
||||
|
|
|
|||
|
|
@ -34,11 +34,11 @@
|
|||
#include <nuttx/irq.h>
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/mutex.h>
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/board/board.h>
|
||||
#include <nuttx/power/pm.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "nrf52_gpio.h"
|
||||
#include "nrf52_spi.h"
|
||||
|
|
@ -492,8 +492,7 @@ static int nrf52_spi_deinit(struct nrf52_spidev_s *priv)
|
|||
*/
|
||||
|
||||
nrf52_spi_putreg(priv, NRF52_SPIM_POWER_OFFSET, 0);
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
nrf52_spi_putreg(priv, NRF52_SPIM_POWER_OFFSET, 1);
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -30,9 +30,9 @@
|
|||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/progmem.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "hardware/nrf53_ficr.h"
|
||||
#include "hardware/nrf53_nvmc.h"
|
||||
|
|
@ -41,8 +41,6 @@
|
|||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
#define MEMORY_SYNC() ARM_ISB(); ARM_DSB()
|
||||
|
||||
/* Sizes and masks */
|
||||
|
||||
#define NRF53_FLASH_ERASEDVAL (0xff)
|
||||
|
|
@ -220,7 +218,7 @@ ssize_t up_progmem_eraseblock(size_t block)
|
|||
|
||||
/* Memory sync */
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Erase the page by writting 0xffffffff into the first 32-bit word of
|
||||
* the flash page
|
||||
|
|
@ -240,7 +238,7 @@ ssize_t up_progmem_eraseblock(size_t block)
|
|||
|
||||
/* Memory sync */
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Verify */
|
||||
|
||||
|
|
@ -356,7 +354,7 @@ ssize_t up_progmem_write(size_t addr, const void *buf, size_t count)
|
|||
|
||||
/* Memory sync */
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Write the word */
|
||||
|
||||
|
|
@ -374,7 +372,7 @@ ssize_t up_progmem_write(size_t addr, const void *buf, size_t count)
|
|||
|
||||
/* Memory sync */
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Verify */
|
||||
|
||||
|
|
|
|||
|
|
@ -62,10 +62,6 @@
|
|||
#define QSPI_BLOCK_ERASE 0xd8
|
||||
#define QSPI_ALL_ERASE 0xc7
|
||||
|
||||
/* QSPI memory synchronization */
|
||||
|
||||
#define MEMORY_SYNC() do { ARM_DSB(); ARM_ISB(); } while (0)
|
||||
|
||||
/****************************************************************************
|
||||
* Private Types
|
||||
****************************************************************************/
|
||||
|
|
|
|||
|
|
@ -34,11 +34,11 @@
|
|||
#include <nuttx/irq.h>
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/mutex.h>
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/board/board.h>
|
||||
#include <nuttx/power/pm.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "nrf53_gpio.h"
|
||||
#include "nrf53_spi.h"
|
||||
|
|
|
|||
|
|
@ -26,8 +26,9 @@
|
|||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "hardware/nrf91_memorymap.h"
|
||||
#include "hardware/nrf91_regulators.h"
|
||||
|
|
@ -39,8 +40,6 @@
|
|||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
#define MEMORY_SYNC() ARM_ISB(); ARM_DSB()
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
|
@ -87,7 +86,7 @@ void nrf91_uicr_recover(void)
|
|||
|
||||
/* Memory sync */
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Write HFXOSRC */
|
||||
|
||||
|
|
@ -104,7 +103,7 @@ void nrf91_uicr_recover(void)
|
|||
|
||||
/* Memory sync */
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Write HFXOCNT */
|
||||
|
||||
|
|
@ -121,7 +120,7 @@ void nrf91_uicr_recover(void)
|
|||
|
||||
/* Memory sync */
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Read only access */
|
||||
|
||||
|
|
|
|||
|
|
@ -30,9 +30,9 @@
|
|||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/progmem.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "hardware/nrf91_ficr.h"
|
||||
#include "hardware/nrf91_nvmc.h"
|
||||
|
|
@ -41,8 +41,6 @@
|
|||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
#define MEMORY_SYNC() ARM_ISB(); ARM_DSB()
|
||||
|
||||
/* Sizes and masks */
|
||||
|
||||
#define NRF91_FLASH_ERASEDVAL (0xff)
|
||||
|
|
@ -220,7 +218,7 @@ ssize_t up_progmem_eraseblock(size_t block)
|
|||
|
||||
/* Memory sync */
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Erase the page by writting 0xffffffff into the first 32-bit word of
|
||||
* the flash page
|
||||
|
|
@ -240,7 +238,7 @@ ssize_t up_progmem_eraseblock(size_t block)
|
|||
|
||||
/* Memory sync */
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Verify */
|
||||
|
||||
|
|
@ -356,7 +354,7 @@ ssize_t up_progmem_write(size_t addr, const void *buf, size_t count)
|
|||
|
||||
/* Memory sync */
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Write the word */
|
||||
|
||||
|
|
@ -374,7 +372,7 @@ ssize_t up_progmem_write(size_t addr, const void *buf, size_t count)
|
|||
|
||||
/* Memory sync */
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Verify */
|
||||
|
||||
|
|
|
|||
|
|
@ -34,11 +34,11 @@
|
|||
#include <nuttx/irq.h>
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/mutex.h>
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/board/board.h>
|
||||
#include <nuttx/power/pm.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "nrf91_gpio.h"
|
||||
#include "nrf91_spi.h"
|
||||
|
|
|
|||
|
|
@ -33,8 +33,7 @@
|
|||
#include <nuttx/kmalloc.h>
|
||||
#include <nuttx/signal.h>
|
||||
#include <nuttx/wireless/ieee80211/bcmf_gspi.h>
|
||||
|
||||
#include "barriers.h"
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "rp2040_cyw43439.h"
|
||||
#include "rp2040_pio.h"
|
||||
|
|
@ -499,7 +498,7 @@ static int my_write(struct gspi_dev_s *gspi,
|
|||
/* Assert gpio_select by pulling line low */
|
||||
|
||||
rp2040_gpio_put(rp_io->gpio_select, false);
|
||||
ARM_DMB();
|
||||
UP_DMB();
|
||||
|
||||
/* Enable the state machine. This starts the pio program running */
|
||||
|
||||
|
|
@ -524,7 +523,7 @@ static int my_write(struct gspi_dev_s *gspi,
|
|||
|
||||
/* Un-assert select by pulling line high. */
|
||||
|
||||
ARM_DMB();
|
||||
UP_DMB();
|
||||
rp2040_gpio_put(rp_io->gpio_select, true);
|
||||
|
||||
/* Free the DMA controller */
|
||||
|
|
@ -725,7 +724,7 @@ static int my_read(struct gspi_dev_s *gspi,
|
|||
/* Assert gpio_select by pulling line low */
|
||||
|
||||
rp2040_gpio_put(rp_io->gpio_select, false);
|
||||
ARM_DMB();
|
||||
UP_DMB();
|
||||
|
||||
/* Enable the state machine. This starts the pio program running */
|
||||
|
||||
|
|
@ -741,7 +740,7 @@ static int my_read(struct gspi_dev_s *gspi,
|
|||
|
||||
/* Un-assert select by pulling line high. */
|
||||
|
||||
ARM_DMB();
|
||||
UP_DMB();
|
||||
rp2040_gpio_put(rp_io->gpio_select, true);
|
||||
|
||||
/* Free the DMA controllers */
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ spinlock_t up_testset(volatile spinlock_t *lock)
|
|||
if (ret == SP_UNLOCKED)
|
||||
{
|
||||
*lock = SP_LOCKED;
|
||||
SP_DMB();
|
||||
UP_DMB();
|
||||
}
|
||||
|
||||
/* Unlock hardware spinlock */
|
||||
|
|
|
|||
|
|
@ -72,10 +72,6 @@
|
|||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Memory synchronization */
|
||||
|
||||
#define MEMORY_SYNC() //do { ARM_DSB(); ARM_ISB(); } while (0)
|
||||
|
||||
/* If processing is not done at the interrupt level, then work queue support
|
||||
* is required.
|
||||
*/
|
||||
|
|
@ -839,7 +835,7 @@ static int s32k3xx_transmit(struct s32k3xx_driver_s *priv)
|
|||
s32k3xx_disableint(priv, EMAC_DMA_CH0_INTERRUPT_ENABLE_RIE);
|
||||
}
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Enable TX interrupts */
|
||||
|
||||
|
|
|
|||
|
|
@ -28,9 +28,9 @@
|
|||
#include <sys/param.h>
|
||||
|
||||
#include <nuttx/userspace.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "mpu.h"
|
||||
#include "barriers.h"
|
||||
#include "s32k3xx_mpuinit.h"
|
||||
#include "arm_internal.h"
|
||||
|
||||
|
|
@ -106,7 +106,7 @@ void s32k3xx_mpuinitialize(void)
|
|||
#ifdef CONFIG_ARMV7M_DCACHE
|
||||
/* Memory barrier */
|
||||
|
||||
ARM_DMB();
|
||||
UP_DMB();
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@
|
|||
#include <assert.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
|
|
@ -50,7 +51,6 @@
|
|||
#include <nuttx/spi/qspi.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#ifdef CONFIG_S32K3XX_QSPI_DMA
|
||||
#include "hardware/s32k3xx_dmamux.h"
|
||||
|
|
@ -66,10 +66,6 @@
|
|||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* QSPI memory synchronization */
|
||||
|
||||
#define MEMORY_SYNC() do { ARM_DSB(); ARM_ISB(); } while (0)
|
||||
|
||||
/* LUT entries used for various command sequences */
|
||||
#define QSPI_LUT_READ 0U /* Quad Output read */
|
||||
#define QSPI_LUT_WRITE 1U /* Quad write */
|
||||
|
|
@ -736,7 +732,7 @@ static int qspi_receive_blocking(struct s32k3xx_qspidev_s *priv,
|
|||
up_clean_dcache((uintptr_t)S32K3XX_QSPI_RBDR(0),
|
||||
(uintptr_t)S32K3XX_QSPI_RBDR(0) + readlen);
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
memcpy(data, (void *)S32K3XX_QSPI_RBDR(0), readlen);
|
||||
data += readlen;
|
||||
|
|
@ -1299,7 +1295,7 @@ static int qspi_command(struct qspi_dev_s *dev,
|
|||
/* Wait for the interrupt routine to finish it's magic */
|
||||
|
||||
nxsem_wait(&priv->op_sem);
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
if (QSPICMD_ISREAD(cmdinfo->flags))
|
||||
{
|
||||
|
|
@ -1370,7 +1366,7 @@ static int qspi_memory(struct qspi_dev_s *dev,
|
|||
#endif
|
||||
}
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@
|
|||
#include <assert.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
|
|
@ -47,7 +48,6 @@
|
|||
#include <nuttx/spi/qspi.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "sam_pio.h"
|
||||
#include "sam_dmac.h"
|
||||
|
|
@ -118,10 +118,6 @@
|
|||
#define DMA_TIMEOUT_MS (800)
|
||||
#define DMA_TIMEOUT_TICKS MSEC2TICK(DMA_TIMEOUT_MS)
|
||||
|
||||
/* QSPI memory synchronization */
|
||||
|
||||
#define MEMORY_SYNC() do { ARM_DSB(); ARM_ISB(); } while (0)
|
||||
|
||||
/* Debug ********************************************************************/
|
||||
|
||||
/* Check if QSPI debug is enabled */
|
||||
|
|
@ -955,7 +951,7 @@ static int qspi_memory_dma(struct sam_qspidev_s *priv,
|
|||
qspi_putreg(priv, QSPI_CR_LASTXFER, SAM_QSPI_CR_OFFSET);
|
||||
|
||||
while ((qspi_getreg(priv, SAM_QSPI_SR_OFFSET) & QSPI_SR_INSTRE) == 0);
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Dump the sampled DMA registers */
|
||||
|
||||
|
|
@ -1016,7 +1012,7 @@ static int qspi_memory_nodma(struct sam_qspidev_s *priv,
|
|||
meminfo->buflen);
|
||||
}
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Indicate the end of the transfer as soon as the transmission
|
||||
* registers are empty.
|
||||
|
|
@ -1520,7 +1516,7 @@ static int qspi_command(struct qspi_dev_s *dev,
|
|||
(const uint8_t *) priv->membase, cmdinfo->buflen);
|
||||
}
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Indicate the end of the transfer as soon as the transmission
|
||||
* registers are empty.
|
||||
|
|
@ -1553,7 +1549,7 @@ static int qspi_command(struct qspi_dev_s *dev,
|
|||
QSPI_IFR_NBDUM(0);
|
||||
qspi_putreg(priv, ifr, SAM_QSPI_IFR_OFFSET);
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* If the instruction frame does not include data, writing to the IFR
|
||||
* triggers sending of the instruction frame. Fall through to INSTRE
|
||||
|
|
|
|||
|
|
@ -30,10 +30,9 @@
|
|||
#include <errno.h>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/samv7/chip.h>
|
||||
|
||||
#include "barriers.h"
|
||||
|
||||
#include "hardware/sam_memorymap.h"
|
||||
|
||||
#include "sam_eefc.h"
|
||||
|
|
|
|||
|
|
@ -30,9 +30,9 @@
|
|||
#include <sys/param.h>
|
||||
|
||||
#include <nuttx/userspace.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "mpu.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "hardware/sam_memorymap.h"
|
||||
|
||||
|
|
@ -75,7 +75,7 @@ void sam_mpu_initialize(void)
|
|||
#ifdef CONFIG_ARMV7M_DCACHE
|
||||
/* Memory barrier */
|
||||
|
||||
ARM_DMB();
|
||||
UP_DMB();
|
||||
|
||||
#ifdef CONFIG_SAMV7_QSPI
|
||||
/* Make QSPI memory region strongly ordered */
|
||||
|
|
|
|||
|
|
@ -32,10 +32,10 @@
|
|||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/mutex.h>
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/samv7/chip.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "hardware/sam_memorymap.h"
|
||||
|
||||
|
|
@ -549,7 +549,7 @@ ssize_t up_progmem_write(size_t address, const void *buffer, size_t buflen)
|
|||
*dest++ = *src++;
|
||||
|
||||
#ifdef CONFIG_ARMV7M_DCACHE_WRITETHROUGH
|
||||
ARM_DMB();
|
||||
UP_DMB();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@
|
|||
#include <assert.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
|
|
@ -47,7 +48,6 @@
|
|||
#include <nuttx/spi/qspi.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "sam_gpio.h"
|
||||
#include "sam_xdmac.h"
|
||||
|
|
@ -118,10 +118,6 @@
|
|||
#define DMA_TIMEOUT_MS (800)
|
||||
#define DMA_TIMEOUT_TICKS MSEC2TICK(DMA_TIMEOUT_MS)
|
||||
|
||||
/* QSPI memory synchronization */
|
||||
|
||||
#define MEMORY_SYNC() do { ARM_DSB(); ARM_ISB(); } while (0)
|
||||
|
||||
/* Debug ********************************************************************/
|
||||
|
||||
/* Check if QSPI debug is enabled */
|
||||
|
|
@ -910,7 +906,7 @@ static int qspi_memory_dma(struct sam_qspidev_s *priv,
|
|||
qspi_putreg(priv, QSPI_CR_LASTXFER, SAM_QSPI_CR_OFFSET);
|
||||
|
||||
while ((qspi_getreg(priv, SAM_QSPI_SR_OFFSET) & QSPI_SR_INSTRE) == 0);
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Dump the sampled DMA registers */
|
||||
|
||||
|
|
@ -971,7 +967,7 @@ static int qspi_memory_nodma(struct sam_qspidev_s *priv,
|
|||
meminfo->buflen);
|
||||
}
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Indicate the end of the transfer as soon as the transmission
|
||||
* registers are empty.
|
||||
|
|
@ -1465,7 +1461,7 @@ static int qspi_command(struct qspi_dev_s *dev,
|
|||
(const uint8_t *)SAM_QSPIMEM_BASE, cmdinfo->buflen);
|
||||
}
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Indicate the end of the transfer as soon as the transmission
|
||||
* registers are empty.
|
||||
|
|
@ -1498,7 +1494,7 @@ static int qspi_command(struct qspi_dev_s *dev,
|
|||
QSPI_IFR_NBDUM(0);
|
||||
qspi_putreg(priv, ifr, SAM_QSPI_IFR_OFFSET);
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* If the insruction frame does not include data, writing to the IFR
|
||||
* triggers sending of the instruction frame. Fall through to INSTRE
|
||||
|
|
|
|||
|
|
@ -32,10 +32,10 @@
|
|||
|
||||
#include <nuttx/cache.h>
|
||||
#include <nuttx/init.h>
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
#include "nvic.h"
|
||||
|
||||
#include "sam_clockconfig.h"
|
||||
|
|
@ -103,8 +103,7 @@ static inline void sam_tcmenable(void)
|
|||
{
|
||||
uint32_t regval;
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
|
||||
/* Assure that GPNVM 7-8 settings are as expected */
|
||||
#warning Missing logic
|
||||
|
|
@ -129,8 +128,7 @@ static inline void sam_tcmenable(void)
|
|||
#endif
|
||||
putreg32(regval, NVIC_DTCMCR);
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
|
||||
#ifdef CONFIG_ARMV7M_ITCM
|
||||
/* Copy TCM code from flash to ITCM */
|
||||
|
|
|
|||
|
|
@ -30,10 +30,10 @@
|
|||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/mutex.h>
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/samv7/chip.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "hardware/sam_memorymap.h"
|
||||
|
||||
|
|
@ -126,7 +126,7 @@ int sam_write_user_signature(void *buffer, size_t buflen)
|
|||
*dest++ = g_page_buffer[i];
|
||||
|
||||
#ifdef CONFIG_ARMV7M_DCACHE_WRITETHROUGH
|
||||
ARM_DMB();
|
||||
UP_DMB();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -60,10 +60,10 @@
|
|||
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/spinlock.h>
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "chip.h"
|
||||
#include "sam_periphclks.h"
|
||||
|
|
@ -150,10 +150,6 @@
|
|||
#define EPR_TXDTOG_MASK (USB_EPR_STATTX_MASK | EPR_NOTOG_MASK)
|
||||
#define EPR_RXDTOG_MASK (USB_EPR_STATRX_MASK | EPR_NOTOG_MASK)
|
||||
|
||||
/* Cache-related */
|
||||
|
||||
#define MEMORY_SYNC() do { ARM_DSB();ARM_ISB(); } while (0)
|
||||
|
||||
/* Request queue operations *************************************************/
|
||||
|
||||
#define sam_rqempty(q) ((q)->head == NULL)
|
||||
|
|
@ -1566,7 +1562,7 @@ static void sam_req_rddone(struct sam_usbdev_s *priv,
|
|||
*dest++ = *fifo++;
|
||||
}
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -1832,7 +1828,7 @@ static void sam_ep0_read(uint8_t *buffer, size_t buflen)
|
|||
*buffer++ = *fifo++;
|
||||
}
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -1864,7 +1860,7 @@ static void sam_ctrlep_write(struct sam_ep_s *privep, const uint8_t *buffer,
|
|||
*fifo++ = *buffer++;
|
||||
}
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Indicate that there is data in the TX packet memory. This will
|
||||
* be cleared when the next NAKIN interrupt is received.
|
||||
|
|
@ -1926,7 +1922,7 @@ static void sam_ep_write(struct sam_ep_s *privep, const uint8_t *buffer,
|
|||
*fifo++ = *buffer++;
|
||||
}
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Indicate that there is data in the TX packet memory. This will
|
||||
* be cleared when the next data out interrupt is received.
|
||||
|
|
@ -3337,7 +3333,7 @@ static int sam_usbhs_interrupt(int irq, void *context, void *arg)
|
|||
}
|
||||
|
||||
usbtrace(TRACE_INTEXIT(SAM_TRACEINTID_INTERRUPT), devisr);
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@
|
|||
#include <debug.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include <arch/barriers.h>
|
||||
#include <arpa/inet.h>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
|
|
@ -54,7 +55,6 @@
|
|||
#endif
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "hardware/stm32_syscfg.h"
|
||||
#include "hardware/stm32_pinmap.h"
|
||||
|
|
@ -76,10 +76,6 @@
|
|||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Memory synchronization */
|
||||
|
||||
#define MEMORY_SYNC() do { ARM_DSB(); ARM_ISB(); } while (0)
|
||||
|
||||
/* Configuration ************************************************************/
|
||||
|
||||
/* See boards/arm/stm32/stm3240g-eval/README.txt for an explanation of the
|
||||
|
|
@ -1225,7 +1221,7 @@ static int stm32_transmit(struct stm32_ethmac_s *priv)
|
|||
|
||||
/* Check if the TX Buffer unavailable flag is set */
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
if ((stm32_getreg(STM32_ETH_DMASR) & ETH_DMAINT_TBUI) != 0)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -51,13 +51,12 @@
|
|||
#include <nuttx/config.h>
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/mutex.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "barriers.h"
|
||||
|
||||
#include "hardware/stm32_flash.h"
|
||||
#include "stm32_waste.h"
|
||||
#include "arm_internal.h"
|
||||
|
|
@ -411,7 +410,7 @@ ssize_t up_progmem_write(size_t addr, const void *buf, size_t count)
|
|||
* optimization).
|
||||
*/
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
while (getreg32(STM32_FLASH_SR) & FLASH_SR_BSY)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@
|
|||
#include <assert.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
|
|
@ -49,7 +50,6 @@
|
|||
#include <nuttx/spi/qspi.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "stm32_gpio.h"
|
||||
#include "stm32_dma.h"
|
||||
|
|
@ -62,10 +62,6 @@
|
|||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* QSPI memory synchronization */
|
||||
|
||||
#define MEMORY_SYNC() do { ARM_DSB(); ARM_ISB(); } while (0)
|
||||
|
||||
/* Debug ********************************************************************/
|
||||
|
||||
/* Check if QSPI debug is enabled */
|
||||
|
|
@ -1553,7 +1549,7 @@ static int qspi_memory_dma(struct stm32f7_qspidev_s *priv,
|
|||
|
||||
qspi_waitstatusflags(priv, QSPI_SR_TCF, 1);
|
||||
qspi_waitstatusflags(priv, QSPI_SR_BUSY, 0);
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Dump the sampled DMA registers */
|
||||
|
||||
|
|
@ -2091,7 +2087,7 @@ static int qspi_command(struct qspi_dev_s *dev,
|
|||
/* Wait for the interrupt routine to finish it's magic */
|
||||
|
||||
nxsem_wait(&priv->op_sem);
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Convey the result */
|
||||
|
||||
|
|
@ -2124,7 +2120,7 @@ static int qspi_command(struct qspi_dev_s *dev,
|
|||
ret = qspi_receive_blocking(priv, &xctn);
|
||||
}
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -2249,7 +2245,7 @@ static int qspi_memory(struct qspi_dev_s *dev,
|
|||
/* Wait for the interrupt routine to finish it's magic */
|
||||
|
||||
nxsem_wait(&priv->op_sem);
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* convey the result */
|
||||
|
||||
|
|
@ -2296,7 +2292,7 @@ static int qspi_memory(struct qspi_dev_s *dev,
|
|||
qspi_waitstatusflags(priv, QSPI_SR_TCF, 1);
|
||||
qspi_waitstatusflags(priv, QSPI_SR_BUSY, 0);
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
}
|
||||
|
||||
#else
|
||||
|
|
@ -2327,7 +2323,7 @@ static int qspi_memory(struct qspi_dev_s *dev,
|
|||
qspi_waitstatusflags(priv, QSPI_SR_TCF, 1);
|
||||
qspi_waitstatusflags(priv, QSPI_SR_BUSY, 0);
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -32,12 +32,12 @@
|
|||
|
||||
#include <nuttx/cache.h>
|
||||
#include <nuttx/init.h>
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "nvic.h"
|
||||
#include "mpu.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "stm32_rcc.h"
|
||||
#include "stm32_userspace.h"
|
||||
|
|
@ -122,8 +122,7 @@ static inline void stm32_tcmenable(void)
|
|||
{
|
||||
uint32_t regval;
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
|
||||
/* Enabled/disabled ITCM */
|
||||
|
||||
|
|
@ -149,8 +148,7 @@ static inline void stm32_tcmenable(void)
|
|||
#endif
|
||||
putreg32(regval, NVIC_DTCMCR);
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
|
||||
#ifdef CONFIG_ARMV7M_ITCM
|
||||
/* Copy TCM code from flash to ITCM */
|
||||
|
|
|
|||
|
|
@ -52,9 +52,10 @@
|
|||
# include <nuttx/net/pkt.h>
|
||||
#endif
|
||||
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include <nuttx/cache.h>
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "hardware/stm32_sbs.h"
|
||||
#include "hardware/stm32_pinmap.h"
|
||||
|
|
@ -76,10 +77,6 @@
|
|||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Memory synchronization */
|
||||
|
||||
#define MEMORY_SYNC() do { ARM_DSB(); ARM_ISB(); } while (0)
|
||||
|
||||
/* Configuration ************************************************************/
|
||||
|
||||
/* See boards/arm/stm32/stm3240g-eval/README.txt for an explanation of the
|
||||
|
|
@ -1266,7 +1263,7 @@ static int stm32_transmit(struct stm32_ethmac_s *priv)
|
|||
stm32_disableint(priv, ETH_DMACIER_RIE);
|
||||
}
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Enable TX interrupts */
|
||||
|
||||
|
|
|
|||
|
|
@ -47,8 +47,9 @@
|
|||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/spi/qspi.h>
|
||||
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "stm32_gpio.h"
|
||||
#include "stm32_rcc.h"
|
||||
|
|
@ -64,10 +65,6 @@
|
|||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* QSPI memory synchronization */
|
||||
|
||||
#define MEMORY_SYNC() do { ARM_DSB(); ARM_ISB(); } while (0)
|
||||
|
||||
/* Debug ********************************************************************/
|
||||
|
||||
/* Check if QSPI debug is enabled */
|
||||
|
|
@ -1543,7 +1540,7 @@ static int qspi_memory_dma(struct stm32_qspidev_s *priv,
|
|||
|
||||
qspi_waitstatusflags(priv, QSPI_SR_TCF, 1);
|
||||
qspi_waitstatusflags(priv, QSPI_SR_BUSY, 0);
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Dump the sampled DMA registers */
|
||||
|
||||
|
|
@ -2095,7 +2092,7 @@ static int qspi_command(struct qspi_dev_s *dev,
|
|||
/* Wait for the interrupt routine to finish it's magic */
|
||||
|
||||
nxsem_wait(&priv->op_sem);
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Convey the result */
|
||||
|
||||
|
|
@ -2128,7 +2125,7 @@ static int qspi_command(struct qspi_dev_s *dev,
|
|||
ret = qspi_receive_blocking(priv, &xctn);
|
||||
}
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -2251,7 +2248,7 @@ static int qspi_memory(struct qspi_dev_s *dev,
|
|||
/* Wait for the interrupt routine to finish it's magic */
|
||||
|
||||
nxsem_wait(&priv->op_sem);
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* convey the result */
|
||||
|
||||
|
|
@ -2298,7 +2295,7 @@ static int qspi_memory(struct qspi_dev_s *dev,
|
|||
qspi_waitstatusflags(priv, QSPI_SR_TCF, 1);
|
||||
qspi_waitstatusflags(priv, QSPI_SR_BUSY, 0);
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
}
|
||||
|
||||
#else
|
||||
|
|
@ -2329,7 +2326,7 @@ static int qspi_memory(struct qspi_dev_s *dev,
|
|||
qspi_waitstatusflags(priv, QSPI_SR_TCF, 1);
|
||||
qspi_waitstatusflags(priv, QSPI_SR_BUSY, 0);
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@
|
|||
|
||||
#include <sys/param.h>
|
||||
|
||||
#include <arch/barriers.h>
|
||||
#include <arpa/inet.h>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
|
|
@ -56,7 +57,6 @@
|
|||
|
||||
#include <nuttx/cache.h>
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "hardware/stm32_syscfg.h"
|
||||
#include "hardware/stm32_pinmap.h"
|
||||
|
|
@ -78,10 +78,6 @@
|
|||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Memory synchronization */
|
||||
|
||||
#define MEMORY_SYNC() do { ARM_DSB(); ARM_ISB(); } while (0)
|
||||
|
||||
/* Configuration ************************************************************/
|
||||
|
||||
/* See boards/arm/stm32/stm3240g-eval/README.txt for an explanation of the
|
||||
|
|
@ -1268,7 +1264,7 @@ static int stm32_transmit(struct stm32_ethmac_s *priv)
|
|||
stm32_disableint(priv, ETH_DMACIER_RIE);
|
||||
}
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Enable TX interrupts */
|
||||
|
||||
|
|
|
|||
|
|
@ -26,13 +26,13 @@
|
|||
|
||||
#include <nuttx/config.h>
|
||||
#include <nuttx/arch.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "barriers.h"
|
||||
#include "arm_internal.h"
|
||||
#include "stm32_pwr.h"
|
||||
#include "stm32_gpio.h"
|
||||
|
|
@ -139,7 +139,7 @@ void stm32_pwr_enablebkp(bool writable)
|
|||
bool wait = false;
|
||||
|
||||
flags = enter_critical_section();
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
/* Get the current state of the STM32 PWR control register */
|
||||
|
||||
|
|
@ -175,7 +175,7 @@ void stm32_pwr_enablebkp(bool writable)
|
|||
wait = true;
|
||||
}
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
leave_critical_section(flags);
|
||||
|
||||
if (wait)
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@
|
|||
#include <assert.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
|
|
@ -50,7 +51,6 @@
|
|||
#include <nuttx/spi/qspi.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "stm32_gpio.h"
|
||||
#include "stm32_dma.h"
|
||||
|
|
@ -63,10 +63,6 @@
|
|||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* QSPI memory synchronization */
|
||||
|
||||
#define MEMORY_SYNC() do { ARM_DSB(); ARM_ISB(); } while (0)
|
||||
|
||||
/* Debug ********************************************************************/
|
||||
|
||||
/* Check if QSPI debug is enabled */
|
||||
|
|
@ -1605,7 +1601,7 @@ static int qspi_memory_dma(struct stm32h7_qspidev_s *priv,
|
|||
|
||||
qspi_waitstatusflags(priv, QSPI_SR_TCF, 1);
|
||||
qspi_waitstatusflags(priv, QSPI_SR_BUSY, 0);
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Dump the sampled DMA registers */
|
||||
|
||||
|
|
@ -2145,7 +2141,7 @@ static int qspi_command(struct qspi_dev_s *dev,
|
|||
/* Wait for the interrupt routine to finish it's magic */
|
||||
|
||||
nxsem_wait(&priv->op_sem);
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Convey the result */
|
||||
|
||||
|
|
@ -2178,7 +2174,7 @@ static int qspi_command(struct qspi_dev_s *dev,
|
|||
ret = qspi_receive_blocking(priv, &xctn);
|
||||
}
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -2303,7 +2299,7 @@ static int qspi_memory(struct qspi_dev_s *dev,
|
|||
/* Wait for the interrupt routine to finish it's magic */
|
||||
|
||||
nxsem_wait(&priv->op_sem);
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* convey the result */
|
||||
|
||||
|
|
@ -2350,7 +2346,7 @@ static int qspi_memory(struct qspi_dev_s *dev,
|
|||
qspi_waitstatusflags(priv, QSPI_SR_TCF, 1);
|
||||
qspi_waitstatusflags(priv, QSPI_SR_BUSY, 0);
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
}
|
||||
|
||||
#else
|
||||
|
|
@ -2381,7 +2377,7 @@ static int qspi_memory(struct qspi_dev_s *dev,
|
|||
qspi_waitstatusflags(priv, QSPI_SR_TCF, 1);
|
||||
qspi_waitstatusflags(priv, QSPI_SR_BUSY, 0);
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -32,10 +32,10 @@
|
|||
|
||||
#include <nuttx/cache.h>
|
||||
#include <nuttx/init.h>
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
#include "nvic.h"
|
||||
#include "mpu.h"
|
||||
#ifdef CONFIG_ARM_MPU
|
||||
|
|
@ -131,8 +131,7 @@ static inline void stm32_tcmenable(void)
|
|||
{
|
||||
uint32_t regval;
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
|
||||
/* Enabled/disabled ITCM */
|
||||
|
||||
|
|
@ -158,8 +157,7 @@ static inline void stm32_tcmenable(void)
|
|||
#endif
|
||||
putreg32(regval, NVIC_DTCMCR);
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
|
||||
#ifdef CONFIG_ARMV7M_ITCM
|
||||
/* Copy TCM code from flash to ITCM */
|
||||
|
|
|
|||
|
|
@ -54,13 +54,12 @@
|
|||
#include <nuttx/config.h>
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/mutex.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "barriers.h"
|
||||
|
||||
#include "hardware/stm32_flash.h"
|
||||
#include "arm_internal.h"
|
||||
|
||||
|
|
@ -397,7 +396,7 @@ static int stm32h7_wait_for_last_operation(struct stm32h7_flash_priv_s
|
|||
int i;
|
||||
bool timeout = true;
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
for (i = 0; i < FLASH_TIMEOUT_VALUE; i++)
|
||||
{
|
||||
|
|
@ -878,8 +877,7 @@ ssize_t up_progmem_write(size_t addr, const void *buf, size_t count)
|
|||
fp = (uint32_t *)faddr;
|
||||
rp = ll;
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
|
||||
/* Write 8 32 bit word and wait to complete */
|
||||
|
||||
|
|
@ -897,8 +895,7 @@ ssize_t up_progmem_write(size_t addr, const void *buf, size_t count)
|
|||
* optimization).
|
||||
*/
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
|
||||
if (stm32h7_wait_for_last_operation(priv))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -54,13 +54,12 @@
|
|||
#include <nuttx/config.h>
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/mutex.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "barriers.h"
|
||||
|
||||
#include "hardware/stm32_flash.h"
|
||||
#include "arm_internal.h"
|
||||
|
||||
|
|
@ -371,7 +370,7 @@ static int stm32h7_wait_for_last_operation(struct stm32h7_flash_priv_s
|
|||
int i;
|
||||
bool timeout = true;
|
||||
|
||||
ARM_DSB();
|
||||
UP_DSB();
|
||||
|
||||
for (i = 0; i < FLASH_TIMEOUT_VALUE; i++)
|
||||
{
|
||||
|
|
@ -846,8 +845,7 @@ ssize_t up_progmem_write(size_t addr, const void *buf, size_t count)
|
|||
fp = (uint32_t *)faddr;
|
||||
rp = ll;
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
|
||||
/* Write 4 32 bit word and wait to complete */
|
||||
|
||||
|
|
@ -861,8 +859,7 @@ ssize_t up_progmem_write(size_t addr, const void *buf, size_t count)
|
|||
* optimization).
|
||||
*/
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
UP_MB();
|
||||
|
||||
if (stm32h7_wait_for_last_operation(priv))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@
|
|||
#include <assert.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <arch/barriers.h>
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
|
|
@ -47,7 +48,6 @@
|
|||
#include <nuttx/spi/qspi.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "stm32l4_gpio.h"
|
||||
#include "stm32l4_dma.h"
|
||||
|
|
@ -62,10 +62,6 @@
|
|||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* QSPI memory synchronization */
|
||||
|
||||
#define MEMORY_SYNC() do { ARM_DSB(); ARM_ISB(); } while (0)
|
||||
|
||||
/* Debug ********************************************************************/
|
||||
|
||||
/* Check if QSPI debug is enabled */
|
||||
|
|
@ -1501,7 +1497,7 @@ static int qspi_memory_dma(struct stm32l4_qspidev_s *priv,
|
|||
|
||||
qspi_waitstatusflags(priv, QSPI_SR_TCF, 1);
|
||||
qspi_waitstatusflags(priv, QSPI_SR_BUSY, 0);
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Dump the sampled DMA registers */
|
||||
|
||||
|
|
@ -2039,7 +2035,7 @@ static int qspi_command(struct qspi_dev_s *dev,
|
|||
/* Wait for the interrupt routine to finish it's magic */
|
||||
|
||||
nxsem_wait(&priv->op_sem);
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* Convey the result */
|
||||
|
||||
|
|
@ -2073,7 +2069,7 @@ static int qspi_command(struct qspi_dev_s *dev,
|
|||
ret = qspi_receive_blocking(priv, &xctn);
|
||||
}
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -2198,7 +2194,7 @@ static int qspi_memory(struct qspi_dev_s *dev,
|
|||
/* Wait for the interrupt routine to finish it's magic */
|
||||
|
||||
nxsem_wait(&priv->op_sem);
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
/* convey the result */
|
||||
|
||||
|
|
@ -2245,7 +2241,7 @@ static int qspi_memory(struct qspi_dev_s *dev,
|
|||
qspi_waitstatusflags(priv, QSPI_SR_TCF, 1);
|
||||
qspi_waitstatusflags(priv, QSPI_SR_BUSY, 0);
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
}
|
||||
|
||||
#else
|
||||
|
|
@ -2276,7 +2272,7 @@ static int qspi_memory(struct qspi_dev_s *dev,
|
|||
qspi_waitstatusflags(priv, QSPI_SR_TCF, 1);
|
||||
qspi_waitstatusflags(priv, QSPI_SR_BUSY, 0);
|
||||
|
||||
MEMORY_SYNC();
|
||||
UP_MB();
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -33,10 +33,10 @@
|
|||
#include <sys/boardctl.h>
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/cache.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "nvic.h"
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
|
|
@ -85,7 +85,7 @@ static void cleanup_arm_nvic(void)
|
|||
|
||||
/* Allow any pending interrupts to be recognized */
|
||||
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
cpsid();
|
||||
|
||||
/* Disable all interrupts */
|
||||
|
|
|
|||
|
|
@ -33,10 +33,10 @@
|
|||
#include <sys/boardctl.h>
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/cache.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "nvic.h"
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
|
|
@ -85,7 +85,7 @@ static void cleanup_arm_nvic(void)
|
|||
|
||||
/* Allow any pending interrupts to be recognized */
|
||||
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
cpsid();
|
||||
|
||||
/* Disable all interrupts */
|
||||
|
|
|
|||
|
|
@ -33,10 +33,10 @@
|
|||
#include <sys/boardctl.h>
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/cache.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "nvic.h"
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
|
|
@ -85,7 +85,7 @@ static void cleanup_arm_nvic(void)
|
|||
|
||||
/* Allow any pending interrupts to be recognized */
|
||||
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
cpsid();
|
||||
|
||||
/* Disable all interrupts */
|
||||
|
|
|
|||
|
|
@ -33,10 +33,10 @@
|
|||
#include <sys/boardctl.h>
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/cache.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "nvic.h"
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
|
|
@ -103,7 +103,7 @@ static void cleanup_arm_nvic(void)
|
|||
|
||||
/* Allow any pending interrupts to be recognized */
|
||||
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
cpsid();
|
||||
|
||||
/* Disable all interrupts */
|
||||
|
|
@ -205,7 +205,7 @@ int board_boot_image(const char *path, uint32_t hdr_size)
|
|||
|
||||
__asm__ __volatile__("\tmsr msp_ns, %0\n" : : "r" (vt.spr));
|
||||
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
|
||||
/* Check if reset is valid */
|
||||
|
||||
|
|
|
|||
|
|
@ -33,10 +33,10 @@
|
|||
#include <sys/boardctl.h>
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/cache.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "nvic.h"
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#ifdef CONFIG_ARM_MPU
|
||||
# include "mpu.h"
|
||||
|
|
@ -91,7 +91,7 @@ static void cleanup_arm_nvic(void)
|
|||
|
||||
/* Allow any pending interrupts to be recognized */
|
||||
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
cpsid();
|
||||
|
||||
/* Disable all interrupts */
|
||||
|
|
|
|||
|
|
@ -33,10 +33,10 @@
|
|||
#include <sys/boardctl.h>
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/cache.h>
|
||||
#include <arch/barriers.h>
|
||||
|
||||
#include "nvic.h"
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
|
|
@ -85,7 +85,7 @@ static void cleanup_arm_nvic(void)
|
|||
|
||||
/* Allow any pending interrupts to be recognized */
|
||||
|
||||
ARM_ISB();
|
||||
UP_ISB();
|
||||
cpsid();
|
||||
|
||||
/* Disable all interrupts */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue