summaryrefslogtreecommitdiffstats
path: root/libcpu/i386_disasm.c
diff options
context:
space:
mode:
Diffstat (limited to 'libcpu/i386_disasm.c')
-rw-r--r--libcpu/i386_disasm.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/libcpu/i386_disasm.c b/libcpu/i386_disasm.c
index f8a06cc4..d8bcf9b3 100644
--- a/libcpu/i386_disasm.c
+++ b/libcpu/i386_disasm.c
@@ -268,8 +268,6 @@ i386_disasm (const uint8_t **startp, const uint8_t *end, GElf_Addr addr,
const uint8_t *data = *startp;
const uint8_t *begin = data;
- fmt = save_fmt;
-
/* Recognize all prefixes. */
int last_prefix_bit = 0;
while (data < end)
@@ -512,6 +510,7 @@ i386_disasm (const uint8_t **startp, const uint8_t *end, GElf_Addr addr,
output_data.data = data;
unsigned long string_end_idx = 0;
+ fmt = save_fmt;
while (*fmt != '\0')
{
if (*fmt != '%')
@@ -581,6 +580,14 @@ i386_disasm (const uint8_t **startp, const uint8_t *end, GElf_Addr addr,
{
switch (*data)
{
+#ifdef X86_64
+ case 0x90:
+ if (prefixes & has_rex_b)
+ goto not;
+ str = "nop";
+ break;
+#endif
+
case 0x98:
if (prefixes & ~has_data16)
goto print_prefix;