aboutsummaryrefslogtreecommitdiffstats
path: root/arch/um/include/asm/system.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/um/include/asm/system.h')
-rw-r--r--arch/um/include/asm/system.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/arch/um/include/asm/system.h b/arch/um/include/asm/system.h
new file mode 100644
index 000000000000..ae5f94d6317d
--- /dev/null
+++ b/arch/um/include/asm/system.h
@@ -0,0 +1,35 @@
1#ifndef __UM_SYSTEM_GENERIC_H
2#define __UM_SYSTEM_GENERIC_H
3
4#include "sysdep/system.h"
5
6extern void *switch_to(void *prev, void *next, void *last);
7
8extern int get_signals(void);
9extern int set_signals(int enable);
10extern int get_signals(void);
11extern void block_signals(void);
12extern void unblock_signals(void);
13
14#define raw_local_save_flags(flags) do { typecheck(unsigned long, flags); \
15 (flags) = get_signals(); } while(0)
16#define raw_local_irq_restore(flags) do { typecheck(unsigned long, flags); \
17 set_signals(flags); } while(0)
18
19#define raw_local_irq_save(flags) do { raw_local_save_flags(flags); \
20 raw_local_irq_disable(); } while(0)
21
22#define raw_local_irq_enable() unblock_signals()
23#define raw_local_irq_disable() block_signals()
24
25#define irqs_disabled() \
26({ \
27 unsigned long flags; \
28 raw_local_save_flags(flags); \
29 (flags == 0); \
30})
31
32extern void *_switch_to(void *prev, void *next, void *last);
33#define switch_to(prev, next, last) prev = _switch_to(prev, next, last)
34
35#endif