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