VirtualBox

Changeset 36056 in vbox for trunk/src/recompiler


Ignore:
Timestamp:
Feb 22, 2011 6:19:03 PM (14 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
70168
Message:

.remstep hacking.

Location:
trunk/src/recompiler
Files:
3 edited

Legend:

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

    r36054 r36056  
    7878#define REM_COPY_FPU_REG(pDst, pSrc) \
    7979    do { *(PX86FPUMMX)(pDst) = *(const X86FPUMMX *)(pSrc); } while (0)
     80
     81/** How remR3RunLoggingStep operates. */
     82#define REM_USE_QEMU_SINGLE_STEP_FOR_LOGGING
    8083
    8184
     
    951954        int interrupt_request = pVM->rem.s.Env.interrupt_request;
    952955        Assert(!(interrupt_request & ~(CPU_INTERRUPT_HARD | CPU_INTERRUPT_EXIT | CPU_INTERRUPT_EXITTB | CPU_INTERRUPT_TIMER | CPU_INTERRUPT_EXTERNAL_HARD | CPU_INTERRUPT_EXTERNAL_EXIT | CPU_INTERRUPT_EXTERNAL_TIMER)));
     956#ifdef REM_USE_QEMU_SINGLE_STEP_FOR_LOGGING
     957        cpu_single_step(&pVM->rem.s.Env, 0);
     958#endif
    953959        Assert(!pVM->rem.s.Env.singlestep_enabled);
     960
    954961        /*
    955962         * Now we set the execute single instruction flag and enter the cpu_exec loop.
     
    10741081{
    10751082    int rc;
    1076     Assert(!pVM->rem.s.Env.singlestep_enabled);
     1083
    10771084    Assert(pVM->rem.s.fInREM);
    1078 /* #define REM_USE_QEMU_SINGLE_STEP_FOR_LOGGING - slow (tb flushing?) */
    10791085#ifdef REM_USE_QEMU_SINGLE_STEP_FOR_LOGGING
    10801086    cpu_single_step(&pVM->rem.s.Env, 1);
     1087#else
     1088    Assert(!pVM->rem.s.Env.singlestep_enabled);
    10811089#endif
    10821090
     
    12511259
    12521260#ifdef REM_USE_QEMU_SINGLE_STEP_FOR_LOGGING
    1253     cpu_single_step(&pVM->rem.s.Env, 0);
     1261//    cpu_single_step(&pVM->rem.s.Env, 0);
    12541262#else
    12551263    pVM->rem.s.Env.interrupt_request &= ~(CPU_INTERRUPT_SINGLE_INSTR | CPU_INTERRUPT_SINGLE_INSTR_IN_FLIGHT);
     
    38513859    else
    38523860        pVM->rem.s.Env.state &= ~CPU_EMULATE_SINGLE_STEP;
     3861#ifdef REM_USE_QEMU_SINGLE_STEP_FOR_LOGGING
     3862    cpu_single_step(&pVM->rem.s.Env, fEnable);
     3863#endif
    38533864    return VINF_SUCCESS;
    38543865}
  • trunk/src/recompiler/cpu-exec.c

    r36054 r36056  
    372372                                || !(env->eflags & IF_MASK)
    373373                                ||  (env->hflags & HF_INHIBIT_IRQ_MASK)
    374                                 ||  (env->state & (CPU_RAW_HWACC | CPU_EMULATE_SINGLE_STEP))
     374                                ||  (env->state & CPU_RAW_HWACC)
    375375                               )
    376376                            {
  • trunk/src/recompiler/target-i386/translate.c

    r33656 r36056  
    31573157#endif /* VBOX */
    31583158
    3159     if (s->singlestep_enabled) {
     3159    if (   s->singlestep_enabled
     3160#ifdef VBOX
     3161        && (   !(cpu_single_env->state & CPU_EMULATE_SINGLE_STEP)
     3162            || !(s->prefix & (PREFIX_REPNZ | PREFIX_REPZ) ))
     3163#endif
     3164       ) {
    31603165        tcg_gen_helper_0_0(helper_debug);
    31613166    } else if (s->tf) {
Note: See TracChangeset for help on using the changeset viewer.

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