VirtualBox

Changeset 6726 in vbox for trunk/src


Ignore:
Timestamp:
Feb 1, 2008 5:05:19 PM (17 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
27808
Message:

2 fixes from qemu: fix cmpxchg8b detection and fix DR6 single step exception status bit

Location:
trunk/src/recompiler/target-i386
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/recompiler/target-i386/exec.h

    r5197 r6726  
    197197void helper_bswapq_T0(void);
    198198void helper_cmpxchg8b(void);
     199void helper_single_step(void);
    199200void helper_cpuid(void);
    200201void helper_enter_level(int level, int data32);
  • trunk/src/recompiler/target-i386/helper.c

    r6475 r6726  
    17721772    }
    17731773    CC_SRC = eflags;
     1774}
     1775
     1776void helper_single_step()
     1777{
     1778    env->dr[6] |= 0x4000;
     1779    raise_exception(EXCP01_SSTP);
    17741780}
    17751781
  • trunk/src/recompiler/target-i386/op.c

    r5197 r6726  
    801801{
    802802    helper_cmpxchg8b();
     803}
     804
     805void OPPROTO op_single_step(void)
     806{
     807    helper_single_step();
    803808}
    804809
  • trunk/src/recompiler/target-i386/translate.c

    r6108 r6726  
    23422342        gen_op_debug();
    23432343    } else if (s->tf) {
    2344         gen_op_raise_exception(EXCP01_SSTP);
     2344        gen_op_single_step();
    23452345    } else {
    23462346        gen_op_movl_T0_0();
     
    38733873        modrm = ldub_code(s->pc++);
    38743874        mod = (modrm >> 6) & 3;
    3875         if (mod == 3)
     3875        if ((mod == 3) || ((modrm & 0x38) != 0x8))
    38763876            goto illegal_op;
    38773877        if (s->cc_op != CC_OP_DYNAMIC)
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