mirror of
https://github.com/opnsense/src.git
synced 2026-04-21 14:17:06 -04:00
This corresponds to the following illumos issues: 5755 want support for Intel FMA instrs 5756 want support for Intel BMI1 instrs 5757 want support for Intel BMI2 instrs 5758 want support for Intel AVX2 instrs 7204 Want broadwell rdseed and adx support 7208 Want stac/clac disasm support 7733 Need SHA Instruction dis support 7756 dis can't handle x86 SSE 3 instructions 7757 want avx2 disasm tests 7758 want SSE 4.1 disasm tests MFC after: 2 weeks
111 lines
3 KiB
C
111 lines
3 KiB
C
/*
|
|
* CDDL HEADER START
|
|
*
|
|
* The contents of this file are subject to the terms of the
|
|
* Common Development and Distribution License (the "License").
|
|
* You may not use this file except in compliance with the License.
|
|
*
|
|
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
|
|
* or http://www.opensolaris.org/os/licensing.
|
|
* See the License for the specific language governing permissions
|
|
* and limitations under the License.
|
|
*
|
|
* When distributing Covered Code, include this CDDL HEADER in each
|
|
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
|
|
* If applicable, add the following below this CDDL HEADER, with the
|
|
* fields enclosed by brackets "[]" replaced with your own identifying
|
|
* information: Portions Copyright [yyyy] [name of copyright owner]
|
|
*
|
|
* CDDL HEADER END
|
|
*/
|
|
/*
|
|
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
|
|
* Use is subject to license terms.
|
|
*/
|
|
|
|
/* Copyright (c) 1988 AT&T */
|
|
/* All Rights Reserved */
|
|
|
|
/*
|
|
* $FreeBSD$
|
|
*/
|
|
|
|
#ifndef _DIS_TABLES_H
|
|
#define _DIS_TABLES_H
|
|
|
|
/*
|
|
* Constants and prototypes for the IA32 disassembler backend. See dis_tables.c
|
|
* for usage information and documentation.
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <sys/types.h>
|
|
#include <sys/param.h>
|
|
|
|
/*
|
|
* values for cpu mode
|
|
*/
|
|
#define SIZE16 1
|
|
#define SIZE32 2
|
|
#define SIZE64 3
|
|
|
|
#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 */
|
|
} 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;
|
|
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;
|
|
#endif
|
|
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) */
|
|
|
|
#ifdef DIS_TEXT
|
|
extern void dtrace_disx86_str(dis86_t *x, uint_t cpu_mode, uint64_t pc,
|
|
char *buf, size_t len);
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _DIS_TABLES_H */
|