jump to gate fix (aka OS/2 Warp install bug)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@923 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
dc196a57e3
commit
516633dc42
|
@ -1264,6 +1264,9 @@ void helper_ljmp_protected_T0_T1(int next_eip)
|
||||||
if (!(e2 & DESC_P_MASK))
|
if (!(e2 & DESC_P_MASK))
|
||||||
raise_exception_err(EXCP0B_NOSEG, new_cs & 0xfffc);
|
raise_exception_err(EXCP0B_NOSEG, new_cs & 0xfffc);
|
||||||
gate_cs = e1 >> 16;
|
gate_cs = e1 >> 16;
|
||||||
|
new_eip = (e1 & 0xffff);
|
||||||
|
if (type == 12)
|
||||||
|
new_eip |= (e2 & 0xffff0000);
|
||||||
if (load_segment(&e1, &e2, gate_cs) != 0)
|
if (load_segment(&e1, &e2, gate_cs) != 0)
|
||||||
raise_exception_err(EXCP0D_GPF, gate_cs & 0xfffc);
|
raise_exception_err(EXCP0D_GPF, gate_cs & 0xfffc);
|
||||||
dpl = (e2 >> DESC_DPL_SHIFT) & 3;
|
dpl = (e2 >> DESC_DPL_SHIFT) & 3;
|
||||||
|
@ -1276,9 +1279,6 @@ void helper_ljmp_protected_T0_T1(int next_eip)
|
||||||
raise_exception_err(EXCP0D_GPF, gate_cs & 0xfffc);
|
raise_exception_err(EXCP0D_GPF, gate_cs & 0xfffc);
|
||||||
if (!(e2 & DESC_P_MASK))
|
if (!(e2 & DESC_P_MASK))
|
||||||
raise_exception_err(EXCP0D_GPF, gate_cs & 0xfffc);
|
raise_exception_err(EXCP0D_GPF, gate_cs & 0xfffc);
|
||||||
new_eip = (e1 & 0xffff);
|
|
||||||
if (type == 12)
|
|
||||||
new_eip |= (e2 & 0xffff0000);
|
|
||||||
limit = get_seg_limit(e1, e2);
|
limit = get_seg_limit(e1, e2);
|
||||||
if (new_eip > limit)
|
if (new_eip > limit)
|
||||||
raise_exception_err(EXCP0D_GPF, 0);
|
raise_exception_err(EXCP0D_GPF, 0);
|
||||||
|
|
Loading…
Reference in a new issue