]> git.proxmox.com Git - mirror_qemu.git/blame - exec-i386.h
more syscalls
[mirror_qemu.git] / exec-i386.h
CommitLineData
7d13299d
FB
1/* i386 execution defines */
2
3typedef unsigned char uint8_t;
4typedef unsigned short uint16_t;
5typedef unsigned int uint32_t;
6typedef unsigned long long uint64_t;
7
8typedef signed char int8_t;
9typedef signed short int16_t;
10typedef signed int int32_t;
11typedef signed long long int64_t;
12
13#define bswap32(x) \
14({ \
15 uint32_t __x = (x); \
16 ((uint32_t)( \
17 (((uint32_t)(__x) & (uint32_t)0x000000ffUL) << 24) | \
18 (((uint32_t)(__x) & (uint32_t)0x0000ff00UL) << 8) | \
19 (((uint32_t)(__x) & (uint32_t)0x00ff0000UL) >> 8) | \
20 (((uint32_t)(__x) & (uint32_t)0xff000000UL) >> 24) )); \
21})
22
23#define NULL 0
24#include <fenv.h>
25
26typedef struct FILE FILE;
27extern FILE *logfile;
28extern int loglevel;
29extern int fprintf(FILE *, const char *, ...);
6dbad63e 30extern int printf(const char *, ...);
7d13299d
FB
31
32#ifdef __i386__
33register unsigned int T0 asm("ebx");
34register unsigned int T1 asm("esi");
35register unsigned int A0 asm("edi");
36register struct CPUX86State *env asm("ebp");
37#endif
38#ifdef __powerpc__
04369ff2
FB
39register unsigned int EAX asm("r16");
40register unsigned int ECX asm("r17");
41register unsigned int EDX asm("r18");
42register unsigned int EBX asm("r19");
43register unsigned int ESP asm("r20");
44register unsigned int EBP asm("r21");
45register unsigned int ESI asm("r22");
46register unsigned int EDI asm("r23");
7d13299d
FB
47register unsigned int T0 asm("r24");
48register unsigned int T1 asm("r25");
49register unsigned int A0 asm("r26");
50register struct CPUX86State *env asm("r27");
04369ff2
FB
51#define USE_INT_TO_FLOAT_HELPERS
52#define reg_EAX
53#define reg_ECX
54#define reg_EDX
55#define reg_EBX
56#define reg_ESP
57#define reg_EBP
58#define reg_ESI
59#define reg_EDI
7d13299d
FB
60#endif
61#ifdef __arm__
62register unsigned int T0 asm("r4");
63register unsigned int T1 asm("r5");
64register unsigned int A0 asm("r6");
65register struct CPUX86State *env asm("r7");
66#endif
67#ifdef __mips__
68register unsigned int T0 asm("s0");
69register unsigned int T1 asm("s1");
70register unsigned int A0 asm("s2");
71register struct CPUX86State *env asm("s3");
72#endif
73#ifdef __sparc__
74register unsigned int T0 asm("l0");
75register unsigned int T1 asm("l1");
76register unsigned int A0 asm("l2");
77register struct CPUX86State *env asm("l3");
78#endif
79
80/* force GCC to generate only one epilog at the end of the function */
81#define FORCE_RET() asm volatile ("");
82
83#ifndef OPPROTO
84#define OPPROTO
85#endif
86
87#define xglue(x, y) x ## y
88#define glue(x, y) xglue(x, y)
89
04369ff2 90#ifndef reg_EAX
7d13299d 91#define EAX (env->regs[R_EAX])
04369ff2
FB
92#endif
93#ifndef reg_ECX
7d13299d 94#define ECX (env->regs[R_ECX])
04369ff2
FB
95#endif
96#ifndef reg_EDX
7d13299d 97#define EDX (env->regs[R_EDX])
04369ff2
FB
98#endif
99#ifndef reg_EBX
7d13299d 100#define EBX (env->regs[R_EBX])
04369ff2
FB
101#endif
102#ifndef reg_ESP
7d13299d 103#define ESP (env->regs[R_ESP])
04369ff2
FB
104#endif
105#ifndef reg_EBP
7d13299d 106#define EBP (env->regs[R_EBP])
04369ff2
FB
107#endif
108#ifndef reg_ESI
7d13299d 109#define ESI (env->regs[R_ESI])
04369ff2
FB
110#endif
111#ifndef reg_EDI
7d13299d 112#define EDI (env->regs[R_EDI])
04369ff2 113#endif
dab2ed99 114#define EIP (env->eip)
7d13299d
FB
115#define DF (env->df)
116
117#define CC_SRC (env->cc_src)
118#define CC_DST (env->cc_dst)
119#define CC_OP (env->cc_op)
120
121/* float macros */
122#define FT0 (env->ft0)
123#define ST0 (env->fpregs[env->fpstt])
124#define ST(n) (env->fpregs[(env->fpstt + (n)) & 7])
125#define ST1 ST(1)
126
127extern int __op_param1, __op_param2, __op_param3;
128#define PARAM1 ((long)(&__op_param1))
129#define PARAM2 ((long)(&__op_param2))
130#define PARAM3 ((long)(&__op_param3))
131
132#include "cpu-i386.h"
133
134typedef struct CCTable {
135 int (*compute_all)(void); /* return all the flags */
136 int (*compute_c)(void); /* return the C flag */
137} CCTable;
138
139extern CCTable cc_table[];
6dbad63e
FB
140
141void load_seg(int seg_reg, int selector);
1b6b029e
FB
142void cpu_lock(void);
143void cpu_unlock(void);
9de5e440
FB
144void raise_exception(int exception_index);
145
146void OPPROTO op_movl_eflags_T0(void);
147void OPPROTO op_movl_T0_eflags(void);