diff options
author | jhb <jhb@FreeBSD.org> | 2012-07-04 16:47:39 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2012-07-04 16:47:39 +0000 |
commit | 850f973fef04e43525ae0c511dd68c04d5d1298a (patch) | |
tree | 20886941e98e8567a2b4f462565c257d22e040a9 | |
parent | 58344b5c4dfb11f345211ed6e4b87ae323576fb2 (diff) | |
download | FreeBSD-src-850f973fef04e43525ae0c511dd68c04d5d1298a.zip FreeBSD-src-850f973fef04e43525ae0c511dd68c04d5d1298a.tar.gz |
Decode the 'xsave', 'xrstor', 'xsaveopt', 'xgetbv', 'xsetbv', and
'rdtscp' instructions.
MFC after: 1 month
-rw-r--r-- | sys/amd64/amd64/db_disasm.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/sys/amd64/amd64/db_disasm.c b/sys/amd64/amd64/db_disasm.c index a6dbf69..c525f8d 100644 --- a/sys/amd64/amd64/db_disasm.c +++ b/sys/amd64/amd64/db_disasm.c @@ -169,9 +169,9 @@ static const char * const db_Grp15[] = { "fxrstor", "ldmxcsr", "stmxcsr", - "", - "", - "", + "xsave", + "xrstor", + "xsaveopt", "clflush" }; @@ -1279,11 +1279,26 @@ db_disasm(loc, altfmt) i_size = NONE; i_mode = 0; break; + case 0xd0: + i_name = "xgetbv"; + i_size = NONE; + i_mode = 0; + break; + case 0xd1: + i_name = "xsetbv"; + i_size = NONE; + i_mode = 0; + break; case 0xf8: i_name = "swapgs"; i_size = NONE; i_mode = 0; break; + case 0xf9: + i_name = "rdtscp"; + i_size = NONE; + i_mode = 0; + break; } } if (ip->i_extra == db_Grp15 && f_mod(rex, regmodrm) == 3) { |