RPA Toolkit
2581217e7a0c71de786ca8a7bd9155ff19b34a9b
[rpatk.git] / arch / windows / i386 / rtypes.h
1 #ifndef _RTYPES_H_
2 #define _RTYPES_H_
3 #include <windows.h>
4
5 /* 
6  * Architecture dependent types. These types have to be redefined
7  * for every architecture
8  */
9 typedef signed char rint8;
10 typedef unsigned char ruint8;
11 typedef signed short rint16;
12 typedef unsigned short ruint16;
13 typedef signed int rint32;
14 typedef unsigned int ruint32;
15 typedef signed long long rint64;
16 typedef unsigned long long ruint64;
17 typedef long ratomic_t;
18 typedef unsigned long ruword;
19 typedef long rword;
20
21 /*
22  * Common types. These types should be the same for most of the architectures.
23  */
24 typedef int rboolean;
25 typedef void *rpointer;
26 typedef const void *rconstpointer;
27 typedef struct {ruint32 p1; ruint32 p2;} rpair_t;
28
29 /*
30  * Atomic operations (Architecture Dependent)
31  */
32 #define R_ATOMIC_CMPXCHG(ptr, oldval, newval, res) \
33                 do { res = InterlockedCompareExchange (ptr, newval, oldval); } while (0)
34
35 #define R_ATOMIC_XCHG(ptr, val) \
36                 do { val = InterlockedExchange (ptr, val); } while (0)
37
38 #define R_ATOMIC_ADD(ptr, val) \
39                 do { InterlockedExchangeAdd (ptr, val); } while (0)
40
41 #define R_ATOMIC_SUB(ptr, val) \
42                 do { InterlockedExchangeSubtract (ptr, val); } while (0)
43
44 #define R_ATOMIC_GET(ptr, res) \
45         do { res = *ptr; } while (0)
46
47 #define R_ATOMIC_SET(ptr, val) \
48         do { *ptr = val; } while (0)
49
50
51 #define R_DEBUG_BRAKE do { __asm int 3 } while (0)
52 #define R_ASSERT(__a__) do {if (!(__a__)) R_DEBUG_BRAKE; } while (0)
53 #define R_SIZE_ALIGN(s, n) ((((s) + (n) - 1) / (n)) * (n))
54 #define R_MIN(a, b) ((a) < (b) ? (a): (b))
55 #define R_MAX(a, b) ((a) > (b) ? (a): (b))
56
57 #ifndef NULL
58 #ifdef __cplusplus
59 #define NULL 0
60 #else
61 #define NULL ((rpointer)0)
62 #endif
63 #endif
64
65 #ifndef TRUE
66 #define TRUE ((rboolean)1)
67 #endif
68
69 #ifndef FALSE
70 #define FALSE ((rboolean)0)
71 #endif
72
73
74 typedef enum {
75         RVALSET_NONE = 0,
76         RVALSET_OR,
77         RVALSET_XOR,
78         RVALSET_AND,
79 } rvalset_t;
80
81
82 #endif
83