asm-generic: introduce asm/bitsperlong.h
[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 __ASSEMBLY__
32
33 typedef u64 dma64_addr_t;
34 #ifdef __s390x__
35 /* DMA addresses come in 32-bit and 64-bit flavours. */
36 typedef u64 dma_addr_t;
37 #else
38 typedef u32 dma_addr_t;
39 #endif
40
41 #ifndef __s390x__
42 typedef union {
43         unsigned long long pair;
44         struct {
45                 unsigned long even;
46                 unsigned long odd;
47         } subreg;
48 } register_pair;
49
50 #endif /* ! __s390x__   */
51 #endif /* __ASSEMBLY__  */
52 #endif /* __KERNEL__    */
53 #endif /* _S390_TYPES_H */