/[qemu]/qemu/exec-i386.h
ViewVC logotype

Diff of /qemu/exec-i386.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.20 by bellard, Mon Jun 9 15:28:45 2003 UTC revision 1.21 by bellard, Sun Jun 15 19:46:57 2003 UTC
# Line 17  Line 17 
17   * License along with this library; if not, write to the Free Software   * License along with this library; if not, write to the Free Software
18   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19   */   */
20  typedef unsigned char uint8_t;  #include "dyngen-exec.h"
 typedef unsigned short uint16_t;  
 typedef unsigned int uint32_t;  
 typedef unsigned long long uint64_t;  
   
 typedef signed char int8_t;  
 typedef signed short int16_t;  
 typedef signed int int32_t;  
 typedef signed long long int64_t;  
   
 #define bswap32(x) \  
 ({ \  
         uint32_t __x = (x); \  
         ((uint32_t)( \  
                 (((uint32_t)(__x) & (uint32_t)0x000000ffUL) << 24) | \  
                 (((uint32_t)(__x) & (uint32_t)0x0000ff00UL) <<  8) | \  
                 (((uint32_t)(__x) & (uint32_t)0x00ff0000UL) >>  8) | \  
                 (((uint32_t)(__x) & (uint32_t)0xff000000UL) >> 24) )); \  
 })  
21    
22  #define NULL 0  /* at least 4 register variables are defines */
23  #include <fenv.h>  register struct CPUX86State *env asm(AREG0);
24    register uint32_t T0 asm(AREG1);
25  typedef struct FILE FILE;  register uint32_t T1 asm(AREG2);
26  extern FILE *logfile;  register uint32_t T2 asm(AREG3);
27  extern int loglevel;  
28  extern int fprintf(FILE *, const char *, ...);  #define A0 T2
29  extern int printf(const char *, ...);  
30    /* if more registers are available, we define some registers too */
31  #ifdef __i386__  #ifdef AREG4
32  register unsigned int T0 asm("ebx");  register uint32_t EAX asm(AREG4);
 register unsigned int T1 asm("esi");  
 register unsigned int A0 asm("edi");  
 register struct CPUX86State *env asm("ebp");  
 #endif  
 #ifdef __powerpc__  
 register unsigned int EAX asm("r16");  
 register unsigned int ECX asm("r17");  
 register unsigned int EDX asm("r18");  
 register unsigned int EBX asm("r19");  
 register unsigned int ESP asm("r20");  
 register unsigned int EBP asm("r21");  
 register unsigned int ESI asm("r22");  
 register unsigned int EDI asm("r23");  
 register unsigned int T0 asm("r24");  
 register unsigned int T1 asm("r25");  
 register unsigned int A0 asm("r26");  
 register struct CPUX86State *env asm("r27");  
 #define USE_INT_TO_FLOAT_HELPERS  
 #define BUGGY_GCC_DIV64  
33  #define reg_EAX  #define reg_EAX
34  #define reg_ECX  #endif
35  #define reg_EDX  
36  #define reg_EBX  #ifdef AREG5
37    register uint32_t ESP asm(AREG5);
38  #define reg_ESP  #define reg_ESP
39    #endif
40    
41    #ifdef AREG6
42    register uint32_t EBP asm(AREG6);
43  #define reg_EBP  #define reg_EBP
 #define reg_ESI  
 #define reg_EDI  
44  #endif  #endif
45  #ifdef __arm__  
46  register unsigned int T0 asm("r4");  #ifdef AREG7
47  register unsigned int T1 asm("r5");  register uint32_t ECX asm(AREG7);
 register unsigned int A0 asm("r6");  
 register struct CPUX86State *env asm("r7");  
 #endif  
 #ifdef __mips__  
 register unsigned int T0 asm("s0");  
 register unsigned int T1 asm("s1");  
 register unsigned int A0 asm("s2");  
 register struct CPUX86State *env asm("s3");  
 #endif  
 #ifdef __sparc__  
 register unsigned int EAX asm("l0");  
 register unsigned int ECX asm("l1");  
 register unsigned int EDX asm("l2");  
 register unsigned int EBX asm("l3");  
 register unsigned int ESP asm("l4");  
 register unsigned int EBP asm("l5");  
 register unsigned int ESI asm("l6");  
 register unsigned int EDI asm("l7");  
 register unsigned int T0 asm("g1");  
 register unsigned int T1 asm("g2");  
 register unsigned int A0 asm("g3");  
 register struct CPUX86State *env asm("g6");  
 #define USE_FP_CONVERT  
 #define reg_EAX  
