Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
s390
include
asm
irqflags.h
Go to the documentation of this file.
1
/*
2
* Copyright IBM Corp. 2006, 2010
3
* Author(s): Martin Schwidefsky <
[email protected]
>
4
*/
5
6
#ifndef __ASM_IRQFLAGS_H
7
#define __ASM_IRQFLAGS_H
8
9
#include <linux/types.h>
10
11
/* store then OR system mask. */
12
#define __arch_local_irq_stosm(__or) \
13
({ \
14
unsigned long __mask; \
15
asm volatile( \
16
" stosm %0,%1" \
17
: "=Q" (__mask) : "i" (__or) : "memory"); \
18
__mask; \
19
})
20
21
/* store then AND system mask. */
22
#define __arch_local_irq_stnsm(__and) \
23
({ \
24
unsigned long __mask; \
25
asm volatile( \
26
" stnsm %0,%1" \
27
: "=Q" (__mask) : "i" (__and) : "memory"); \
28
__mask; \
29
})
30
31
/* set system mask. */
32
static
inline
notrace
void
__arch_local_irq_ssm(
unsigned
long
flags
)
33
{
34
asm
volatile
(
"ssm %0"
: :
"Q"
(
flags
) :
"memory"
);
35
}
36
37
static
inline
notrace
unsigned
long
arch_local_save_flags
(
void
)
38
{
39
return
__arch_local_irq_stosm
(0x00);
40
}
41
42
static
inline
notrace
unsigned
long
arch_local_irq_save
(
void
)
43
{
44
return
__arch_local_irq_stnsm
(0xfc);
45
}
46
47
static
inline
notrace
void
arch_local_irq_disable
(
void
)
48
{
49
arch_local_irq_save
();
50
}
51
52
static
inline
notrace
void
arch_local_irq_enable
(
void
)
53
{
54
__arch_local_irq_stosm
(0x03);
55
}
56
57
static
inline
notrace
void
arch_local_irq_restore
(
unsigned
long
flags
)
58
{
59
__arch_local_irq_ssm(flags);
60
}
61
62
static
inline
notrace
bool
arch_irqs_disabled_flags
(
unsigned
long
flags
)
63
{
64
return
!(flags & (3
UL
<< (
BITS_PER_LONG
- 8)));
65
}
66
67
static
inline
notrace
bool
arch_irqs_disabled
(
void
)
68
{
69
return
arch_irqs_disabled_flags
(
arch_local_save_flags
());
70
}
71
72
#endif
/* __ASM_IRQFLAGS_H */
Generated on Thu Jan 10 2013 12:49:54 for Linux Kernel by
1.8.2