svn commit: r305849 - head/sys/amd64/include

Bruce Evans bde at FreeBSD.org
Thu Sep 15 18:30:54 UTC 2016


Author: bde
Date: Thu Sep 15 18:30:53 2016
New Revision: 305849
URL: https://svnweb.freebsd.org/changeset/base/305849

Log:
  Decode some REX prefixes in inst_call().  This makes the 'next' and
  'until' commands work in more cases.

Modified:
  head/sys/amd64/include/db_machdep.h

Modified: head/sys/amd64/include/db_machdep.h
==============================================================================
--- head/sys/amd64/include/db_machdep.h	Thu Sep 15 17:37:30 2016	(r305848)
+++ head/sys/amd64/include/db_machdep.h	Thu Sep 15 18:30:53 2016	(r305849)
@@ -69,14 +69,15 @@ do {						\
 
 #define	I_CALL		0xe8
 #define	I_CALLI		0xff
+#define	i_calli(ins)	(((ins)&0xff) == I_CALLI && ((ins)&0x3800) == 0x1000)
 #define	I_RET		0xc3
 #define	I_IRET		0xcf
+#define	i_rex(ins)	(((ins) & 0xff) == 0x41 || ((ins) & 0xff) == 0x43)
 
 #define	inst_trap_return(ins)	(((ins)&0xff) == I_IRET)
 #define	inst_return(ins)	(((ins)&0xff) == I_RET)
-#define	inst_call(ins)		(((ins)&0xff) == I_CALL || \
-				 (((ins)&0xff) == I_CALLI && \
-				  ((ins)&0x3800) == 0x1000))
+#define	inst_call(ins)		(((ins)&0xff) == I_CALL || i_calli(ins) || \
+				 (i_calli((ins) >> 8) && i_rex(ins)))
 #define inst_load(ins)		0
 #define inst_store(ins)		0
 


More information about the svn-src-all mailing list