• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/arch/score/include/asm/
1#ifndef _ASM_SCORE_IRQFLAGS_H
2#define _ASM_SCORE_IRQFLAGS_H
3
4#ifndef __ASSEMBLY__
5
6#define raw_local_irq_save(x)			\
7{						\
8	__asm__ __volatile__(			\
9		"mfcr	r8, cr0;"		\
10		"li	r9, 0xfffffffe;"	\
11		"nop;"				\
12		"mv	%0, r8;"		\
13		"and	r8, r8, r9;"		\
14		"mtcr	r8, cr0;"		\
15		"nop;"				\
16		"nop;"				\
17		"nop;"				\
18		"nop;"				\
19		"nop;"				\
20		: "=r" (x)			\
21		:				\
22		: "r8", "r9"			\
23		);				\
24}
25
26#define raw_local_irq_restore(x)		\
27{						\
28	__asm__ __volatile__(			\
29		"mfcr	r8, cr0;"		\
30		"ldi	r9, 0x1;"		\
31		"and	%0, %0, r9;"		\
32		"or	r8, r8, %0;"		\
33		"mtcr	r8, cr0;"		\
34		"nop;"				\
35		"nop;"				\
36		"nop;"				\
37		"nop;"				\
38		"nop;"				\
39		:				\
40		: "r"(x)			\
41		: "r8", "r9"			\
42		);				\
43}
44
45#define raw_local_irq_enable(void)		\
46{						\
47	__asm__ __volatile__(			\
48		"mfcr\tr8,cr0;"			\
49		"nop;"				\
50		"nop;"				\
51		"ori\tr8,0x1;"			\
52		"mtcr\tr8,cr0;"			\
53		"nop;"				\
54		"nop;"				\
55		"nop;"				\
56		"nop;"				\
57		"nop;"				\
58		:				\
59		:				\
60		: "r8");			\
61}
62
63#define raw_local_irq_disable(void)		\
64{						\
65	__asm__ __volatile__(			\
66		"mfcr\tr8,cr0;"			\
67		"nop;"				\
68		"nop;"				\
69		"srli\tr8,r8,1;"		\
70		"slli\tr8,r8,1;"		\
71		"mtcr\tr8,cr0;"			\
72		"nop;"				\
73		"nop;"				\
74		"nop;"				\
75		"nop;"				\
76		"nop;"				\
77		:				\
78		:				\
79		: "r8");			\
80}
81
82#define raw_local_save_flags(x)			\
83{						\
84	__asm__ __volatile__(			\
85		"mfcr	r8, cr0;"		\
86		"nop;"				\
87		"nop;"				\
88		"mv	%0, r8;"		\
89		"nop;"				\
90		"nop;"				\
91		"nop;"				\
92		"nop;"				\
93		"nop;"				\
94		"ldi	r9, 0x1;"		\
95		"and	%0, %0, r9;"		\
96		: "=r" (x)			\
97		:				\
98		: "r8", "r9"			\
99		);				\
100}
101
102static inline int raw_irqs_disabled_flags(unsigned long flags)
103{
104	return !(flags & 1);
105}
106
107#endif
108
109#endif /* _ASM_SCORE_IRQFLAGS_H */
110