--- BasiliskII/src/Unix/sigsegv.cpp 2003/11/10 23:54:31 1.35 +++ BasiliskII/src/Unix/sigsegv.cpp 2003/11/11 00:10:39 1.36 @@ -813,10 +813,12 @@ static bool ix86_skip_instruction(unsign int rloc = x86_reg_map[reg]; switch (transfer_size) { case SIZE_BYTE: - if (!has_rex && reg >= 4) - regs[rloc - 4] = (regs[rloc - 4] & ~0xff00L); - else - regs[rloc] = (regs[rloc] & ~0xffL); + if (has_rex || reg < 4) + regs[rloc] = (regs[rloc] & ~0x00ffL); + else { + rloc = x86_reg_map[reg - 4]; + regs[rloc] = (regs[rloc] & ~0xff00L); + } break; case SIZE_WORD: regs[rloc] = (regs[rloc] & ~0xffffL);