/[qemu]/qemu/target-i386/helper.c
ViewVC logotype

Diff of /qemu/target-i386/helper.c

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

revision 1.42 by bellard, Thu Feb 10 22:05:51 2005 UTC revision 1.43 by bellard, Thu Mar 3 01:14:55 2005 UTC
# Line 1012  void helper_sysret(int dflag) Line 1012  void helper_sysret(int dflag)
1012                                 DESC_G_MASK | DESC_B_MASK | DESC_P_MASK |                                 DESC_G_MASK | DESC_B_MASK | DESC_P_MASK |
1013                                 DESC_S_MASK | (3 << DESC_DPL_SHIFT) |                                 DESC_S_MASK | (3 << DESC_DPL_SHIFT) |
1014                                 DESC_W_MASK | DESC_A_MASK);                                 DESC_W_MASK | DESC_A_MASK);
1015          load_eflags((uint32_t)(env->regs[11]), 0xffffffff);          load_eflags((uint32_t)(env->regs[11]), TF_MASK | AC_MASK | ID_MASK |
1016                        IF_MASK | IOPL_MASK | VM_MASK | RF_MASK | NT_MASK);
1017          cpu_x86_set_cpl(env, 3);          cpu_x86_set_cpl(env, 3);
1018      } else {      } else {
1019          cpu_x86_load_seg_cache(env, R_CS, selector | 3,          cpu_x86_load_seg_cache(env, R_CS, selector | 3,
# Line 1209  void helper_divl_EAX_T0(void) Line 1210  void helper_divl_EAX_T0(void)
1210      unsigned int den, q, r;      unsigned int den, q, r;
1211      uint64_t num;      uint64_t num;
1212            
1213      num = EAX | ((uint64_t)EDX << 32);      num = ((uint32_t)EAX) | ((uint64_t)((uint32_t)EDX) << 32);
1214      den = T0;      den = T0;
1215      if (den == 0) {      if (den == 0) {
1216          raise_exception(EXCP00_DIVZ);          raise_exception(EXCP00_DIVZ);
# Line 1229  void helper_idivl_EAX_T0(void) Line 1230  void helper_idivl_EAX_T0(void)
1230      int den, q, r;      int den, q, r;
1231      int64_t num;      int64_t num;
1232            
1233      num = EAX | ((uint64_t)EDX << 32);      num = ((uint32_t)EAX) | ((uint64_t)((uint32_t)EDX) << 32);
1234      den = T0;      den = T0;
1235      if (den == 0) {      if (den == 0) {
1236          raise_exception(EXCP00_DIVZ);          raise_exception(EXCP00_DIVZ);
# Line 3003  void helper_fxrstor(target_ulong ptr, in Line 3004  void helper_fxrstor(target_ulong ptr, in
3004      }      }
3005    
3006      if (env->cr[4] & CR4_OSFXSR_MASK) {      if (env->cr[4] & CR4_OSFXSR_MASK) {
3007          /* XXX: finish it, endianness */          /* XXX: finish it */
3008          env->mxcsr = ldl(ptr + 0x18);          env->mxcsr = ldl(ptr + 0x18);
3009          //ldl(ptr + 0x1c);          //ldl(ptr + 0x1c);
3010          nb_xmm_regs = 8 << data64;          nb_xmm_regs = 8 << data64;
# Line 3170  static void div64(uint64_t *plow, uint64 Line 3171  static void div64(uint64_t *plow, uint64
3171      }      }
3172  }  }
3173    
3174  static void idiv64(uint64_t *plow, uint64_t *phigh, uint64_t b)  static void idiv64(uint64_t *plow, uint64_t *phigh, int64_t b)
3175  {  {
3176      int sa, sb;      int sa, sb;
3177      sa = ((int64_t)*phigh < 0);      sa = ((int64_t)*phigh < 0);
# Line 3182  static void idiv64(uint64_t *plow, uint6 Line 3183  static void idiv64(uint64_t *plow, uint6
3183      div64(plow, phigh, b);      div64(plow, phigh, b);
3184      if (sa ^ sb)      if (sa ^ sb)
3185          *plow = - *plow;          *plow = - *plow;
3186      if (sb)      if (sa)
3187          *phigh = - *phigh;          *phigh = - *phigh;
3188  }  }
3189    

Legend:
Removed from v.1.42  
changed lines
  Added in v.1.43

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