165e62974a8a6157140259b26e7156e39f53031b6Jeff Dike#ifndef __UM_IRQFLAGS_H
265e62974a8a6157140259b26e7156e39f53031b6Jeff Dike#define __UM_IRQFLAGS_H
365e62974a8a6157140259b26e7156e39f53031b6Jeff Dike
4a34978cbd977ab62c744f63daacd9dc1474482beAl Viroextern int get_signals(void);
5a34978cbd977ab62c744f63daacd9dc1474482beAl Viroextern int set_signals(int enable);
6a34978cbd977ab62c744f63daacd9dc1474482beAl Viroextern void block_signals(void);
7a34978cbd977ab62c744f63daacd9dc1474482beAl Viroextern void unblock_signals(void);
8a34978cbd977ab62c744f63daacd9dc1474482beAl Viro
9a34978cbd977ab62c744f63daacd9dc1474482beAl Virostatic inline unsigned long arch_local_save_flags(void)
10a34978cbd977ab62c744f63daacd9dc1474482beAl Viro{
11a34978cbd977ab62c744f63daacd9dc1474482beAl Viro	return get_signals();
12a34978cbd977ab62c744f63daacd9dc1474482beAl Viro}
13a34978cbd977ab62c744f63daacd9dc1474482beAl Viro
14a34978cbd977ab62c744f63daacd9dc1474482beAl Virostatic inline void arch_local_irq_restore(unsigned long flags)
15a34978cbd977ab62c744f63daacd9dc1474482beAl Viro{
16a34978cbd977ab62c744f63daacd9dc1474482beAl Viro	set_signals(flags);
17a34978cbd977ab62c744f63daacd9dc1474482beAl Viro}
18a34978cbd977ab62c744f63daacd9dc1474482beAl Viro
19a34978cbd977ab62c744f63daacd9dc1474482beAl Virostatic inline void arch_local_irq_enable(void)
20a34978cbd977ab62c744f63daacd9dc1474482beAl Viro{
21a34978cbd977ab62c744f63daacd9dc1474482beAl Viro	unblock_signals();
22a34978cbd977ab62c744f63daacd9dc1474482beAl Viro}
23a34978cbd977ab62c744f63daacd9dc1474482beAl Viro
24a34978cbd977ab62c744f63daacd9dc1474482beAl Virostatic inline void arch_local_irq_disable(void)
25a34978cbd977ab62c744f63daacd9dc1474482beAl Viro{
26a34978cbd977ab62c744f63daacd9dc1474482beAl Viro	block_signals();
27a34978cbd977ab62c744f63daacd9dc1474482beAl Viro}
28a34978cbd977ab62c744f63daacd9dc1474482beAl Viro
29a34978cbd977ab62c744f63daacd9dc1474482beAl Virostatic inline unsigned long arch_local_irq_save(void)
30a34978cbd977ab62c744f63daacd9dc1474482beAl Viro{
31a34978cbd977ab62c744f63daacd9dc1474482beAl Viro	unsigned long flags;
32a34978cbd977ab62c744f63daacd9dc1474482beAl Viro	flags = arch_local_save_flags();
33a34978cbd977ab62c744f63daacd9dc1474482beAl Viro	arch_local_irq_disable();
34a34978cbd977ab62c744f63daacd9dc1474482beAl Viro	return flags;
35a34978cbd977ab62c744f63daacd9dc1474482beAl Viro}
36a34978cbd977ab62c744f63daacd9dc1474482beAl Viro
37a34978cbd977ab62c744f63daacd9dc1474482beAl Virostatic inline bool arch_irqs_disabled(void)
38a34978cbd977ab62c744f63daacd9dc1474482beAl Viro{
39a34978cbd977ab62c744f63daacd9dc1474482beAl Viro	return arch_local_save_flags() == 0;
40a34978cbd977ab62c744f63daacd9dc1474482beAl Viro}
4165e62974a8a6157140259b26e7156e39f53031b6Jeff Dike
4265e62974a8a6157140259b26e7156e39f53031b6Jeff Dike#endif
43