MSI cleanup and IRQ routing
[akaros.git] / kern / arch / x86 / types.h
1 #ifndef ROS_INC_TYPES_H
2 #define ROS_INC_TYPES_H
3
4 #include <stddef.h>
5 #ifndef LITTLE_ENDIAN
6 #define LITTLE_ENDIAN
7 #endif /* !LITTLE_ENDIAN */
8
9 //Constants for byte sizes
10 #define ONE_KILOBYTE  (1L<<10)
11 #define ONE_MEGABYTE  (1L<<20)
12 #define ONE_GIGABYTE  (1L<<30)
13
14 // Explicitly-sized versions of integer types
15 typedef __signed char int8_t;
16 typedef unsigned char uint8_t;
17 typedef short int16_t;
18 typedef unsigned short uint16_t;
19 typedef int int32_t;
20 typedef unsigned int uint32_t;
21 typedef long long int64_t;
22 typedef unsigned long long uint64_t;
23
24 typedef long ssize_t;
25 typedef int pid_t;
26 typedef int uid_t;
27 typedef int gid_t;
28
29 #ifdef CONFIG_X86_64
30
31 #define NUM_ADDR_BITS 64
32 #define BITS_PER_LONG 64
33 #define MAX_VADDR     ((uint64_t)(~0) >> (64-NUM_ADDR_BITS))
34 typedef uint64_t uintptr_t;
35 #define PAGE_SHIFT 12
36 #define PAGE_SIZE (1<<PAGE_SHIFT)
37 #define PAGE_MASK 0xFFFFFFFFfffff000
38 #else /* 32 bit */
39
40 #define NUM_ADDR_BITS 32
41 #define BITS_PER_LONG 32
42 #define MAX_VADDR     ((uint64_t)(~0) >> (64-NUM_ADDR_BITS))
43 typedef uint32_t uintptr_t;
44
45 #define PAGE_SHIFT 12
46 #define PAGE_SIZE (1<<PAGE_SHIFT)
47 #define PAGE_MASK 0xFFFFF000
48 #endif /* 64bit / 32bit */
49
50
51 #endif /* !ROS_INC_TYPES_H */