Implement INVLPGA according to the documentation
authorH. Peter Anvin <hpa@zytor.com>
Sun, 23 Sep 2007 05:33:56 +0000 (22:33 -0700)
committerH. Peter Anvin <hpa@zytor.com>
Sun, 23 Sep 2007 05:35:28 +0000 (22:35 -0700)
INVLPGA is defined as taking rax,ecx but "the portion of rax used to
form the address is determined by the effective address size", so it
is really ax/eax/rax.

insns.dat
test/invlpga.asm [new file with mode: 0644]

index 86fdb56..eb5cead 100644 (file)
--- a/insns.dat
+++ b/insns.dat
@@ -569,6 +569,9 @@ INT3                void                    \1\xCC                          8086
 INTO           void                    \1\xCE                          8086,NOLONG
 INVD           void                    \2\x0F\x08                      486,PRIV
 INVLPG         mem                     \2\x0F\x01\207                  486,PRIV
+INVLPGA                reg_ax,reg_ecx          \310\3\x0F\x01\xDF              X86_64,AMD,NOLONG
+INVLPGA                reg_eax,reg_ecx         \311\3\x0F\x01\xDF              X86_64,AMD
+INVLPGA                reg_rax,reg_ecx         \313\3\x0F\x01\xDF              X64,AMD
 INVLPGA                void                    \3\x0F\x01\xDF                  X86_64,AMD
 IRET           void                    \322\1\xCF                      8086
 IRETD          void                    \321\1\xCF                      386
diff --git a/test/invlpga.asm b/test/invlpga.asm
new file mode 100644 (file)
index 0000000..ae68310
--- /dev/null
@@ -0,0 +1,8 @@
+       bits 32
+       invlpga
+       invlpga ax,ecx
+       invlpga eax,ecx
+       bits 64
+       invlpga
+       invlpga eax,ecx
+       invlpga rax,ecx