ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/Unix/sigsegv.cpp
(Generate patch)

Comparing BasiliskII/src/Unix/sigsegv.cpp (file contents):
Revision 1.61 by gbeauche, 2006-02-27T13:38:52Z vs.
Revision 1.62 by gbeauche, 2006-03-30T22:45:49Z

# Line 943 | Line 943 | static bool ix86_skip_instruction(unsign
943                          break;
944              }
945            break;
946 + #if defined(__x86_64__)
947 +        case 0x63: // MOVSXD r64, r/m32
948 +                if (has_rex && rex.W) {
949 +                        transfer_size = SIZE_LONG;
950 +                        target_size = SIZE_QUAD;
951 +                }
952 +                else if (transfer_size != SIZE_WORD) {
953 +                        transfer_size = SIZE_LONG;
954 +                        target_size = SIZE_QUAD;
955 +                }
956 +                switch (eip[1] & 0xc0) {
957 +                case 0x80:
958 +                        reg = (eip[1] >> 3) & 7;
959 +                        transfer_type = SIGSEGV_TRANSFER_LOAD;
960 +                        break;
961 +                case 0x40:
962 +                        reg = (eip[1] >> 3) & 7;
963 +                        transfer_type = SIGSEGV_TRANSFER_LOAD;
964 +                        break;
965 +                case 0x00:
966 +                        reg = (eip[1] >> 3) & 7;
967 +                        transfer_type = SIGSEGV_TRANSFER_LOAD;
968 +                        break;
969 +                }
970 +                len += 2 + ix86_step_over_modrm(eip + 1);
971 +                break;
972 + #endif
973          case 0x8a: // MOV r8, r/m8
974                  transfer_size = SIZE_BYTE;
975          case 0x8b: // MOV r32, r/m32 (or 16-bit operation)
# Line 2189 | Line 2216 | static bool arch_insn_skipper_tests()
2216                  0x4c, 0x89, 0x18,              // mov    %r11,(%rax)
2217                  0x4a, 0x89, 0x0c, 0x10,        // mov    %rcx,(%rax,%r10,1)
2218                  0x4e, 0x89, 0x1c, 0x10,        // mov    %r11,(%rax,%r10,1)
2219 +                0x63, 0x47, 0x04,              // movslq 4(%rdi),%eax
2220 +                0x48, 0x63, 0x47, 0x04,        // movslq 4(%rdi),%rax
2221   #endif
2222                  0                              // end
2223          };

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines