1 #ifndef _ASM_X86_TYPES_H 2 #define _ASM_X86_TYPES_H 3 4 #ifndef __ASSEMBLY__ 5 6 typedef unsigned short umode_t; 7 8 /* 9 * __xx is ok: it doesn't pollute the POSIX namespace. Use these in the 10 * header files exported to user space 11 */ 12 13 typedef __signed__ char __s8; 14 typedef unsigned char __u8; 15 16 typedef __signed__ short __s16; 17 typedef unsigned short __u16; 18 19 typedef __signed__ int __s32; 20 typedef unsigned int __u32; 21 22 #ifdef __i386__ 23 # ifdef __GNUC__ 24 __extension__ typedef __signed__ long long __s64; 25 __extension__ typedef unsigned long long __u64; 26 # endif 27 #else 28 typedef __signed__ long long __s64; 29 typedef unsigned long long __u64; 30 #endif 31 32 #endif /* __ASSEMBLY__ */ 33 34 /* 35 * These aren't exported outside the kernel to avoid name space clashes 36 */ 37 #ifdef __KERNEL__ 38 39 #ifdef CONFIG_X86_32 40 # define BITS_PER_LONG 32 41 #else 42 # define BITS_PER_LONG 64 43 #endif 44 45 #ifndef __ASSEMBLY__ 46 47 typedef signed char s8; 48 typedef unsigned char u8; 49 50 typedef signed short s16; 51 typedef unsigned short u16; 52 53 typedef signed int s32; 54 typedef unsigned int u32; 55 56 typedef signed long long s64; 57 typedef unsigned long long u64; 58 59 typedef u64 dma64_addr_t; 60 #if defined(CONFIG_X86_64) || defined(CONFIG_HIGHMEM64G) 61 /* DMA addresses come in 32-bit and 64-bit flavours. */ 62 typedef u64 dma_addr_t; 63 #else 64 typedef u32 dma_addr_t; 65 #endif 66 67 #endif /* __ASSEMBLY__ */ 68 #endif /* __KERNEL__ */ 69 70 #endif 71