Changeset 1094 in vbox
- Timestamp:
- Feb 28, 2007 10:28:48 AM (18 years ago)
- svn:sync-xref-src-repo-rev:
- 18989
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/recompiler/new/target-i386/helper.c
r644 r1094 4116 4116 CPUX86State *savedenv = env; 4117 4117 env = env1; 4118 if (setjmp(env1->jmp_env) == 0) 4118 4119 if (env->eflags & X86_EFL_VM) 4119 4120 { 4120 if (seg_reg == R_CS) 4121 load_seg_vm(seg_reg, selector); 4122 4123 env = savedenv; 4124 4125 /* Successful sync. */ 4126 env1->segs[seg_reg].newselector = 0; 4127 } 4128 else 4129 { 4130 if (setjmp(env1->jmp_env) == 0) 4121 4131 { 4122 uint32_t e1, e2; 4123 load_segment(&e1, &e2, selector); 4124 cpu_x86_load_seg_cache(env, R_CS, selector, 4125 get_seg_base(e1, e2), 4126 get_seg_limit(e1, e2), 4127 e2); 4128 } 4129 else 4130 load_seg(seg_reg, selector); 4131 /* Successful sync. */ 4132 env->segs[seg_reg].newselector = 0; 4133 4134 env = savedenv; 4135 } 4136 else 4137 { 4138 env = savedenv; 4139 4140 /* Postpone sync until the guest uses the selector. */ 4141 env1->segs[seg_reg].selector = selector; /* hidden values are now incorrect, but will be resynced when this register is accessed. */ 4142 env1->segs[seg_reg].newselector = selector; 4143 Log(("sync_seg: out of sync seg_reg=%d selector=%#x\n", seg_reg, selector)); 4144 } 4132 if (seg_reg == R_CS) 4133 { 4134 uint32_t e1, e2; 4135 load_segment(&e1, &e2, selector); 4136 cpu_x86_load_seg_cache(env, R_CS, selector, 4137 get_seg_base(e1, e2), 4138 get_seg_limit(e1, e2), 4139 e2); 4140 } 4141 else 4142 load_seg(seg_reg, selector); 4143 env = savedenv; 4144 4145 /* Successful sync. */ 4146 env1->segs[seg_reg].newselector = 0; 4147 } 4148 else 4149 { 4150 env = savedenv; 4151 4152 /* Postpone sync until the guest uses the selector. */ 4153 env1->segs[seg_reg].selector = selector; /* hidden values are now incorrect, but will be resynced when this register is accessed. */ 4154 env1->segs[seg_reg].newselector = selector; 4155 Log(("sync_seg: out of sync seg_reg=%d selector=%#x\n", seg_reg, selector)); 4156 } 4157 } 4158 4145 4159 } 4146 4160
Note:
See TracChangeset
for help on using the changeset viewer.