18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci#ifndef __ASM_SH_BL_BIT_32_H
38c2ecf20Sopenharmony_ci#define __ASM_SH_BL_BIT_32_H
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_cistatic inline void set_bl_bit(void)
68c2ecf20Sopenharmony_ci{
78c2ecf20Sopenharmony_ci	unsigned long __dummy0, __dummy1;
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ci	__asm__ __volatile__ (
108c2ecf20Sopenharmony_ci		"stc	sr, %0\n\t"
118c2ecf20Sopenharmony_ci		"or	%2, %0\n\t"
128c2ecf20Sopenharmony_ci		"and	%3, %0\n\t"
138c2ecf20Sopenharmony_ci		"ldc	%0, sr\n\t"
148c2ecf20Sopenharmony_ci		: "=&r" (__dummy0), "=r" (__dummy1)
158c2ecf20Sopenharmony_ci		: "r" (0x10000000), "r" (0xffffff0f)
168c2ecf20Sopenharmony_ci		: "memory"
178c2ecf20Sopenharmony_ci	);
188c2ecf20Sopenharmony_ci}
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_cistatic inline void clear_bl_bit(void)
218c2ecf20Sopenharmony_ci{
228c2ecf20Sopenharmony_ci	unsigned long __dummy0, __dummy1;
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ci	__asm__ __volatile__ (
258c2ecf20Sopenharmony_ci		"stc	sr, %0\n\t"
268c2ecf20Sopenharmony_ci		"and	%2, %0\n\t"
278c2ecf20Sopenharmony_ci		"ldc	%0, sr\n\t"
288c2ecf20Sopenharmony_ci		: "=&r" (__dummy0), "=r" (__dummy1)
298c2ecf20Sopenharmony_ci		: "1" (~0x10000000)
308c2ecf20Sopenharmony_ci		: "memory"
318c2ecf20Sopenharmony_ci	);
328c2ecf20Sopenharmony_ci}
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ci#endif /* __ASM_SH_BL_BIT_32_H */
35