246: 90 [ ]*nop
247: 90 [ ]*nop
248: 65 [ ]*gs
- 249: 0f [ ]*sfence.*\(bad\).*
+ 249: 0f [ ]*clflush.*\(bad\).*
24a: ae [ ]*scas %es:\(%edi\),%al
24b: ff 00 [ ]*incl \(%eax\)
24d: 00 00 [ ]*add %al,\(%eax\)
+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.
{ "(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 */
{
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: