20#ifndef _uspi_synchronize_h
21#define _uspi_synchronize_h
44#define InvalidateInstructionCache() \
45 __asm volatile ("mcr p15, 0, %0, c7, c5, 0" : : "r" (0) : "memory")
46#define FlushPrefetchBuffer() __asm volatile ("mcr p15, 0, %0, c7, c5, 4" : : "r" (0) : "memory")
47#define FlushBranchTargetCache() \
48 __asm volatile ("mcr p15, 0, %0, c7, c5, 6" : : "r" (0) : "memory")
49#define InvalidateDataCache() __asm volatile ("mcr p15, 0, %0, c7, c6, 0" : : "r" (0) : "memory")
50#define CleanDataCache() __asm volatile ("mcr p15, 0, %0, c7, c10, 0" : : "r" (0) : "memory")
57#define DataSyncBarrier() __asm volatile ("mcr p15, 0, %0, c7, c10, 4" : : "r" (0) : "memory")
58#define DataMemBarrier() __asm volatile ("mcr p15, 0, %0, c7, c10, 5" : : "r" (0) : "memory")
60#define InstructionSyncBarrier() FlushPrefetchBuffer()
61#define InstructionMemBarrier() FlushPrefetchBuffer()
68#define InvalidateInstructionCache()
70#define FlushPrefetchBuffer() isb_flush()
71#define FlushBranchTargetCache()
79#define DataSyncBarrier() dsb_sy_barrier()
80#define DataMemBarrier() dmb_sy()
82#define InstructionSyncBarrier() isb_flush();
83#define InstructionMemBarrier() isb_flush();
97#define DataSyncBarrier() __asm volatile ("dsb sy" ::: "memory")
98#define DataMemBarrier() __asm volatile ("dmb sy" ::: "memory")
102#define CompilerBarrier() __asm volatile ("" ::: "memory")
uint64_t u64
Definition kernel.h:23
uint32_t u32
Definition kernel.h:22
#define MAXOPT
Definition macros.h:26
void uspi_EnterCritical(void)
Definition synchronize.c:36
void uspi_LeaveCritical(void)
Definition synchronize.c:56
void uspi_CleanAndInvalidateDataCacheRange(u32 nAddress, u32 nLength)
Definition synchronize.c:123