Release 960521
[wine/multimedia.git] / include / registers.h
blob98f28ee3ccc8bb8f39226262fd29ae049cd77dd1
1 /*
2 * Register definitions
4 * Copyright 1995 Alexandre Julliard
5 */
7 #ifndef __WINE_REGISTERS_H
8 #define __WINE_REGISTERS_H
10 #include <windows.h>
11 #include "wine.h"
13 #if !defined(__svr4__) && !defined(_SCO_DS)
15 #define EAX_reg(context) ((context)->sc_eax)
16 #define EBX_reg(context) ((context)->sc_ebx)
17 #define ECX_reg(context) ((context)->sc_ecx)
18 #define EDX_reg(context) ((context)->sc_edx)
19 #define ESI_reg(context) ((context)->sc_esi)
20 #define EDI_reg(context) ((context)->sc_edi)
21 #define EBP_reg(context) ((context)->sc_ebp)
23 #define AX_reg(context) (*(WORD*)&((context)->sc_eax))
24 #define BX_reg(context) (*(WORD*)&((context)->sc_ebx))
25 #define CX_reg(context) (*(WORD*)&((context)->sc_ecx))
26 #define DX_reg(context) (*(WORD*)&((context)->sc_edx))
27 #define SI_reg(context) (*(WORD*)&((context)->sc_esi))
28 #define DI_reg(context) (*(WORD*)&((context)->sc_edi))
29 #define BP_reg(context) (*(WORD*)&((context)->sc_ebp))
31 #define AL_reg(context) (*(BYTE*)(&(context)->sc_eax))
32 #define AH_reg(context) (*(((BYTE*)(&(context)->sc_eax)+1)))
33 #define BL_reg(context) (*(BYTE*)(&(context)->sc_ebx))
34 #define BH_reg(context) (*(((BYTE*)(&(context)->sc_ebx)+1)))
35 #define CL_reg(context) (*(BYTE*)(&(context)->sc_ecx))
36 #define CH_reg(context) (*(((BYTE*)(&(context)->sc_ecx)+1)))
37 #define DL_reg(context) (*(BYTE*)(&(context)->sc_edx))
38 #define DH_reg(context) (*(((BYTE*)(&(context)->sc_edx)+1)))
40 #define CS_reg(context) ((context)->sc_cs)
41 #define DS_reg(context) ((context)->sc_ds)
42 #define ES_reg(context) ((context)->sc_es)
43 #define SS_reg(context) ((context)->sc_ss)
45 #ifdef linux
46 /* fs and gs are not supported on *BSD. Hopefully we won't need them. */
47 #define FS_reg(context) ((context)->sc_fs)
48 #define GS_reg(context) ((context)->sc_gs)
49 #endif
51 #ifndef __FreeBSD__
52 #define EFL_reg(context) ((context)->sc_eflags)
53 #define FL_reg(context) (*(WORD*)(&(context)->sc_eflags))
54 #else
55 #define EFL_reg(context) ((context)->sc_efl)
56 #define FL_reg(context) (*(WORD*)(&(context)->sc_efl))
57 #endif
59 #define EIP_reg(context) ((context)->sc_eip)
60 #define ESP_reg(context) ((context)->sc_esp)
62 #define IP_reg(context) (*(WORD*)(&(context)->sc_eip))
63 #define SP_reg(context) (*(WORD*)(&(context)->sc_esp))
65 #define SET_CFLAG(context) (EFL_reg(context) |= 0x0001)
66 #define RESET_CFLAG(context) (EFL_reg(context) &= 0xfffffffe)
68 #else /* __svr4__ || _SCO_DS */
70 #ifdef _SCO_DS
71 #define gregs regs
72 #endif
74 #define EAX_reg(context) ((context)->uc_mcontext.gregs[EAX])
75 #define EBX_reg(context) ((context)->uc_mcontext.gregs[EBX])
76 #define ECX_reg(context) ((context)->uc_mcontext.gregs[ECX])
77 #define EDX_reg(context) ((context)->uc_mcontext.gregs[EDX])
78 #define ESI_reg(context) ((context)->uc_mcontext.gregs[ESI])
79 #define EDI_reg(context) ((context)->uc_mcontext.gregs[EDI])
80 #define EBP_reg(context) ((context)->uc_mcontext.gregs[EBP])
82 #define AX_reg(context) (*(WORD*)&((context)->uc_mcontext.gregs[EAX]))
83 #define BX_reg(context) (*(WORD*)&((context)->uc_mcontext.gregs[EBX]))
84 #define CX_reg(context) (*(WORD*)&((context)->uc_mcontext.gregs[ECX]))
85 #define DX_reg(context) (*(WORD*)&((context)->uc_mcontext.gregs[EDX]))
86 #define SI_reg(context) (*(WORD*)&((context)->uc_mcontext.gregs[ESI]))
87 #define DI_reg(context) (*(WORD*)&((context)->uc_mcontext.gregs[EDI]))
88 #define BP_reg(context) (*(WORD*)&((context)->uc_mcontext.gregs[EBP]))
90 #define AL_reg(context) (*(BYTE*)(&(context)->uc_mcontext.gregs[EAX]))
91 #define AH_reg(context) (*(((BYTE*)(&(context)->uc_mcontext.gregs[EAX])+1)))
92 #define BL_reg(context) (*(BYTE*)(&(context)->uc_mcontext.gregs[EBX]))
93 #define BH_reg(context) (*(((BYTE*)(&(context)->uc_mcontext.gregs[EBX])+1)))
94 #define CL_reg(context) (*(BYTE*)(&(context)->uc_mcontext.gregs[ECX]))
95 #define CH_reg(context) (*(((BYTE*)(&(context)->uc_mcontext.gregs[ECX])+1)))
96 #define DL_reg(context) (*(BYTE*)(&(context)->uc_mcontext.gregs[EDX]))
97 #define DH_reg(context) (*(((BYTE*)(&(context)->uc_mcontext.gregs[EDX])+1)))
99 #define CS_reg(context) ((context)->uc_mcontext.gregs[CS])
100 #define DS_reg(context) ((context)->uc_mcontext.gregs[DS])
101 #define ES_reg(context) ((context)->uc_mcontext.gregs[ES])
102 #define SS_reg(context) ((context)->uc_mcontext.gregs[SS])
104 #define FS_reg(context) ((context)->uc_mcontext.gregs[FS])
105 #define GS_reg(context) ((context)->uc_mcontext.gregs[GS])
108 #define EFL_reg(context) ((context)->uc_mcontext.gregs[EFL])
109 #define FL_reg(context) (*(WORD*)(&(context)->uc_mcontext.gregs[EFL]))
112 #define EIP_reg(context) ((context)->uc_mcontext.gregs[EIP])
113 #ifdef R_ESP
114 #define ESP_reg(context) ((context)->uc_mcontext.gregs[R_ESP])
115 #else
116 #define ESP_reg(context) ((context)->uc_mcontext.gregs[ESP])
117 #endif
119 #define IP_reg(context) (*(WORD*)(&(context)->uc_mcontext.gregs[EIP]))
120 #ifdef R_ESP
121 #define SP_reg(context) (*(WORD*)(&(context)->uc_mcontext.gregs[R_ESP]))
122 #else
123 #define SP_reg(context) (*(WORD*)(&(context)->uc_mcontext.gregs[ESP]))
124 #endif
126 #define SET_CFLAG(context) (EFL_reg(context) |= 0x0001)
127 #define RESET_CFLAG(context) (EFL_reg(context) &= 0xfffffffe)
129 #endif /* __svr4__ || _SCO_DS */
131 #endif /* __WINE_REGISTERS_H */