diff options
author | 2024-09-06 21:55:42 +0100 | |
---|---|---|
committer | 2024-09-06 21:55:42 +0100 | |
commit | 8bb4226f07b1e9ee79f3429a1495eaa694b13334 (patch) | |
tree | 704a18fdc15bee0f1ee3460e150f84263194bfa4 /src/x86.c | |
parent | dcb191f4f4b7da94f6e4489c80966f5f8f9f8d4b (diff) | |
download | sst-8bb4226f07b1e9ee79f3429a1495eaa694b13334.tar.gz sst-8bb4226f07b1e9ee79f3429a1495eaa694b13334.zip |
Fix more broken x86 cases
Thanks Evan Lin for reporting.
Diffstat (limited to 'src/x86.c')
-rw-r--r-- | src/x86.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -1,5 +1,5 @@ /* - * Copyright © 2023 Michael Smith <mikesmiffy128@gmail.com> + * Copyright © 2024 Michael Smith <mikesmiffy128@gmail.com> * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -25,6 +25,7 @@ static int mrmsib(const uchar *p, int addrlen) { // But it's confusingly-written enough that the code I wrote before didn't // work, so with any luck nobody will need to refer to it again and this is // actually correct now. Fingers crossed. + if ((*p & 0xC6) == 0x06) return 3; // special case for disp16 if (addrlen == 4 || *p & 0xC0) { int sib = addrlen == 4 && *p < 0xC0 && (*p & 7) == 4; switch (*p & 0xC0) { |