~vcs-imports/qemu/git

« back to all changes in this revision

Viewing changes to dyngen-exec.h

  • Committer: blueswir1
  • Date: 2007-11-25 08:48:16 UTC
  • Revision ID: git-v1:b76482e76560345c00e7d6c89199ced204a926d2
 Fix buffer mux handling for unconnected serial ports


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3737 c046a42c-6fe2-441c-8c8c-71466251a162

Show diffs side-by-side

added added

removed removed

Lines of Context:
32
32
   host headers do not allow that. */
33
33
#include <stddef.h>
34
34
 
35
 
#ifdef __OpenBSD__
36
 
#include <sys/types.h>
37
 
#else
38
35
typedef unsigned char uint8_t;
39
36
typedef unsigned short uint16_t;
40
37
typedef unsigned int uint32_t;
41
38
// Linux/Sparc64 defines uint64_t
42
 
#if !(defined (__sparc_v9__) && defined(__linux__)) && !(defined(__APPLE__) && defined(__x86_64__))
 
39
#if !(defined (__sparc_v9__) && defined(__linux__))
43
40
/* XXX may be done for all 64 bits targets ? */
44
 
#if defined (__x86_64__) || defined(__ia64) || defined(__s390x__) || defined(__alpha__) || defined(__powerpc64__)
 
41
#if defined (__x86_64__) || defined(__ia64) || defined(__s390x__)
45
42
typedef unsigned long uint64_t;
46
43
#else
47
44
typedef unsigned long long uint64_t;
57
54
typedef signed short int16_t;
58
55
typedef signed int int32_t;
59
56
// Linux/Sparc64 defines int64_t
60
 
#if !(defined (__sparc_v9__) && defined(__linux__)) && !(defined(__APPLE__) && defined(__x86_64__))
61
 
#if defined (__x86_64__) || defined(__ia64) || defined(__s390x__) || defined(__alpha__) || defined(__powerpc64__)
 
57
#if !(defined (__sparc_v9__) && defined(__linux__))
 
58
#if defined (__x86_64__) || defined(__ia64) || defined(__s390x__)
62
59
typedef signed long int64_t;
63
60
#else
64
61
typedef signed long long int64_t;
65
62
#endif
66
63
#endif
67
 
#endif
68
64
 
69
65
/* XXX: This may be wrong for 64-bit ILP32 hosts.  */
70
66
typedef void * host_reg_t;
121
117
#define AREG10 "r22"
122
118
#define AREG11 "r23"
123
119
#endif
 
120
#define USE_INT_TO_FLOAT_HELPERS
 
121
#define BUGGY_GCC_DIV64
124
122
#elif defined(__arm__)
125
123
#define AREG0 "r7"
126
124
#define AREG1 "r4"
127
125
#define AREG2 "r5"
128
126
#define AREG3 "r6"
129
 
#elif defined(__hppa__)
130
 
#define AREG0 "r17"
131
 
#define AREG1 "r14"
132
 
#define AREG2 "r15"
133
 
#define AREG3 "r16"
134
127
#elif defined(__mips__)
135
128
#define AREG0 "fp"
136
129
#define AREG1 "s0"
150
143
#define AREG4 "g6"
151
144
#else
152
145
#ifdef __sparc_v9__
153
 
#define AREG0 "g5"
154
 
#define AREG1 "g6"
155
 
#define AREG2 "g7"
 
146
#define AREG0 "g1"
 
147
#define AREG1 "g4"
 
148
#define AREG2 "g5"
 
149
#define AREG3 "g7"
156
150
#else
157
151
#define AREG0 "g6"
158
152
#define AREG1 "g1"
168
162
#define AREG11 "l7"
169
163
#endif
170
164
#endif
 
165
#define USE_FP_CONVERT
171
166
#elif defined(__s390__)
172
167
#define AREG0 "r10"
173
168
#define AREG1 "r7"
284
279
#elif defined(__mips__)
285
280
#define EXIT_TB() asm volatile ("jr $ra")
286
281
#define GOTO_LABEL_PARAM(n) asm volatile (".set noat; la $1, " ASM_NAME(__op_gen_label) #n "; jr $1; .set at")
287
 
#elif defined(__hppa__)
288
 
#define GOTO_LABEL_PARAM(n) asm volatile ("b,n " ASM_NAME(__op_gen_label) #n)
289
282
#else
290
283
#error unsupported CPU
291
284
#endif
292
285
 
293
 
/* The return address may point to the start of the next instruction.
294
 
   Subtracting one gets us the call instruction itself.  */
295
 
#if defined(__s390__)
296
 
# define GETPC() ((void*)(((unsigned long)__builtin_return_address(0) & 0x7fffffffUL) - 1))
297
 
#elif defined(__arm__)
298
 
/* Thumb return addresses have the low bit set, so we need to subtract two.
299
 
   This is still safe in ARM mode because instructions are 4 bytes.  */
300
 
# define GETPC() ((void *)((unsigned long)__builtin_return_address(0) - 2))
301
 
#else
302
 
# define GETPC() ((void *)((unsigned long)__builtin_return_address(0) - 1))
303
 
#endif
304
 
 
305
286
#endif /* !defined(__DYNGEN_EXEC_H__) */