/[qemu]/qemu/ops_template.h
ViewVC logotype

Diff of /qemu/ops_template.h

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

revision 1.24 by bellard, Mon Aug 11 22:19:11 2003 UTC revision 1.25 by bellard, Wed Sep 17 22:52:47 2003 UTC
# Line 518  void OPPROTO op_update_bt_cc(void) Line 518  void OPPROTO op_update_bt_cc(void)
518  #endif  #endif
519    
520  /* string operations */  /* string operations */
 /* XXX: maybe use lower level instructions to ease 16 bit / segment handling */  
   
 #define STRING_SUFFIX _fast  
 #define SI_ADDR (void *)ESI  
 #define DI_ADDR (void *)EDI  
 #define INC_SI() ESI += inc  
 #define INC_DI() EDI += inc  
 #define CX ECX  
 #define DEC_CX() ECX--  
 #include "op_string.h"  
   
 #define STRING_SUFFIX _a32  
 #define SI_ADDR (uint8_t *)A0 + ESI  
 #define DI_ADDR env->segs[R_ES].base + EDI  
 #define INC_SI() ESI += inc  
 #define INC_DI() EDI += inc  
 #define CX ECX  
 #define DEC_CX() ECX--  
 #include "op_string.h"  
   
 #define STRING_SUFFIX _a16  
 #define SI_ADDR (uint8_t *)A0 + (ESI & 0xffff)  
 #define DI_ADDR env->segs[R_ES].base + (EDI & 0xffff)  
 #define INC_SI() ESI = (ESI & ~0xffff) | ((ESI + inc) & 0xffff)  
 #define INC_DI() EDI = (EDI & ~0xffff) | ((EDI + inc) & 0xffff)  
 #define CX (ECX & 0xffff)  
 #define DEC_CX() ECX = (ECX & ~0xffff) | ((ECX - 1) & 0xffff)  
 #include "op_string.h"  
521    
522  void OPPROTO glue(op_movl_T0_Dshift, SUFFIX)(void)  void OPPROTO glue(op_movl_T0_Dshift, SUFFIX)(void)
523  {  {
# Line 555  void OPPROTO glue(op_movl_T0_Dshift, SUF Line 527  void OPPROTO glue(op_movl_T0_Dshift, SUF
527  void OPPROTO glue(op_string_jz_sub, SUFFIX)(void)  void OPPROTO glue(op_string_jz_sub, SUFFIX)(void)
528  {  {
529      if ((DATA_TYPE)CC_DST == 0)      if ((DATA_TYPE)CC_DST == 0)
530          JUMP_TB(glue(op_string_jz_sub, SUFFIX), PARAM1, 1, PARAM2);          JUMP_TB2(glue(op_string_jz_sub, SUFFIX), PARAM1, 1);
531      FORCE_RET();      FORCE_RET();
532  }  }
533    
534  void OPPROTO glue(op_string_jnz_sub, SUFFIX)(void)  void OPPROTO glue(op_string_jnz_sub, SUFFIX)(void)
535  {  {
536      if ((DATA_TYPE)CC_DST != 0)      if ((DATA_TYPE)CC_DST != 0)
537          JUMP_TB(glue(op_string_jnz_sub, SUFFIX), PARAM1, 1, PARAM2);          JUMP_TB2(glue(op_string_jnz_sub, SUFFIX), PARAM1, 1);
538        FORCE_RET();
539    }
540    
541    void OPPROTO glue(glue(op_string_jz_sub, SUFFIX), _im)(void)
542    {
543        if ((DATA_TYPE)CC_DST == 0) {
544            EIP = PARAM1;
545            if (env->eflags & TF_MASK) {
546                raise_exception(EXCP01_SSTP);
547            }
548            T0 = 0;
549            EXIT_TB();
550        }
551        FORCE_RET();
552    }
553    
554    void OPPROTO glue(glue(op_string_jnz_sub, SUFFIX), _im)(void)
555    {
556        if ((DATA_TYPE)CC_DST != 0) {
557            EIP = PARAM1;
558            if (env->eflags & TF_MASK) {
559                raise_exception(EXCP01_SSTP);
560            }
561            T0 = 0;
562            EXIT_TB();
563        }
564      FORCE_RET();      FORCE_RET();
565  }  }
566    
# Line 573  void OPPROTO glue(op_jz_ecx, SUFFIX)(voi Line 571  void OPPROTO glue(op_jz_ecx, SUFFIX)(voi
571          JUMP_TB(glue(op_jz_ecx, SUFFIX), PARAM1, 1, PARAM2);          JUMP_TB(glue(op_jz_ecx, SUFFIX), PARAM1, 1, PARAM2);
572      FORCE_RET();      FORCE_RET();
573  }  }
574    
575    void OPPROTO glue(glue(op_jz_ecx, SUFFIX), _im)(void)
576    {
577        if ((DATA_TYPE)ECX == 0) {
578            EIP = PARAM1;
579            if (env->eflags & TF_MASK) {
580                raise_exception(EXCP01_SSTP);
581            }
582            T0 = 0;
583            EXIT_TB();
584        }
585        FORCE_RET();
586    }
587  #endif  #endif
588    
589  /* port I/O */  /* port I/O */

Legend:
Removed from v.1.24  
changed lines
  Added in v.1.25

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