3dc3fc228812a3ce22070d8b52705c211b23ea47
[sfrench/cifs-2.6.git] / arch / s390 / include / asm / types.h
1 /*
2  *  include/asm-s390/types.h
3  *
4  *  S390 version
5  *
6  *  Derived from "include/asm-i386/types.h"
7  */
8
9 #ifndef _S390_TYPES_H
10 #define _S390_TYPES_H
11
12 #include <asm-generic/int-ll64.h>
13
14 #ifndef __ASSEMBLY__
15
16 typedef unsigned short umode_t;
17
18 /* A address type so that arithmetic can be done on it & it can be upgraded to
19    64 bit when necessary 
20 */
21 typedef unsigned long addr_t; 
22 typedef __signed__ long saddr_t;
23
24 #endif /* __ASSEMBLY__ */
25
26 /*
27  * These aren't exported outside the kernel to avoid name space clashes
28  */
29 #ifdef __KERNEL__
30
31 #ifndef __s390x__
32 #define BITS_PER_LONG 32
33 #else
34 #define BITS_PER_LONG 64
35 #endif
36
37 #ifndef __ASSEMBLY__
38
39 typedef u64 dma64_addr_t;
40 #ifdef __s390x__
41 /* DMA addresses come in 32-bit and 64-bit flavours. */
42 typedef u64 dma_addr_t;
43 #else
44 typedef u32 dma_addr_t;
45 #endif
46
47 #ifndef __s390x__
48 typedef union {
49         unsigned long long pair;
50         struct {
51                 unsigned long even;
52                 unsigned long odd;
53         } subreg;
54 } register_pair;
55
56 #endif /* ! __s390x__   */
57 #endif /* __ASSEMBLY__  */
58 #endif /* __KERNEL__    */
59 #endif /* _S390_TYPES_H */