/[qemu]/qemu/op-i386.c
ViewVC logotype

Diff of /qemu/op-i386.c

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

revision 1.36 by bellard, Sat Jun 21 13:11:57 2003 UTC revision 1.37 by bellard, Tue Jun 24 13:27:18 2003 UTC
# Line 493  void OPPROTO op_jmp_im(void) Line 493  void OPPROTO op_jmp_im(void)
493      EIP = PARAM1;      EIP = PARAM1;
494  }  }
495    
496    void OPPROTO op_hlt(void)
497    {
498        env->exception_index = EXCP_HLT;
499        cpu_loop_exit();
500    }
501    
502  void OPPROTO op_raise_interrupt(void)  void OPPROTO op_raise_interrupt(void)
503  {  {
504      int intno;      int intno;
# Line 954  void OPPROTO op_ljmp_T0_T1(void) Line 960  void OPPROTO op_ljmp_T0_T1(void)
960      jmp_seg(T0 & 0xffff, T1);      jmp_seg(T0 & 0xffff, T1);
961  }  }
962    
963    void OPPROTO op_iret_protected(void)
964    {
965        helper_iret_protected(PARAM1);
966    }
967    
968  void OPPROTO op_lldt_T0(void)  void OPPROTO op_lldt_T0(void)
969  {  {
970      helper_lldt_T0();      helper_lldt_T0();
# Line 983  void OPPROTO op_lmsw_T0(void) Line 994  void OPPROTO op_lmsw_T0(void)
994      helper_movl_crN_T0(0);      helper_movl_crN_T0(0);
995  }  }
996    
997    void OPPROTO op_invlpg_A0(void)
998    {
999        helper_invlpg(A0);
1000    }
1001    
1002  void OPPROTO op_movl_T0_env(void)  void OPPROTO op_movl_T0_env(void)
1003  {  {
1004      T0 = *(uint32_t *)((char *)env + PARAM1);      T0 = *(uint32_t *)((char *)env + PARAM1);
# Line 1082  void OPPROTO op_set_cc_op(void) Line 1098  void OPPROTO op_set_cc_op(void)
1098      CC_OP = PARAM1;      CC_OP = PARAM1;
1099  }  }
1100    
1101  #define FL_UPDATE_MASK32 (TF_MASK | AC_MASK | ID_MASK)  #define FL_UPDATE_MASK16 (FL_UPDATE_MASK32 & 0xffff)
 #define FL_UPDATE_MASK16 (TF_MASK)  
1102    
1103  void OPPROTO op_movl_eflags_T0(void)  void OPPROTO op_movl_eflags_T0(void)
1104  {  {
# Line 1092  void OPPROTO op_movl_eflags_T0(void) Line 1107  void OPPROTO op_movl_eflags_T0(void)
1107      CC_SRC = eflags & (CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C);      CC_SRC = eflags & (CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C);
1108      DF = 1 - (2 * ((eflags >> 10) & 1));      DF = 1 - (2 * ((eflags >> 10) & 1));
1109      /* we also update some system flags as in user mode */      /* we also update some system flags as in user mode */
1110      env->eflags = (env->eflags & ~FL_UPDATE_MASK32) | (eflags & FL_UPDATE_MASK32);      env->eflags = (env->eflags & ~FL_UPDATE_MASK32) |
1111            (eflags & FL_UPDATE_MASK32);
1112  }  }
1113    
1114  void OPPROTO op_movw_eflags_T0(void)  void OPPROTO op_movw_eflags_T0(void)
# Line 1102  void OPPROTO op_movw_eflags_T0(void) Line 1118  void OPPROTO op_movw_eflags_T0(void)
1118      CC_SRC = eflags & (CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C);      CC_SRC = eflags & (CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C);
1119      DF = 1 - (2 * ((eflags >> 10) & 1));      DF = 1 - (2 * ((eflags >> 10) & 1));
1120      /* we also update some system flags as in user mode */      /* we also update some system flags as in user mode */
1121      env->eflags = (env->eflags & ~FL_UPDATE_MASK16) | (eflags & FL_UPDATE_MASK16);      env->eflags = (env->eflags & ~FL_UPDATE_MASK16) |
1122            (eflags & FL_UPDATE_MASK16);
1123    }
1124    
1125    void OPPROTO op_movl_eflags_T0_cpl0(void)
1126    {
1127        load_eflags(T0, FL_UPDATE_CPL0_MASK);
1128    }
1129    
1130    void OPPROTO op_movw_eflags_T0_cpl0(void)
1131    {
1132        load_eflags(T0, FL_UPDATE_CPL0_MASK & 0xffff);
1133  }  }
1134    
1135  #if 0  #if 0

Legend:
Removed from v.1.36  
changed lines
  Added in v.1.37

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