diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2015-12-09 08:01:57 -0800 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2015-12-09 08:01:57 -0800 |
commit | 8eab413676a0222a863f45ff606f3db69bb7afc4 (patch) | |
tree | 8fffeb4186f33ac88d0538ac9ab3cdc07d62d136 /opcodes/i386-dis.c | |
parent | fa7cc15f24f9cd8e3cc07c7552c3fad1b756eed8 (diff) | |
download | gdb-8eab413676a0222a863f45ff606f3db69bb7afc4.zip gdb-8eab413676a0222a863f45ff606f3db69bb7afc4.tar.gz gdb-8eab413676a0222a863f45ff606f3db69bb7afc4.tar.bz2 |
Implement Intel OSPKE instructions
This patch implements Intel OSPKE instructions documented in Intel64
and IA-32 Architectures Software Developer’s Manual Volume 2, September
2015.
gas/testsuite/
* gas/i386/i386.exp: Run ospke and x86-64-ospke.
* gas/i386/ospke.d: New file.
* gas/i386/ospke.s: Likewise.
* gas/i386/x86-64-ospke.d: Likewise.
opcodes/
* i386-dis.c (MOD_0F01_REG_5): New.
(RM_0F01_REG_5): Likewise.
(reg_table): Use MOD_0F01_REG_5.
(mod_table): Add MOD_0F01_REG_5.
(rm_table): Add RM_0F01_REG_5.
* i386-gen.c (cpu_flag_init): Add CPU_OSPKE_FLAGS.
(cpu_flags): Add CpuOSPKE.
* i386-opc.h (CpuOSPKE): New.
(i386_cpu_flags): Add cpuospke.
* i386-opc.tbl: Add rdpkru and wrpkru instructions.
* i386-init.h: Regenerated.
* i386-tbl.h: Likewise.
Diffstat (limited to 'opcodes/i386-dis.c')
-rw-r--r-- | opcodes/i386-dis.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index ae18cf2..1b4c51a 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -758,6 +758,7 @@ enum MOD_0F01_REG_1, MOD_0F01_REG_2, MOD_0F01_REG_3, + MOD_0F01_REG_5, MOD_0F01_REG_7, MOD_0F12_PREFIX_0, MOD_0F13, @@ -929,6 +930,7 @@ enum RM_0F01_REG_1, RM_0F01_REG_2, RM_0F01_REG_3, + RM_0F01_REG_5, RM_0F01_REG_7, RM_0FAE_REG_5, RM_0FAE_REG_6, @@ -3554,7 +3556,7 @@ static const struct dis386 reg_table[][8] = { { MOD_TABLE (MOD_0F01_REG_2) }, { MOD_TABLE (MOD_0F01_REG_3) }, { "smswD", { Sv }, 0 }, - { Bad_Opcode }, + { MOD_TABLE (MOD_0F01_REG_5) }, { "lmsw", { Ew }, 0 }, { MOD_TABLE (MOD_0F01_REG_7) }, }, @@ -11685,6 +11687,11 @@ static const struct dis386 mod_table[][2] = { { RM_TABLE (RM_0F01_REG_3) }, }, { + /* MOD_0F01_REG_5 */ + { Bad_Opcode }, + { RM_TABLE (RM_0F01_REG_5) }, + }, + { /* MOD_0F01_REG_7 */ { "invlpg", { Mb }, 0 }, { RM_TABLE (RM_0F01_REG_7) }, @@ -12429,6 +12436,17 @@ static const struct dis386 rm_table[][8] = { { "invlpga", { Skip_MODRM }, 0 }, }, { + /* RM_0F01_REG_5 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { "rdpkru", { Skip_MODRM }, 0 }, + { "wrpkru", { Skip_MODRM }, 0 }, + }, + { /* RM_0F01_REG_7 */ { "swapgs", { Skip_MODRM }, 0 }, { "rdtscp", { Skip_MODRM }, 0 }, |