/[qemu]/qemu/target-i386/ops_template.h
ViewVC logotype

Diff of /qemu/target-i386/ops_template.h

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

revision 1.7 by bellard, Sun May 16 15:56:04 2004 UTC revision 1.8 by bellard, Mon Jan 3 23:50:08 2005 UTC
# Line 20  Line 20 
20   */   */
21  #define DATA_BITS (1 << (3 + SHIFT))  #define DATA_BITS (1 << (3 + SHIFT))
22  #define SHIFT_MASK (DATA_BITS - 1)  #define SHIFT_MASK (DATA_BITS - 1)
23  #define SIGN_MASK (1 << (DATA_BITS - 1))  #define SIGN_MASK (((target_ulong)1) << (DATA_BITS - 1))
24    #if DATA_BITS <= 32
25    #define SHIFT1_MASK 0x1f
26    #else
27    #define SHIFT1_MASK 0x3f
28    #endif
29    
30  #if DATA_BITS == 8  #if DATA_BITS == 8
31  #define SUFFIX b  #define SUFFIX b
# Line 37  Line 42 
42  #define DATA_TYPE uint32_t  #define DATA_TYPE uint32_t
43  #define DATA_STYPE int32_t  #define DATA_STYPE int32_t
44  #define DATA_MASK 0xffffffff  #define DATA_MASK 0xffffffff
45    #elif DATA_BITS == 64
46    #define SUFFIX q
47    #define DATA_TYPE uint64_t
48    #define DATA_STYPE int64_t
49    #define DATA_MASK 0xffffffffffffffff
50  #else  #else
51  #error unhandled operand size  #error unhandled operand size
52  #endif  #endif
# Line 46  Line 56 
56  static int glue(compute_all_add, SUFFIX)(void)  static int glue(compute_all_add, SUFFIX)(void)
57  {  {
58      int cf, pf, af, zf, sf, of;      int cf, pf, af, zf, sf, of;
59      int src1, src2;      target_long src1, src2;
60      src1 = CC_SRC;      src1 = CC_SRC;
61      src2 = CC_DST - CC_SRC;      src2 = CC_DST - CC_SRC;
62      cf = (DATA_TYPE)CC_DST < (DATA_TYPE)src1;      cf = (DATA_TYPE)CC_DST < (DATA_TYPE)src1;
# Line 60  static int glue(compute_all_add, SUFFIX) Line 70  static int glue(compute_all_add, SUFFIX)
70    
71  static int glue(compute_c_add, SUFFIX)(void)  static int glue(compute_c_add, SUFFIX)(void)
72  {  {
73      int src1, cf;      int cf;
74        target_long src1;
75      src1 = CC_SRC;      src1 = CC_SRC;
76      cf = (DATA_TYPE)CC_DST < (DATA_TYPE)src1;      cf = (DATA_TYPE)CC_DST < (DATA_TYPE)src1;
77      return cf;      return cf;
# Line 69  static int glue(compute_c_add, SUFFIX)(v Line 80  static int glue(compute_c_add, SUFFIX)(v
80  static int glue(compute_all_adc, SUFFIX)(void)  static int glue(compute_all_adc, SUFFIX)(void)
81  {  {
82      int cf, pf, af, zf, sf, of;      int cf, pf, af, zf, sf, of;
83      int src1, src2;      target_long src1, src2;
84      src1 = CC_SRC;      src1 = CC_SRC;
85      src2 = CC_DST - CC_SRC - 1;      src2 = CC_DST - CC_SRC - 1;
86      cf = (DATA_TYPE)CC_DST <= (DATA_TYPE)src1;      cf = (DATA_TYPE)CC_DST <= (DATA_TYPE)src1;
# Line 83  static int glue(compute_all_adc, SUFFIX) Line 94  static int glue(compute_all_adc, SUFFIX)
94    
95  static int glue(compute_c_adc, SUFFIX)(void)  static int glue(compute_c_adc, SUFFIX)(void)
96  {  {
97      int src1, cf;      int cf;
98        target_long src1;
99      src1 = CC_SRC;      src1 = CC_SRC;
100      cf = (DATA_TYPE)CC_DST <= (DATA_TYPE)src1;      cf = (DATA_TYPE)CC_DST <= (DATA_TYPE)src1;
101      return cf;      return cf;
# Line 92  static int glue(compute_c_adc, SUFFIX)(v Line 104  static int glue(compute_c_adc, SUFFIX)(v
104  static int glue(compute_all_sub, SUFFIX)(void)  static int glue(compute_all_sub, SUFFIX)(void)
105  {  {
106      int cf, pf, af, zf, sf, of;      int cf, pf, af, zf, sf, of;
107      int src1, src2;      target_long src1, src2;
108      src1 = CC_DST + CC_SRC;      src1 = CC_DST + CC_SRC;
109      src2 = CC_SRC;      src2 = CC_SRC;
110      cf = (DATA_TYPE)src1 < (DATA_TYPE)src2;      cf = (DATA_TYPE)src1 < (DATA_TYPE)src2;
# Line 106  static int glue(compute_all_sub, SUFFIX) Line 118  static int glue(compute_all_sub, SUFFIX)
118    
119  static int glue(compute_c_sub, SUFFIX)(void)  static int glue(compute_c_sub, SUFFIX)(void)
120  {  {
121      int src1, src2, cf;      int cf;
122        target_long src1, src2;
123      src1 = CC_DST + CC_SRC;      src1 = CC_DST + CC_SRC;
124      src2 = CC_SRC;      src2 = CC_SRC;
125      cf = (DATA_TYPE)src1 < (DATA_TYPE)src2;      cf = (DATA_TYPE)src1 < (DATA_TYPE)src2;
# Line 116  static int glue(compute_c_sub, SUFFIX)(v Line 129  static int glue(compute_c_sub, SUFFIX)(v
129  static int glue(compute_all_sbb, SUFFIX)(void)  static int glue(compute_all_sbb, SUFFIX)(void)
130  {  {
131      int cf, pf, af, zf, sf, of;      int cf, pf, af, zf, sf, of;
132      int src1, src2;      target_long src1, src2;
133      src1 = CC_DST + CC_SRC + 1;      src1 = CC_DST + CC_SRC + 1;
134      src2 = CC_SRC;      src2 = CC_SRC;
135      cf = (DATA_TYPE)src1 <= (DATA_TYPE)src2;      cf = (DATA_TYPE)src1 <= (DATA_TYPE)src2;
# Line 130  static int glue(compute_all_sbb, SUFFIX) Line 143  static int glue(compute_all_sbb, SUFFIX)
143    
144  static int glue(compute_c_sbb, SUFFIX)(void)  static int glue(compute_c_sbb, SUFFIX)(void)
145  {  {
146      int src1, src2, cf;      int cf;
147        target_long src1, src2;
148      src1 = CC_DST + CC_SRC + 1;      src1 = CC_DST + CC_SRC + 1;
149      src2 = CC_SRC;      src2 = CC_SRC;
150      cf = (DATA_TYPE)src1 <= (DATA_TYPE)src2;      cf = (DATA_TYPE)src1 <= (DATA_TYPE)src2;
# Line 157  static int glue(compute_c_logic, SUFFIX) Line 171  static int glue(compute_c_logic, SUFFIX)
171  static int glue(compute_all_inc, SUFFIX)(void)  static int glue(compute_all_inc, SUFFIX)(void)
172  {  {
173      int cf, pf, af, zf, sf, of;      int cf, pf, af, zf, sf, of;
174      int src1, src2;      target_long src1, src2;
175      src1 = CC_DST - 1;      src1 = CC_DST - 1;
176      src2 = 1;      src2 = 1;
177      cf = CC_SRC;      cf = CC_SRC;
# Line 179  static int glue(compute_c_inc, SUFFIX)(v Line 193  static int glue(compute_c_inc, SUFFIX)(v
193  static int glue(compute_all_dec, SUFFIX)(void)  static int glue(compute_all_dec, SUFFIX)(void)
194  {  {
195      int cf, pf, af, zf, sf, of;      int cf, pf, af, zf, sf, of;
196      int src1, src2;      target_long src1, src2;
197      src1 = CC_DST + 1;      src1 = CC_DST + 1;
198      src2 = 1;      src2 = 1;
199      cf = CC_SRC;      cf = CC_SRC;
# Line 187  static int glue(compute_all_dec, SUFFIX) Line 201  static int glue(compute_all_dec, SUFFIX)
201      af = (CC_DST ^ src1 ^ src2) & 0x10;      af = (CC_DST ^ src1 ^ src2) & 0x10;
202      zf = ((DATA_TYPE)CC_DST == 0) << 6;      zf = ((DATA_TYPE)CC_DST == 0) << 6;
203      sf = lshift(CC_DST, 8 - DATA_BITS) & 0x80;      sf = lshift(CC_DST, 8 - DATA_BITS) & 0x80;
204      of = ((CC_DST & DATA_MASK) == ((uint32_t)SIGN_MASK - 1)) << 11;      of = ((CC_DST & DATA_MASK) == ((target_ulong)SIGN_MASK - 1)) << 11;
205      return cf | pf | af | zf | sf | of;      return cf | pf | af | zf | sf | of;
206  }  }
207    
# Line 256  static int glue(compute_all_mul, SUFFIX) Line 270  static int glue(compute_all_mul, SUFFIX)
270    
271  void OPPROTO glue(op_jb_sub, SUFFIX)(void)  void OPPROTO glue(op_jb_sub, SUFFIX)(void)
272  {  {
273      int src1, src2;      target_long src1, src2;
274      src1 = CC_DST + CC_SRC;      src1 = CC_DST + CC_SRC;
275      src2 = CC_SRC;      src2 = CC_SRC;
276    
277      if ((DATA_TYPE)src1 < (DATA_TYPE)src2)      if ((DATA_TYPE)src1 < (DATA_TYPE)src2)
278          JUMP_TB(glue(op_jb_sub, SUFFIX), PARAM1, 0, PARAM2);          GOTO_LABEL_PARAM(1);
     else  
         JUMP_TB(glue(op_jb_sub, SUFFIX), PARAM1, 1, PARAM3);  
279      FORCE_RET();      FORCE_RET();
280  }  }
281    
282  void OPPROTO glue(op_jz_sub, SUFFIX)(void)  void OPPROTO glue(op_jz_sub, SUFFIX)(void)
283  {  {
284      if ((DATA_TYPE)CC_DST == 0)      if ((DATA_TYPE)CC_DST == 0)
285          JUMP_TB(glue(op_jz_sub, SUFFIX), PARAM1, 0, PARAM2);          GOTO_LABEL_PARAM(1);
286      else      FORCE_RET();
287          JUMP_TB(glue(op_jz_sub, SUFFIX), PARAM1, 1, PARAM3);  }
288    
289    void OPPROTO glue(op_jnz_sub, SUFFIX)(void)
290    {
291        if ((DATA_TYPE)CC_DST != 0)
292            GOTO_LABEL_PARAM(1);
293      FORCE_RET();      FORCE_RET();
294  }  }
295    
296  void OPPROTO glue(op_jbe_sub, SUFFIX)(void)  void OPPROTO glue(op_jbe_sub, SUFFIX)(void)
297  {  {
298      int src1, src2;      target_long src1, src2;
299      src1 = CC_DST + CC_SRC;      src1 = CC_DST + CC_SRC;
300      src2 = CC_SRC;      src2 = CC_SRC;
301    
302      if ((DATA_TYPE)src1 <= (DATA_TYPE)src2)      if ((DATA_TYPE)src1 <= (DATA_TYPE)src2)
303          JUMP_TB(glue(op_jbe_sub, SUFFIX), PARAM1, 0, PARAM2);          GOTO_LABEL_PARAM(1);
     else  
         JUMP_TB(glue(op_jbe_sub, SUFFIX), PARAM1, 1, PARAM3);  
304      FORCE_RET();      FORCE_RET();
305  }  }
306    
307  void OPPROTO glue(op_js_sub, SUFFIX)(void)  void OPPROTO glue(op_js_sub, SUFFIX)(void)
308  {  {
309      if (CC_DST & SIGN_MASK)      if (CC_DST & SIGN_MASK)
310          JUMP_TB(glue(op_js_sub, SUFFIX), PARAM1, 0, PARAM2);          GOTO_LABEL_PARAM(1);
     else  
         JUMP_TB(glue(op_js_sub, SUFFIX), PARAM1, 1, PARAM3);  
311      FORCE_RET();      FORCE_RET();
312  }  }
313    
314  void OPPROTO glue(op_jl_sub, SUFFIX)(void)  void OPPROTO glue(op_jl_sub, SUFFIX)(void)
315  {  {
316      int src1, src2;      target_long src1, src2;
317      src1 = CC_DST + CC_SRC;      src1 = CC_DST + CC_SRC;
318      src2 = CC_SRC;      src2 = CC_SRC;
319    
320      if ((DATA_STYPE)src1 < (DATA_STYPE)src2)      if ((DATA_STYPE)src1 < (DATA_STYPE)src2)
321          JUMP_TB(glue(op_jl_sub, SUFFIX), PARAM1, 0, PARAM2);          GOTO_LABEL_PARAM(1);
     else  
         JUMP_TB(glue(op_jl_sub, SUFFIX), PARAM1, 1, PARAM3);  
322      FORCE_RET();      FORCE_RET();
323  }  }
324    
325  void OPPROTO glue(op_jle_sub, SUFFIX)(void)  void OPPROTO glue(op_jle_sub, SUFFIX)(void)
326  {  {
327      int src1, src2;      target_long src1, src2;
328      src1 = CC_DST + CC_SRC;      src1 = CC_DST + CC_SRC;
329      src2 = CC_SRC;      src2 = CC_SRC;
330    
331      if ((DATA_STYPE)src1 <= (DATA_STYPE)src2)      if ((DATA_STYPE)src1 <= (DATA_STYPE)src2)
332          JUMP_TB(glue(op_jle_sub, SUFFIX), PARAM1, 0, PARAM2);          GOTO_LABEL_PARAM(1);
     else  
         JUMP_TB(glue(op_jle_sub, SUFFIX), PARAM1, 1, PARAM3);  
333      FORCE_RET();      FORCE_RET();
334  }  }
335    
# Line 330  void OPPROTO glue(op_jle_sub, SUFFIX)(vo Line 339  void OPPROTO glue(op_jle_sub, SUFFIX)(vo
339    
340  void OPPROTO glue(op_loopnz, SUFFIX)(void)  void OPPROTO glue(op_loopnz, SUFFIX)(void)
341  {  {
     unsigned int tmp;  
342      int eflags;      int eflags;
343      eflags = cc_table[CC_OP].compute_all();      eflags = cc_table[CC_OP].compute_all();
344      tmp = (ECX - 1) & DATA_MASK;      if ((DATA_TYPE)ECX != 0 && !(eflags & CC_Z))
345      ECX = (ECX & ~DATA_MASK) | tmp;          GOTO_LABEL_PARAM(1);
     if (tmp != 0 && !(eflags & CC_Z))  
         EIP = PARAM1;  
     else  
         EIP = PARAM2;  
346      FORCE_RET();      FORCE_RET();
347  }  }
348    
349  void OPPROTO glue(op_loopz, SUFFIX)(void)  void OPPROTO glue(op_loopz, SUFFIX)(void)
350  {  {
     unsigned int tmp;  
351      int eflags;      int eflags;
352      eflags = cc_table[CC_OP].compute_all();      eflags = cc_table[CC_OP].compute_all();
353      tmp = (ECX - 1) & DATA_MASK;      if ((DATA_TYPE)ECX != 0 && (eflags & CC_Z))
354      ECX = (ECX & ~DATA_MASK) | tmp;          GOTO_LABEL_PARAM(1);
     if (tmp != 0 && (eflags & CC_Z))  
         EIP = PARAM1;  
     else  
         EIP = PARAM2;  
355      FORCE_RET();      FORCE_RET();
356  }  }
357    
358  void OPPROTO glue(op_loop, SUFFIX)(void)  void OPPROTO glue(op_jz_ecx, SUFFIX)(void)
359  {  {
360      unsigned int tmp;      if ((DATA_TYPE)ECX == 0)
361      tmp = (ECX - 1) & DATA_MASK;          GOTO_LABEL_PARAM(1);
     ECX = (ECX & ~DATA_MASK) | tmp;  
     if (tmp != 0)  
         EIP = PARAM1;  
     else  
         EIP = PARAM2;  
362      FORCE_RET();      FORCE_RET();
363  }  }
364    
365  void OPPROTO glue(op_jecxz, SUFFIX)(void)  void OPPROTO glue(op_jnz_ecx, SUFFIX)(void)
366  {  {
367      if ((DATA_TYPE)ECX == 0)      if ((DATA_TYPE)ECX != 0)
368          EIP = PARAM1;          GOTO_LABEL_PARAM(1);
     else  
         EIP = PARAM2;  
369      FORCE_RET();      FORCE_RET();
370  }  }
371    
# Line 383  void OPPROTO glue(op_jecxz, SUFFIX)(void Line 375  void OPPROTO glue(op_jecxz, SUFFIX)(void
375    
376  void OPPROTO glue(op_setb_T0_sub, SUFFIX)(void)  void OPPROTO glue(op_setb_T0_sub, SUFFIX)(void)
377  {  {
378      int src1, src2;      target_long src1, src2;
379      src1 = CC_DST + CC_SRC;      src1 = CC_DST + CC_SRC;
380      src2 = CC_SRC;      src2 = CC_SRC;
381    
# Line 397  void OPPROTO glue(op_setz_T0_sub, SUFFIX Line 389  void OPPROTO glue(op_setz_T0_sub, SUFFIX
389    
390  void OPPROTO glue(op_setbe_T0_sub, SUFFIX)(void)  void OPPROTO glue(op_setbe_T0_sub, SUFFIX)(void)
391  {  {
392      int src1, src2;      target_long src1, src2;
393      src1 = CC_DST + CC_SRC;      src1 = CC_DST + CC_SRC;
394      src2 = CC_SRC;      src2 = CC_SRC;
395    
# Line 411  void OPPROTO glue(op_sets_T0_sub, SUFFIX Line 403  void OPPROTO glue(op_sets_T0_sub, SUFFIX
403    
404  void OPPROTO glue(op_setl_T0_sub, SUFFIX)(void)  void OPPROTO glue(op_setl_T0_sub, SUFFIX)(void)
405  {  {
406      int src1, src2;      target_long src1, src2;
407      src1 = CC_DST + CC_SRC;      src1 = CC_DST + CC_SRC;
408      src2 = CC_SRC;      src2 = CC_SRC;
409    
# Line 420  void OPPROTO glue(op_setl_T0_sub, SUFFIX Line 412  void OPPROTO glue(op_setl_T0_sub, SUFFIX
412    
413  void OPPROTO glue(op_setle_T0_sub, SUFFIX)(void)  void OPPROTO glue(op_setle_T0_sub, SUFFIX)(void)
414  {  {
415      int src1, src2;      target_long src1, src2;
416      src1 = CC_DST + CC_SRC;      src1 = CC_DST + CC_SRC;
417      src2 = CC_SRC;      src2 = CC_SRC;
418    
# Line 432  void OPPROTO glue(op_setle_T0_sub, SUFFI Line 424  void OPPROTO glue(op_setle_T0_sub, SUFFI
424  void OPPROTO glue(glue(op_shl, SUFFIX), _T0_T1)(void)  void OPPROTO glue(glue(op_shl, SUFFIX), _T0_T1)(void)
425  {  {
426      int count;      int count;
427      count = T1 & 0x1f;      count = T1 & SHIFT1_MASK;
428      T0 = T0 << count;      T0 = T0 << count;
429      FORCE_RET();      FORCE_RET();
430  }  }
# Line 440  void OPPROTO glue(glue(op_shl, SUFFIX), Line 432  void OPPROTO glue(glue(op_shl, SUFFIX),
432  void OPPROTO glue(glue(op_shr, SUFFIX), _T0_T1)(void)  void OPPROTO glue(glue(op_shr, SUFFIX), _T0_T1)(void)
433  {  {
434      int count;      int count;
435      count = T1 & 0x1f;      count = T1 & SHIFT1_MASK;
436      T0 &= DATA_MASK;      T0 &= DATA_MASK;
437      T0 = T0 >> count;      T0 = T0 >> count;
438      FORCE_RET();      FORCE_RET();
# Line 448  void OPPROTO glue(glue(op_shr, SUFFIX), Line 440  void OPPROTO glue(glue(op_shr, SUFFIX),
440    
441  void OPPROTO glue(glue(op_sar, SUFFIX), _T0_T1)(void)  void OPPROTO glue(glue(op_sar, SUFFIX), _T0_T1)(void)
442  {  {
443      int count, src;      int count;
444      count = T1 & 0x1f;      target_long src;
445    
446        count = T1 & SHIFT1_MASK;
447      src = (DATA_STYPE)T0;      src = (DATA_STYPE)T0;
448      T0 = src >> count;      T0 = src >> count;
449      FORCE_RET();      FORCE_RET();
# Line 484  void OPPROTO glue(glue(op_bts, SUFFIX), Line 478  void OPPROTO glue(glue(op_bts, SUFFIX),
478      int count;      int count;
479      count = T1 & SHIFT_MASK;      count = T1 & SHIFT_MASK;
480      T1 = T0 >> count;      T1 = T0 >> count;
481      T0 |= (1 << count);      T0 |= (((target_long)1) << count);
482  }  }
483    
484  void OPPROTO glue(glue(op_btr, SUFFIX), _T0_T1_cc)(void)  void OPPROTO glue(glue(op_btr, SUFFIX), _T0_T1_cc)(void)
# Line 492  void OPPROTO glue(glue(op_btr, SUFFIX), Line 486  void OPPROTO glue(glue(op_btr, SUFFIX),
486      int count;      int count;
487      count = T1 & SHIFT_MASK;      count = T1 & SHIFT_MASK;
488      T1 = T0 >> count;      T1 = T0 >> count;
489      T0 &= ~(1 << count);      T0 &= ~(((target_long)1) << count);
490  }  }
491    
492  void OPPROTO glue(glue(op_btc, SUFFIX), _T0_T1_cc)(void)  void OPPROTO glue(glue(op_btc, SUFFIX), _T0_T1_cc)(void)
# Line 500  void OPPROTO glue(glue(op_btc, SUFFIX), Line 494  void OPPROTO glue(glue(op_btc, SUFFIX),
494      int count;      int count;
495      count = T1 & SHIFT_MASK;      count = T1 & SHIFT_MASK;
496      T1 = T0 >> count;      T1 = T0 >> count;
497      T0 ^= (1 << count);      T0 ^= (((target_long)1) << count);
498    }
499    
500    void OPPROTO glue(glue(op_add_bit, SUFFIX), _A0_T1)(void)
501    {
502        A0 += ((DATA_STYPE)T1 >> (3 + SHIFT)) << SHIFT;
503  }  }
504    
505  void OPPROTO glue(glue(op_bsf, SUFFIX), _T0_cc)(void)  void OPPROTO glue(glue(op_bsf, SUFFIX), _T0_cc)(void)
506  {  {
507      int res, count;      int count;
508        target_long res;
509        
510      res = T0 & DATA_MASK;      res = T0 & DATA_MASK;
511      if (res != 0) {      if (res != 0) {
512          count = 0;          count = 0;
# Line 523  void OPPROTO glue(glue(op_bsf, SUFFIX), Line 524  void OPPROTO glue(glue(op_bsf, SUFFIX),
524    
525  void OPPROTO glue(glue(op_bsr, SUFFIX), _T0_cc)(void)  void OPPROTO glue(glue(op_bsr, SUFFIX), _T0_cc)(void)
526  {  {
527      int res, count;      int count;
528        target_long res;
529    
530      res = T0 & DATA_MASK;      res = T0 & DATA_MASK;
531      if (res != 0) {      if (res != 0) {
532          count = DATA_BITS - 1;          count = DATA_BITS - 1;
# Line 555  void OPPROTO glue(op_movl_T0_Dshift, SUF Line 558  void OPPROTO glue(op_movl_T0_Dshift, SUF
558      T0 = DF << SHIFT;      T0 = DF << SHIFT;
559  }  }
560    
 void OPPROTO glue(op_string_jz_sub, SUFFIX)(void)  
 {  
     if ((DATA_TYPE)CC_DST == 0)  
         JUMP_TB2(glue(op_string_jz_sub, SUFFIX), PARAM1, 3);  
     FORCE_RET();  
 }  
   
 void OPPROTO glue(op_string_jnz_sub, SUFFIX)(void)  
 {  
     if ((DATA_TYPE)CC_DST != 0)  
         JUMP_TB2(glue(op_string_jnz_sub, SUFFIX), PARAM1, 3);  
     FORCE_RET();  
 }  
   
 void OPPROTO glue(glue(op_string_jz_sub, SUFFIX), _im)(void)  
 {  
     if ((DATA_TYPE)CC_DST == 0) {  
         EIP = PARAM1;  
         if (env->eflags & TF_MASK) {  
             raise_exception(EXCP01_SSTP);  
         }  
         T0 = 0;  
         EXIT_TB();  
     }  
     FORCE_RET();  
 }  
   
 void OPPROTO glue(glue(op_string_jnz_sub, SUFFIX), _im)(void)  
 {  
     if ((DATA_TYPE)CC_DST != 0) {  
         EIP = PARAM1;  
         if (env->eflags & TF_MASK) {  
             raise_exception(EXCP01_SSTP);  
         }  
         T0 = 0;  
         EXIT_TB();  
     }  
     FORCE_RET();  
 }  
   
 #if DATA_BITS >= 16  
 void OPPROTO glue(op_jz_ecx, SUFFIX)(void)  
 {  
     if ((DATA_TYPE)ECX == 0)  
         JUMP_TB(glue(op_jz_ecx, SUFFIX), PARAM1, 1, PARAM2);  
     FORCE_RET();  
 }  
   
 void OPPROTO glue(glue(op_jz_ecx, SUFFIX), _im)(void)  
 {  
     if ((DATA_TYPE)ECX == 0) {  
         EIP = PARAM1;  
         if (env->eflags & TF_MASK) {  
             raise_exception(EXCP01_SSTP);  
         }  
         T0 = 0;  
         EXIT_TB();  
     }  
     FORCE_RET();  
 }  
 #endif  
   
561  /* port I/O */  /* port I/O */
562    #if DATA_BITS <= 32
563  void OPPROTO glue(glue(op_out, SUFFIX), _T0_T1)(void)  void OPPROTO glue(glue(op_out, SUFFIX), _T0_T1)(void)
564  {  {
565      glue(cpu_out, SUFFIX)(env, T0, T1 & DATA_MASK);      glue(cpu_out, SUFFIX)(env, T0, T1 & DATA_MASK);
# Line 648  void OPPROTO glue(glue(op_check_io, SUFF Line 589  void OPPROTO glue(glue(op_check_io, SUFF
589  {  {
590      glue(glue(check_io, SUFFIX), _DX)();      glue(glue(check_io, SUFFIX), _DX)();
591  }  }
592    #endif
593    
594  #undef DATA_BITS  #undef DATA_BITS
595  #undef SHIFT_MASK  #undef SHIFT_MASK
596    #undef SHIFT1_MASK
597  #undef SIGN_MASK  #undef SIGN_MASK
598  #undef DATA_TYPE  #undef DATA_TYPE
599  #undef DATA_STYPE  #undef DATA_STYPE

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8

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