]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/i386/dis_tables.h
xnu-6153.121.1.tar.gz
[apple/xnu.git] / bsd / i386 / dis_tables.h
index 5367b5277aa5c054ca1d158be36f189603aa58bc..1f6f2c7813036c49952507044ace6965ce4c8f6a 100644 (file)
  */
 
 /*     Copyright (c) 1988 AT&T */
-/*       All Rights Reserved   */
+/*       All Rights Reserved   */
 
 
 #ifndef _DIS_TABLES_H
-#define        _DIS_TABLES_H
-
-/* #pragma ident       "@(#)dis_tables.h       1.10    07/07/10 SMI" */
+#define _DIS_TABLES_H
 
 /*
  * Constants and prototypes for the IA32 disassembler backend.  See dis_tables.c
  * for usage information and documentation.
  */
 
+/*
+ * APPLE NOTE: There is a copy of this file for userspace in
+ * dtrace:sys_dis_tables.h
+ *
+ * It needs to be in sync with this file.
+ */
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -48,55 +53,56 @@ extern "C" {
 /*
  * values for cpu mode
  */
-#define        SIZE16  1
-#define        SIZE32  2
-#define        SIZE64  3
+#define SIZE16  1
+#define SIZE32  2
+#define SIZE64  3
 
-#define        OPLEN   256
-#define        PFIXLEN   8
-#define        NCPS    12      /* number of chars per symbol   */
+#define OPLEN   256
+#define PFIXLEN   8
+#define NCPS    20      /* number of chars per symbol  */
 
 /*
  * data structures that must be provided to dtrace_dis86()
  */
 typedef struct d86opnd {
-       char            d86_opnd[OPLEN];        /* symbolic rep of operand */
-       char            d86_prefix[PFIXLEN];    /* any prefix string or "" */
-       uint_t          d86_mode;               /* mode for immediate */
-       uint_t          d86_value_size;         /* size in bytes of d86_value */
-       uint64_t        d86_value;              /* immediate value of opnd */
+       char            d86_opnd[OPLEN];        /* symbolic rep of operand */
+       char            d86_prefix[PFIXLEN];    /* any prefix string or "" */
+       uint_t          d86_mode;               /* mode for immediate */
+       uint_t          d86_value_size;         /* size in bytes of d86_value */
+       uint64_t        d86_value;              /* immediate value of opnd */
 } d86opnd_t;
 
 typedef struct dis86 {
-       uint_t          d86_mode;
-       uint_t          d86_error;
-       uint_t          d86_len;                /* instruction length */
-       int             d86_rmindex;            /* index of modrm byte or -1 */
-       uint_t          d86_memsize;            /* size of memory referenced */
-       char            d86_bytes[16];          /* bytes of instruction */
-       char            d86_mnem[OPLEN];
-       uint_t          d86_numopnds;
-       uint_t          d86_rex_prefix;         /* value of REX prefix if !0 */
-       char            *d86_seg_prefix;        /* segment prefix, if any */
-       uint_t          d86_opnd_size;
-       uint_t          d86_addr_size;
-       uint_t          d86_got_modrm;
-       struct d86opnd  d86_opnd[4];            /* up to 4 operands */
-       int             (*d86_check_func)(void *);
-       int             (*d86_get_byte)(void *);
+       uint_t          d86_mode;
+       uint_t          d86_error;
+       uint_t          d86_len;                /* instruction length */
+       int             d86_rmindex;            /* index of modrm byte or -1 */
+       uint_t          d86_memsize;            /* size of memory referenced */
+       char            d86_bytes[16];          /* bytes of instruction */
+       char            d86_mnem[OPLEN];
+       uint_t          d86_numopnds;
+       uint_t          d86_rex_prefix;         /* value of REX prefix if !0 */
+       char            *d86_seg_prefix;        /* segment prefix, if any */
+       uint_t          d86_opnd_size;
+       uint_t          d86_addr_size;
+       uint_t          d86_got_modrm;
+       uint_t          d86_vsib;               /* Has a VSIB */
+       struct d86opnd  d86_opnd[4];            /* up to 4 operands */
+       int             (*d86_check_func)(void *);
+       int             (*d86_get_byte)(void *);
 #ifdef DIS_TEXT
-       int             (*d86_sym_lookup)(void *, uint64_t, char *, size_t);
-       int             (*d86_sprintf_func)(char *, size_t, const char *, ...);
-       int             d86_flags;
-       uint_t          d86_imm_bytes;
+       int             (*d86_sym_lookup)(void *, uint64_t, char *, size_t);
+       int             (*d86_sprintf_func)(char *, size_t, const char *, ...);
+       int             d86_flags;
+       uint_t          d86_imm_bytes;
 #endif
-       void            *d86_data;
+       void            *d86_data;
 } dis86_t;
 
 extern int dtrace_disx86(dis86_t *x, uint_t cpu_mode);
 
-#define        DIS_F_OCTAL     0x1     /* Print all numbers in octal */
-#define        DIS_F_NOIMMSYM  0x2     /* Don't print symbols for immediates (.o) */
+#define DIS_F_OCTAL     0x1     /* Print all numbers in octal */
+#define DIS_F_NOIMMSYM  0x2     /* Don't print symbols for immediates (.o) */
 
 #ifdef DIS_TEXT
 extern void dtrace_disx86_str(dis86_t *x, uint_t cpu_mode, uint64_t pc,
@@ -108,4 +114,3 @@ extern void dtrace_disx86_str(dis86_t *x, uint_t cpu_mode, uint64_t pc,
 #endif
 
 #endif /* _DIS_TABLES_H */
-