Blame view

kernel/linux-rt-4.4.41/arch/blackfin/include/asm/blackfin.h 1.55 KB
5113f6f70   김현기   kernel add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
  /*
   * 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 <mach/anomaly.h>
  
  #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 <asm/mem_map.h>
  #include <mach/blackfin.h>
  #include <asm/bfin-global.h>
  
  #endif				/* _BLACKFIN_H_ */