162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci#ifndef __ASM_SH_BL_BIT_32_H
362306a36Sopenharmony_ci#define __ASM_SH_BL_BIT_32_H
462306a36Sopenharmony_ci
562306a36Sopenharmony_cistatic inline void set_bl_bit(void)
662306a36Sopenharmony_ci{
762306a36Sopenharmony_ci	unsigned long __dummy0, __dummy1;
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci	__asm__ __volatile__ (
1062306a36Sopenharmony_ci		"stc	sr, %0\n\t"
1162306a36Sopenharmony_ci		"or	%2, %0\n\t"
1262306a36Sopenharmony_ci		"and	%3, %0\n\t"
1362306a36Sopenharmony_ci		"ldc	%0, sr\n\t"
1462306a36Sopenharmony_ci		: "=&r" (__dummy0), "=r" (__dummy1)
1562306a36Sopenharmony_ci		: "r" (0x10000000), "r" (0xffffff0f)
1662306a36Sopenharmony_ci		: "memory"
1762306a36Sopenharmony_ci	);
1862306a36Sopenharmony_ci}
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_cistatic inline void clear_bl_bit(void)
2162306a36Sopenharmony_ci{
2262306a36Sopenharmony_ci	unsigned long __dummy0, __dummy1;
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci	__asm__ __volatile__ (
2562306a36Sopenharmony_ci		"stc	sr, %0\n\t"
2662306a36Sopenharmony_ci		"and	%2, %0\n\t"
2762306a36Sopenharmony_ci		"ldc	%0, sr\n\t"
2862306a36Sopenharmony_ci		: "=&r" (__dummy0), "=r" (__dummy1)
2962306a36Sopenharmony_ci		: "1" (~0x10000000)
3062306a36Sopenharmony_ci		: "memory"
3162306a36Sopenharmony_ci	);
3262306a36Sopenharmony_ci}
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci#endif /* __ASM_SH_BL_BIT_32_H */
35