VirtualBox

Ignore:
Timestamp:
Feb 28, 2007 10:33:02 AM (18 years ago)
Author:
vboxsync
Message:

Synced V86 changes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/recompiler/new/VBoxRecompiler.c

    r1057 r1095  
    18751875        {
    18761876            Log2(("REMR3State: SS changed from %04x to %04x!\n", pVM->rem.s.Env.segs[R_SS].selector, pCtx->ss));
    1877             if (pCtx->eflags.Bits.u1VM == 1)
     1877
     1878            cpu_x86_set_cpl(&pVM->rem.s.Env, (pCtx->eflags.Bits.u1VM) ? 3 : (pCtx->ss & 3));
     1879            sync_seg(&pVM->rem.s.Env, R_SS, pCtx->ss);
     1880#ifdef VBOX_WITH_STATISTICS
     1881            if (pVM->rem.s.Env.segs[R_SS].newselector)
    18781882            {
    1879                 cpu_x86_set_cpl(&pVM->rem.s.Env, 3);
    1880                 pVM->rem.s.Env.segs[R_SS].selector = (uint16_t)pCtx->ss;
     1883                STAM_COUNTER_INC(&gStatSelOutOfSync[R_SS]);
    18811884            }
    1882             else
    1883             {
    1884                 cpu_x86_set_cpl(&pVM->rem.s.Env, pCtx->ss & 3);
    1885                 sync_seg(&pVM->rem.s.Env, R_SS, pCtx->ss);
    1886 #ifdef VBOX_WITH_STATISTICS
    1887                 if (pVM->rem.s.Env.segs[R_SS].newselector)
    1888                 {
    1889                     STAM_COUNTER_INC(&gStatSelOutOfSync[R_SS]);
    1890                 }
    18911885#endif
    1892             }
    18931886        }
    18941887        else
     
    18981891        {
    18991892            Log2(("REMR3State: ES changed from %04x to %04x!\n", pVM->rem.s.Env.segs[R_ES].selector, pCtx->es));
    1900             if (pCtx->eflags.Bits.u1VM == 1)
     1893            sync_seg(&pVM->rem.s.Env, R_ES, pCtx->es);
     1894#ifdef VBOX_WITH_STATISTICS
     1895            if (pVM->rem.s.Env.segs[R_ES].newselector)
    19011896            {
    1902                 pVM->rem.s.Env.segs[R_ES].selector = (uint16_t)pCtx->es;
     1897                STAM_COUNTER_INC(&gStatSelOutOfSync[R_ES]);
    19031898            }
    1904             else
    1905             {
    1906                 sync_seg(&pVM->rem.s.Env, R_ES, pCtx->es);
    1907 #ifdef VBOX_WITH_STATISTICS
    1908                 if (pVM->rem.s.Env.segs[R_ES].newselector)
    1909                 {
    1910                     STAM_COUNTER_INC(&gStatSelOutOfSync[R_ES]);
    1911                 }
    19121899#endif
    1913             }
    19141900        }
    19151901        else
     
    19191905        {
    19201906            Log2(("REMR3State: CS changed from %04x to %04x!\n", pVM->rem.s.Env.segs[R_CS].selector, pCtx->cs));
    1921             if (pCtx->eflags.Bits.u1VM == 1)
     1907            sync_seg(&pVM->rem.s.Env, R_CS, pCtx->cs);
     1908#ifdef VBOX_WITH_STATISTICS
     1909            if (pVM->rem.s.Env.segs[R_CS].newselector)
    19221910            {
    1923                 pVM->rem.s.Env.segs[R_CS].selector = (uint16_t)pCtx->cs;
     1911                STAM_COUNTER_INC(&gStatSelOutOfSync[R_CS]);
    19241912            }
    1925             else
    1926             {
    1927                 sync_seg(&pVM->rem.s.Env, R_CS, pCtx->cs);
    1928 #ifdef VBOX_WITH_STATISTICS
    1929                 if (pVM->rem.s.Env.segs[R_CS].newselector)
    1930                 {
    1931                     STAM_COUNTER_INC(&gStatSelOutOfSync[R_CS]);
    1932                 }
    19331913#endif
    1934             }
    19351914        }
    19361915        else
     
    19401919        {
    19411920            Log2(("REMR3State: DS changed from %04x to %04x!\n", pVM->rem.s.Env.segs[R_DS].selector, pCtx->ds));
    1942             if (pCtx->eflags.Bits.u1VM == 1)
     1921            sync_seg(&pVM->rem.s.Env, R_DS, pCtx->ds);
     1922#ifdef VBOX_WITH_STATISTICS
     1923            if (pVM->rem.s.Env.segs[R_DS].newselector)
    19431924            {
    1944                 pVM->rem.s.Env.segs[R_DS].selector = (uint16_t)pCtx->ds;
     1925                STAM_COUNTER_INC(&gStatSelOutOfSync[R_DS]);
    19451926            }
    1946             else
    1947             {
    1948                 sync_seg(&pVM->rem.s.Env, R_DS, pCtx->ds);
    1949 #ifdef VBOX_WITH_STATISTICS
    1950                 if (pVM->rem.s.Env.segs[R_DS].newselector)
    1951                 {
    1952                     STAM_COUNTER_INC(&gStatSelOutOfSync[R_DS]);
    1953                 }
    19541927#endif
    1955             }
    19561928        }
    19571929        else
     
    19631935        {
    19641936            Log2(("REMR3State: FS changed from %04x to %04x!\n", pVM->rem.s.Env.segs[R_FS].selector, pCtx->fs));
    1965             if (pCtx->eflags.Bits.u1VM == 1)
     1937            sync_seg(&pVM->rem.s.Env, R_FS, pCtx->fs);
     1938#ifdef VBOX_WITH_STATISTICS
     1939            if (pVM->rem.s.Env.segs[R_FS].newselector)
    19661940            {
    1967                 pVM->rem.s.Env.segs[R_FS].selector = (uint16_t)pCtx->fs;
     1941                STAM_COUNTER_INC(&gStatSelOutOfSync[R_FS]);
    19681942            }
    1969             else
    1970             {
    1971                 sync_seg(&pVM->rem.s.Env, R_FS, pCtx->fs);
    1972 #ifdef VBOX_WITH_STATISTICS
    1973                 if (pVM->rem.s.Env.segs[R_FS].newselector)
    1974                 {
    1975                     STAM_COUNTER_INC(&gStatSelOutOfSync[R_FS]);
    1976                 }
    19771943#endif
    1978             }
    19791944        }
    19801945        else
     
    19841949        {
    19851950            Log2(("REMR3State: GS changed from %04x to %04x!\n", pVM->rem.s.Env.segs[R_GS].selector, pCtx->gs));
    1986             if (pCtx->eflags.Bits.u1VM == 1)
     1951            sync_seg(&pVM->rem.s.Env, R_GS, pCtx->gs);
     1952#ifdef VBOX_WITH_STATISTICS
     1953            if (pVM->rem.s.Env.segs[R_GS].newselector)
    19871954            {
    1988                 pVM->rem.s.Env.segs[R_GS].selector = (uint16_t)pCtx->gs;
     1955                STAM_COUNTER_INC(&gStatSelOutOfSync[R_GS]);
    19891956            }
    1990             else
    1991             {
    1992                 sync_seg(&pVM->rem.s.Env, R_GS, pCtx->gs);
    1993 #ifdef VBOX_WITH_STATISTICS
    1994                 if (pVM->rem.s.Env.segs[R_GS].newselector)
    1995                 {
    1996                     STAM_COUNTER_INC(&gStatSelOutOfSync[R_GS]);
    1997                 }
    19981957#endif
    1999             }
    20001958        }
    20011959        else
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette