VirtualBox

Changeset 62286 in vbox


Ignore:
Timestamp:
Jul 15, 2016 6:02:42 PM (8 years ago)
Author:
vboxsync
Message:

REM: Fixed TRPM -> recompiler IRQ translation problem, well hacked it.

Location:
trunk/src/recompiler
Files:
3 edited

Legend:

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

    r61634 r62286  
    24542454        if (enmType != TRPM_SOFTWARE_INT)
    24552455        {
    2456             pVM->rem.s.Env.exception_is_int     = 0;
    2457 #ifdef IEM_VERIFICATION_MODE /* Ugly hack, needs proper fixing. */
    2458             pVM->rem.s.Env.exception_is_int     = enmType == TRPM_HARDWARE_INT ? 0x42 : 0;
    2459 #endif
     2456            pVM->rem.s.Env.exception_is_int     = enmType == TRPM_HARDWARE_INT
     2457                                                ? EXCEPTION_IS_INT_VALUE_HARDWARE_IRQ : 0; /* HACK ALERT! */
    24602458            pVM->rem.s.Env.exception_next_eip   = pVM->rem.s.Env.eip;
    24612459        }
  • trunk/src/recompiler/cpu-exec.c

    r60893 r62286  
    345345                         env->segs[R_CS].selector, (RTGCPTR)env->exception_next_eip));
    346346#  endif /* VBOX */
    347 #  ifdef IEM_VERIFICATION_MODE /* Ugly hacks */
    348347                    do_interrupt(env->exception_index,
    349                                  env->exception_is_int && env->exception_is_int != 0x42,
     348                                 env->exception_is_int && env->exception_is_int != EXCEPTION_IS_INT_VALUE_HARDWARE_IRQ,
    350349                                 env->error_code,
    351350                                 env->exception_next_eip,
    352                                  env->exception_is_int == 0x42);
     351                                 env->exception_is_int == EXCEPTION_IS_INT_VALUE_HARDWARE_IRQ);
     352#  ifdef IEM_VERIFICATION_MODE /* Ugly hacks */
    353353                    cpu_loop_exit();
    354 #  else
    355                     do_interrupt(env->exception_index,
    356                                  env->exception_is_int,
    357                                  env->error_code,
    358                                  env->exception_next_eip, 0);
    359354#  endif
    360355                    /* successfully delivered */
  • trunk/src/recompiler/target-i386/cpu.h

    r61363 r62286  
    706706    int error_code;
    707707    int exception_is_int;
     708#ifdef VBOX
     709# define EXCEPTION_IS_INT_VALUE_HARDWARE_IRQ 0x42 /**< Special CPUX86State::exception_is_int value indicating hardware irq.  (HACK ALERT) */
     710#endif
    708711    target_ulong exception_next_eip;
    709712    target_ulong dr[8]; /* debug registers */
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