1 /* 2 * Common header file for blackfin family of processors. 3 * 4 */ 5 6 #ifndef _BLACKFIN_H_ 7 #define _BLACKFIN_H_ 8 9 #include <mach/anomaly.h> 10 11 #ifndef __ASSEMBLY__ 12 13 /* SSYNC implementation for C file */ SSYNC(void)14static inline void SSYNC(void) 15 { 16 int _tmp; 17 if (ANOMALY_05000312) 18 __asm__ __volatile__( 19 "cli %0;" 20 "nop;" 21 "nop;" 22 "ssync;" 23 "sti %0;" 24 : "=d" (_tmp) 25 ); 26 else if (ANOMALY_05000244) 27 __asm__ __volatile__( 28 "nop;" 29 "nop;" 30 "nop;" 31 "ssync;" 32 ); 33 else 34 __asm__ __volatile__("ssync;"); 35 } 36 37 /* CSYNC implementation for C file */ CSYNC(void)38static inline void CSYNC(void) 39 { 40 int _tmp; 41 if (ANOMALY_05000312) 42 __asm__ __volatile__( 43 "cli %0;" 44 "nop;" 45 "nop;" 46 "csync;" 47 "sti %0;" 48 : "=d" (_tmp) 49 ); 50 else if (ANOMALY_05000244) 51 __asm__ __volatile__( 52 "nop;" 53 "nop;" 54 "nop;" 55 "csync;" 56 ); 57 else 58 __asm__ __volatile__("csync;"); 59 } 60 61 #else /* __ASSEMBLY__ */ 62 63 #define LO(con32) ((con32) & 0xFFFF) 64 #define lo(con32) ((con32) & 0xFFFF) 65 #define HI(con32) (((con32) >> 16) & 0xFFFF) 66 #define hi(con32) (((con32) >> 16) & 0xFFFF) 67 68 /* SSYNC & CSYNC implementations for assembly files */ 69 70 #define ssync(x) SSYNC(x) 71 #define csync(x) CSYNC(x) 72 73 #if ANOMALY_05000312 74 #define SSYNC(scratch) cli scratch; nop; nop; SSYNC; sti scratch; 75 #define CSYNC(scratch) cli scratch; nop; nop; CSYNC; sti scratch; 76 77 #elif ANOMALY_05000244 78 #define SSYNC(scratch) nop; nop; nop; SSYNC; 79 #define CSYNC(scratch) nop; nop; nop; CSYNC; 80 81 #else 82 #define SSYNC(scratch) SSYNC; 83 #define CSYNC(scratch) CSYNC; 84 85 #endif /* ANOMALY_05000312 & ANOMALY_05000244 handling */ 86 87 #endif /* __ASSEMBLY__ */ 88 89 #include <mach/blackfin.h> 90 #include <asm/bfin-global.h> 91 92 #endif /* _BLACKFIN_H_ */ 93