/* * Common header file for Blackfin family of processors. * * Copyright 2004-2009 Analog Devices Inc. * * Licensed under the GPL-2 or later. */ #ifndef _BLACKFIN_H_ #define _BLACKFIN_H_ #include #ifndef __ASSEMBLY__ /* SSYNC implementation for C file */ static inline void SSYNC(void) { int _tmp; if (ANOMALY_05000312 || ANOMALY_05000244) __asm__ __volatile__( "cli %0;" "nop;" "nop;" "nop;" "ssync;" "sti %0;" : "=d" (_tmp) ); else __asm__ __volatile__("ssync;"); } /* CSYNC implementation for C file */ static inline void CSYNC(void) { int _tmp; if (ANOMALY_05000312 || ANOMALY_05000244) __asm__ __volatile__( "cli %0;" "nop;" "nop;" "nop;" "csync;" "sti %0;" : "=d" (_tmp) ); else __asm__ __volatile__("csync;"); } #else /* __ASSEMBLY__ */ #define LO(con32) ((con32) & 0xFFFF) #define lo(con32) ((con32) & 0xFFFF) #define HI(con32) (((con32) >> 16) & 0xFFFF) #define hi(con32) (((con32) >> 16) & 0xFFFF) /* SSYNC & CSYNC implementations for assembly files */ #define ssync(x) SSYNC(x) #define csync(x) CSYNC(x) #if ANOMALY_05000312 || ANOMALY_05000244 #define SSYNC(scratch) \ cli scratch; \ nop; nop; nop; \ SSYNC; \ sti scratch; #define CSYNC(scratch) \ cli scratch; \ nop; nop; nop; \ CSYNC; \ sti scratch; #else #define SSYNC(scratch) SSYNC; #define CSYNC(scratch) CSYNC; #endif /* ANOMALY_05000312 & ANOMALY_05000244 handling */ #endif /* __ASSEMBLY__ */ #include #include #include #endif /* _BLACKFIN_H_ */