xref: /linux/arch/sh/include/asm/bl_bit_32.h (revision e839ca528718e68cad32a307dc9aabf01ef3eb05)
1*e839ca52SDavid Howells #ifndef __ASM_SH_BL_BIT_32_H
2*e839ca52SDavid Howells #define __ASM_SH_BL_BIT_32_H
3*e839ca52SDavid Howells 
4*e839ca52SDavid Howells static inline void set_bl_bit(void)
5*e839ca52SDavid Howells {
6*e839ca52SDavid Howells 	unsigned long __dummy0, __dummy1;
7*e839ca52SDavid Howells 
8*e839ca52SDavid Howells 	__asm__ __volatile__ (
9*e839ca52SDavid Howells 		"stc	sr, %0\n\t"
10*e839ca52SDavid Howells 		"or	%2, %0\n\t"
11*e839ca52SDavid Howells 		"and	%3, %0\n\t"
12*e839ca52SDavid Howells 		"ldc	%0, sr\n\t"
13*e839ca52SDavid Howells 		: "=&r" (__dummy0), "=r" (__dummy1)
14*e839ca52SDavid Howells 		: "r" (0x10000000), "r" (0xffffff0f)
15*e839ca52SDavid Howells 		: "memory"
16*e839ca52SDavid Howells 	);
17*e839ca52SDavid Howells }
18*e839ca52SDavid Howells 
19*e839ca52SDavid Howells static inline void clear_bl_bit(void)
20*e839ca52SDavid Howells {
21*e839ca52SDavid Howells 	unsigned long __dummy0, __dummy1;
22*e839ca52SDavid Howells 
23*e839ca52SDavid Howells 	__asm__ __volatile__ (
24*e839ca52SDavid Howells 		"stc	sr, %0\n\t"
25*e839ca52SDavid Howells 		"and	%2, %0\n\t"
26*e839ca52SDavid Howells 		"ldc	%0, sr\n\t"
27*e839ca52SDavid Howells 		: "=&r" (__dummy0), "=r" (__dummy1)
28*e839ca52SDavid Howells 		: "1" (~0x10000000)
29*e839ca52SDavid Howells 		: "memory"
30*e839ca52SDavid Howells 	);
31*e839ca52SDavid Howells }
32*e839ca52SDavid Howells 
33*e839ca52SDavid Howells #endif /* __ASM_SH_BL_BIT_32_H */
34