48  #define reg_ECX  #define reg_ECX
 #define reg_EDX  
 #define reg_EBX  
 #define reg_ESP  
 #define reg_EBP  
 #define reg_ESI  
 #define reg_EDI  
49  #endif  #endif
50  #ifdef __s390__  
51  register unsigned int T0 asm("r7");  #ifdef AREG8
52  register unsigned int T1 asm("r8");  register uint32_t EDX asm(AREG8);
53  register unsigned int A0 asm("r9");  #define reg_EDX
 register struct CPUX86State *env asm("r10");  
 #endif  
 #ifdef __alpha__  
 register unsigned int T0 asm("$9");  
 register unsigned int T1 asm("$10");  
 register unsigned int A0 asm("$11");  
 register unsigned int EAX asm("$12");  
 register unsigned int ESP asm("$13");  
 register unsigned int EBP asm("$14");  
 /* Note $15 is the frame pointer, so anything in op-i386.c that would  
    require a frame pointer, like alloca, would probably loose.  */  
 register struct CPUX86State *env asm("$15");  
 #define reg_EAX  
 #define reg_ESP  
 #define reg_EBP  
54  #endif  #endif
55  #ifdef __ia64__  
56  register unsigned int T0 asm("r24");  #ifdef AREG9
57  register unsigned int T1 asm("r25");  register uint32_t EBX asm(AREG9);
58  register unsigned int A0 asm("r26");  #define reg_EBX
 register struct CPUX86State *env asm("r27");  
59  #endif  #endif
60    
61  /* force GCC to generate only one epilog at the end of the function */  #ifdef AREG10
62  #define FORCE_RET() asm volatile ("");  register uint32_t ESI asm(AREG10);
63    #define reg_ESI
64    #endif
65    
66  #ifndef OPPROTO  #ifdef AREG11
67  #define OPPROTO  register uint32_t EDI asm(AREG11);
68    #define reg_EDI
69  #endif  #endif
70    
71  #define xglue(x, y) x ## y  extern FILE *logfile;
72  #define glue(x, y) xglue(x, y)  extern int loglevel;
73    
74  #ifndef reg_EAX  #ifndef reg_EAX
75  #define EAX (env->regs[R_EAX])  #define EAX (env->regs[R_EAX])
# Line 189  register struct CPUX86State *env asm("r2 Line 112  register struct CPUX86State *env asm("r2
112  #define FP_CONVERT  (env->fp_convert)  #define FP_CONVERT  (env->fp_convert)
113  #endif  #endif
114    
 #ifdef __alpha__  
 /* the symbols are considered non exported so a br immediate is generated */  
 #define __hidden __attribute__((visibility("hidden")))  
 #else  
 #define __hidden  
 #endif  
   
 #ifdef __alpha__  
 /* Suggested by Richard Henderson. This will result in code like  
         ldah $0,__op_param1($29)        !gprelhigh  
         lda $0,__op_param1($0)          !gprellow  
    We can then conveniently change $29 to $31 and adapt the offsets to  
    emit the appropriate constant.  */  
 extern int __op_param1 __hidden;  
 extern int __op_param2 __hidden;  
 extern int __op_param3 __hidden;  
 #define PARAM1 ({ int _r; asm("" : "=r"(_r) : "0" (&__op_param1)); _r; })  
 #define PARAM2 ({ int _r; asm("" : "=r"(_r) : "0" (&__op_param2)); _r; })  
 #define PARAM3 ({ int _r; asm("" : "=r"(_r) : "0" (&__op_param3)); _r; })  
 #else  
 extern int __op_param1, __op_param2, __op_param3;  
 #define PARAM1 ((long)(&__op_param1))  
 #define PARAM2 ((long)(&__op_param2))  
 #define PARAM3 ((long)(&__op_param3))  
 #endif  
 extern int __op_jmp0, __op_jmp1;  
   
115  #include "cpu-i386.h"  #include "cpu-i386.h"
116  #include "exec.h"  #include "exec.h"
117    
# Line 425  void helper_fldenv(uint8_t *ptr, int dat Line 321  void helper_fldenv(uint8_t *ptr, int dat
321  void helper_fsave(uint8_t *ptr, int data32);  void helper_fsave(uint8_t *ptr, int data32);
322  void helper_frstor(uint8_t *ptr, int data32);  void helper_frstor(uint8_t *ptr, int data32);
323    
324    const uint8_t parity_table[256];
325    const uint8_t rclw_table[32];
326    const uint8_t rclb_table[32];

Legend:
Removed from v.1.20  
changed lines
  Added in v.1.21

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26