x86: Add int1 as one byte opcode 0xf1
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 14 Jul 2021 21:17:48 +0000 (14:17 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 14 Jul 2021 21:29:02 +0000 (14:29 -0700)
Also change the x86 disassembler to disassemble 0xf1 as int1, instead of
icebp.

gas/

PR gas/28088
* testsuite/gas/i386/opcode.s: Add int1.
* testsuite/gas/i386/x86-64-opcode.s: Add int1, int3 and int.
* testsuite/gas/i386/opcode-intel.d: Updated.
* testsuite/gas/i386/opcode-suffix.d: Likewise.
* testsuite/gas/i386/opcode.d: Likewise.
* testsuite/gas/i386/x86-64-opcode.d: Likewise.

opcodes/

PR gas/28088
* i386-dis.c (dis386): Replace icebp with int1.
* i386-opc.tbl: Add int1.
* i386-tbl.h: Regenerate.

gas/testsuite/gas/i386/opcode-intel.d
gas/testsuite/gas/i386/opcode-suffix.d
gas/testsuite/gas/i386/opcode.d
gas/testsuite/gas/i386/opcode.s
gas/testsuite/gas/i386/x86-64-opcode.d
gas/testsuite/gas/i386/x86-64-opcode.s
opcodes/i386-dis.c
opcodes/i386-opc.tbl
opcodes/i386-tbl.h

index 68e1e8810e6ad300d4e948d9a95e99b603d9898d..732b033c9168d94571b2cfbd1338521b8fb58133 100644 (file)
@@ -588,6 +588,7 @@ Disassembly of section .text:
  *[0-9a-f]+:   85 c3 [         ]*test[         ]+ebx,eax
  *[0-9a-f]+:   85 d8 [         ]*test[         ]+eax,ebx
  *[0-9a-f]+:   85 18 [         ]*test[         ]+(DWORD PTR )?\[eax\],ebx
+ *[0-9a-f]+:   f1[     ]+int1[         ]+
 [      ]*[a-f0-9]+:    0f 4a 90 90 90 90 90    cmovp  edx,DWORD PTR \[eax-0x6f6f6f70\]
 [      ]*[a-f0-9]+:    0f 4b 90 90 90 90 90    cmovnp edx,DWORD PTR \[eax-0x6f6f6f70\]
 [      ]*[a-f0-9]+:    66 0f 4a 90 90 90 90 90         cmovp  dx,WORD PTR \[eax-0x6f6f6f70\]
index 8d7716b6fa81a27ed6fac2dc10e9eb279a49a6c2..6a9c4cd8717c59a2b161cdc802ab843942272ac8 100644 (file)
@@ -588,6 +588,7 @@ Disassembly of section .text:
  *[0-9a-f]+:   85 c3 [         ]*testl[        ]+%eax,%ebx
  *[0-9a-f]+:   85 d8 [         ]*testl[        ]+%ebx,%eax
  *[0-9a-f]+:   85 18 [         ]*testl[        ]+%ebx,\(%eax\)
+ *[0-9a-f]+:   f1[     ]+int1[         ]+
 [      ]*[a-f0-9]+:    0f 4a 90 90 90 90 90    cmovpl -0x6f6f6f70\(%eax\),%edx
 [      ]*[a-f0-9]+:    0f 4b 90 90 90 90 90    cmovnpl -0x6f6f6f70\(%eax\),%edx
 [      ]*[a-f0-9]+:    66 0f 4a 90 90 90 90 90         cmovpw -0x6f6f6f70\(%eax\),%dx
index cc57b9edb80bc78eccd9954dff07d34277c7b69f..9c1f67f5fd110b2cec4c253b5a408348d20d56f3 100644 (file)
@@ -587,6 +587,7 @@ Disassembly of section .text:
  9f5:  85 c3 [         ]*test   %eax,%ebx
  9f7:  85 d8 [         ]*test   %ebx,%eax
  9f9:  85 18 [         ]*test   %ebx,\(%eax\)
+ 9fb:  f1 [    ]*int1   
 [      ]*[a-f0-9]+:    0f 4a 90 90 90 90 90    cmovp  -0x6f6f6f70\(%eax\),%edx
 [      ]*[a-f0-9]+:    0f 4b 90 90 90 90 90    cmovnp -0x6f6f6f70\(%eax\),%edx
 [      ]*[a-f0-9]+:    66 0f 4a 90 90 90 90 90         cmovp  -0x6f6f6f70\(%eax\),%dx
index 1f803c38e5d506d9a4713d2e8078fbe002ccd552..d3255f2b80c3f56488527f7fe7171872760b93dc 100644 (file)
@@ -585,6 +585,8 @@ foo:
  test   %ebx,%eax
  test   (%eax),%ebx
 
+ int1
+
  cmovpe  0x90909090(%eax),%edx
  cmovpo 0x90909090(%eax),%edx
  cmovpe  0x90909090(%eax),%dx
index ab55d2ca35064dc2a7b4ae96be1db813faa45be9..c925938fdc497feb64d0b1df603bd5c36a4c3bce 100644 (file)
@@ -325,6 +325,9 @@ Disassembly of section .text:
 [      ]*[a-f0-9]+:    48 0f 07                sysretq *
 [      ]*[a-f0-9]+:    0f 01 f8                swapgs 
 [      ]*[a-f0-9]+:    66 68 22 22             pushw  \$0x2222
+[      ]*[a-f0-9]+:    f1                      int1 +
+[      ]*[a-f0-9]+:    cc                      int3 +
+[      ]*[a-f0-9]+:    cd 90                   int    \$0x90
 [      ]*[a-f0-9]+:    f6 c9 01                test   \$(0x)?0*1,%cl
 [      ]*[a-f0-9]+:    66 f7 c9 02 00          test   \$(0x)?0*2,%cx
 [      ]*[a-f0-9]+:    f7 c9 04 00 00 00       test   \$(0x)?0*4,%ecx
index 28c100f812e44c0d7911e28561594289edbe7fc6..6575cc33438ad23526778328fbbc766aadc6155f 100644 (file)
 
        pushw $0x2222
 
+       int1
+       int3
+       int    $0x90
+
        .byte 0xf6, 0xc9, 0x01
        .byte 0x66, 0xf7, 0xc9, 0x02, 0x00
        .byte 0xf7, 0xc9, 0x04, 0x00, 0x00, 0x00
index 21e40850544405a32a1dea4d1625917a79d281a8..122f4af0b46980f0b7b0de718d892ea19a196861 100644 (file)
@@ -1965,7 +1965,7 @@ static const struct dis386 dis386[] = {
   { "outG",            { indirDX, zAX }, 0 },
   /* f0 */
   { Bad_Opcode },      /* lock prefix */
-  { "icebp",           { XX }, 0 },
+  { "int1",            { XX }, 0 },
   { Bad_Opcode },      /* repne */
   { Bad_Opcode },      /* repz */
   { "hlt",             { XX }, 0 },
index b0530e5fb82f4f4cd85d67f7ebf6ce6ebf9b45b5..49e72d28b56fbdf4ed7f15324e19ce9a30e22488 100644 (file)
@@ -537,6 +537,7 @@ bts, 0xfba, 5, Cpu386, Modrm|No_bSuf|No_sSuf|No_ldSuf|HLEPrefixLock, { Imm8, Reg
 // See gas/config/tc-i386.c for conversion of 'int $3' into the special
 // int 3 insn.
 int, 0xcd, None, 0, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Imm8 }
+int1, 0xf1, None, 0, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, {}
 int3, 0xcc, None, 0, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, {}
 into, 0xce, None, CpuNo64, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, {}
 iret, 0xcf, None, 0, DefaultSize|No_bSuf|No_sSuf|No_ldSuf, {}
index df139ba61218a307f9011741fe0c87559c71e627..15c0b47a915494399e374eca16e76c6dafdf6d4b 100644 (file)
@@ -5229,6 +5229,19 @@ const insn_template i386_optab[] =
         0, 0, 0, 0, 0, 0 } },
     { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          0, 0, 0, 0, 0, 0, 0 } } } },
+  { "int1", 0xf1, None, 0,
+    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0 } } } },
   { "int3", 0xcc, None, 0,
     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,