diff options
author | Alan Modra <amodra@bigpond.net.au> | 2004-03-12 07:01:36 +0000 |
---|---|---|
committer | Alan Modra <amodra@bigpond.net.au> | 2004-03-12 07:01:36 +0000 |
commit | 38cb26be9bed34a09a6bb6484d2a1f63d565413a (patch) | |
tree | b40769c8a348abff9ec278519a5aac65c753af57 /opcodes | |
parent | 1c2cba949e557bdce305758b534958db04d9b791 (diff) | |
download | gdb-38cb26be9bed34a09a6bb6484d2a1f63d565413a.tar.gz |
opcodes/
* i386-dis.c (grps): Use clflush by default for 0x0fae/7.
(OP_E): Twiddle clflush to sfence here.
gas/testsuite/
* gas/i386/katmai.d: Adjust for clflush change.
Diffstat (limited to 'opcodes')
-rw-r--r-- | opcodes/ChangeLog | 5 | ||||
-rw-r--r-- | opcodes/i386-dis.c | 16 |
2 files changed, 16 insertions, 5 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 47790f36b7f..545c37b5e00 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,8 @@ +2004-03-12 Alan Modra <amodra@bigpond.net.au> + + * i386-dis.c (grps): Use clflush by default for 0x0fae/7. + (OP_E): Twiddle clflush to sfence here. + 2004-03-08 Nick Clifton <nickc@redhat.com> * po/de.po: Updated German translation. diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index f9a0a9b2c45..067c7502090 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -1426,8 +1426,7 @@ static const struct dis386 grps[][8] = { { "(bad)", XX, XX, XX }, { "lfence", None, XX, XX }, { "mfence", None, XX, XX }, - { "sfence", None, XX, XX }, - /* FIXME: the sfence with memory operand is clflush! */ + { "clflush", None, XX, XX }, }, /* GRP14 */ { @@ -3034,9 +3033,16 @@ OP_E (int bytemode, int sizeflag) used_prefixes |= (prefixes & PREFIX_DATA); break; case 0: - if (!(codep[-2] == 0xAE && codep[-1] == 0xF8 /* sfence */) - && !(codep[-2] == 0xAE && codep[-1] == 0xF0 /* mfence */) - && !(codep[-2] == 0xAE && codep[-1] == 0xe8 /* lfence */)) + if (codep[-2] == 0xAE && codep[-1] == 0xF8) + /* sfence */ + strcpy (obuf + strlen (obuf) - sizeof ("clflush") + 1, "sfence"); + else if (codep[-2] == 0xAE && codep[-1] == 0xF0) + /* mfence */ + ; + else if (codep[-2] == 0xAE && codep[-1] == 0xe8) + /* lfence */ + ; + else BadOp (); /* bad sfence,lea,lds,les,lfs,lgs,lss modrm */ break; default: |