diff options
Diffstat (limited to 'src/dynarec')
| -rw-r--r-- | src/dynarec/dynarec_native_pass.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/dynarec/dynarec_native_pass.c b/src/dynarec/dynarec_native_pass.c index 29d11d0e..b6b31c12 100644 --- a/src/dynarec/dynarec_native_pass.c +++ b/src/dynarec/dynarec_native_pass.c @@ -107,12 +107,13 @@ uintptr_t native_pass(dynarec_native_t* dyn, uintptr_t addr, int alternate, int rep = 0; uint8_t pk = PK(0); - while((pk==0xF2) || (pk==0xF3)) { - rep = pk-0xF1; - ++addr; - pk = PK(0); - } - while(pk==0x3E || pk==0x26) { //Branch Taken Hint ignored, same for ES: prefix + while((pk==0xF2) || (pk==0xF3) || (pk==0x3E) || (pk==0x26)) { + switch(pk) { + case 0xF2: rep = 1; break; + case 0xF3: rep = 2; break; + case 0x3E: + case 0x26: /* ignored */ break; + } ++addr; pk = PK(0); } |