From d4ad77d734c5d4790b5511bec7fccfc1c90ce291 Mon Sep 17 00:00:00 2001 From: gbeauche <> Date: Tue, 11 Nov 2003 00:10:39 +0000 Subject: [PATCH] really fix writes to byte registers --- BasiliskII/src/Unix/sigsegv.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/BasiliskII/src/Unix/sigsegv.cpp b/BasiliskII/src/Unix/sigsegv.cpp index fcb66cab..2c1b80ee 100644 --- a/BasiliskII/src/Unix/sigsegv.cpp +++ b/BasiliskII/src/Unix/sigsegv.cpp @@ -813,10 +813,12 @@ static bool ix86_skip_instruction(unsigned long * regs) 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);