Index: src/trusted/validator/x86/x86_insts.h |
diff --git a/src/trusted/validator/x86/x86_insts.h b/src/trusted/validator/x86/x86_insts.h |
deleted file mode 100644 |
index 6087a2b1e312eea9bb9ce7da72743481bfaaca3a..0000000000000000000000000000000000000000 |
--- a/src/trusted/validator/x86/x86_insts.h |
+++ /dev/null |
@@ -1,191 +0,0 @@ |
-/* |
- * Copyright (c) 2012 The Native Client Authors. All rights reserved. |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
- |
-/* |
- * x86_insts.h - Holds common utilties for decoding x86 instructions. |
- */ |
- |
-#ifndef NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_X86_INSTS_H__ |
-#define NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_X86_INSTS_H__ |
- |
-#include "native_client/src/include/portability.h" |
- |
-/* Readability macros for bitset testing. */ |
-/* Set contains bit. */ |
-#define NaClHasBit(set, bit) ((set) & (bit)) |
- |
-/* Set contains (all) bits. */ |
-#define NaClHasBits(set, bits) ((bits) == ((set) & (bits))) |
- |
-/* Set contains bits other than given bit. */ |
-#define NaClExcludesBit(set, bit) (~(set) & bit) |
- |
-/* Readability macros for changing bitsets. */ |
-#define NaClAddBits(set, bits) (set |= (bits)) |
-#define NaClRemoveBits(set, bits) (set &= ~(bits)) |
- |
-EXTERN_C_BEGIN |
- |
-/* Defines the corresponding byte encodings for each of the prefixes. */ |
-#define kValueSEGCS 0x2e |
-#define kValueSEGSS 0x36 |
-#define kValueSEGFS 0x64 |
-#define kValueSEGGS 0x65 |
-#define kValueDATA16 0x66 |
-#define kValueADDR16 0x67 |
-#define kValueREPNE 0xf2 |
-#define kValueREP 0xf3 |
-#define kValueLOCK 0xf0 |
-#define kValueSEGES 0x26 |
-#define kValueSEGDS 0x3e |
- |
-/* Using a bit mask here. Hopefully nobody will be offended. |
- * Prefix usage: 0x2e and 0x3e are used as branch prediction hints |
- * 0x64 and 0x65 needed for TLS |
- * 0x26 and 0x36 shouldn't be needed |
- * These are #defines, not const ints, because they are used |
- * for array initialization |
- */ |
-#define kPrefixSEGCS 0x0001 /* 0x2e */ |
-#define kPrefixSEGSS 0x0002 /* 0x36 */ |
-#define kPrefixSEGFS 0x0004 /* 0x64 */ |
-#define kPrefixSEGGS 0x0008 /* 0x65 */ |
-#define kPrefixDATA16 0x0010 /* 0x66 - OKAY */ |
-#define kPrefixADDR16 0x0020 /* 0x67 - disallowed */ |
-#define kPrefixREPNE 0x0040 /* 0xf2 - OKAY */ |
-#define kPrefixREP 0x0080 /* 0xf3 - OKAY */ |
-#define kPrefixLOCK 0x0100 /* 0xf0 - OKAY */ |
-#define kPrefixSEGES 0x0200 /* 0x26 - disallowed */ |
-#define kPrefixSEGDS 0x0400 /* 0x3e - disallowed */ |
-#define kPrefixREX 0x1000 /* 0x40 - 0x4f Rex prefix */ |
- |
-/* a new enumerated type for instructions. |
- * Note: Each enumerate type is marked with one of the following symbols, |
- * defining the validator it us used for: |
- * 32 - The x86-32 validator. |
- * 64 - The x86-64 validator. |
- * Both - Both the x86-32 and the x86-64 validators. |
- * Note: The code for the x86-64 validator is being cleaned up, and there |
- * are still uses of the "32" tag for x86 instructions. |
- * TODO(karl) - Fix this comment when modeling for the x86-64 has been cleaned |
- * up. |
- */ |
-typedef enum { |
- NACLi_UNDEFINED = 0, /* uninitialized space; should never happen */ /* Both */ |
- NACLi_ILLEGAL, /* not allowed in NaCl */ /* Both */ |
- NACLi_INVALID, /* not valid on any known x86 */ /* Both */ |
- NACLi_SYSTEM, /* ring-0 instruction, not allowed in NaCl */ /* Both */ |
- NACLi_NOP, /* Predefined nop instruction sequence. */ /* 32 */ |
- NACLi_386, /* an allowed instruction on all i386 implementations */ |
- /* Both */ |
- /* subset of i386 that allows LOCK prefix. NOTE: |
- * This is only used for the 32 bit validator. The new |
- * 64 bit validator uses "InstFlag(OpcodeLockable)" |
- * to communicate this (which separates the CPU ID |
- * information from whether the instruction is lockable. |
- * Hopefully, in future releases, this enumerated type |
- * will be removed. |
- */ |
- NACLi_386L, /* 32 */ |
- NACLi_386R, /* subset of i386 that allow REP prefix */ /* 32 */ |
- NACLi_386RE, /* subset of i386 that allow REPE/REPZ prefixes */ |
- /* 32 */ |
- NACLi_JMP8, /* 32 */ |
- NACLi_JMPZ, /* 32 */ |
- NACLi_INDIRECT, /* 32 */ |
- NACLi_OPINMRM, /* 32 */ |
- NACLi_RETURN, /* 32 */ |
- /* Both */ |
- NACLi_LAHF, /* LAHF/SAHF: unconditionally allowed in 32-bit |
- conditionally allowed in 64-bit mode */ |
- NACLi_SFENCE_CLFLUSH, /* Both */ |
- NACLi_CMPXCHG8B, /* Both */ |
- NACLi_CMPXCHG16B, /* 64-bit mode only, illegal for NaCl */ /* Both */ |
- NACLi_CMOV, /* Both */ |
- NACLi_RDMSR, /* Both */ |
- NACLi_RDTSC, /* Both */ |
- NACLi_RDTSCP, /* AMD only */ /* Both */ |
- NACLi_SYSCALL, /* AMD only; equivalent to SYSENTER */ /* Both */ |
- NACLi_SYSENTER, /* Both */ |
- NACLi_X87, /* Both */ |
- NACLi_X87_FSINCOS, /* Both */ |
- NACLi_MMX, /* Both */ |
- NACLi_MMXSSE2, /* MMX with no prefix, SSE2 with 0x66 prefix */ /* Both */ |
- NACLi_3DNOW, /* AMD only */ /* Both */ |
- NACLi_EMMX, /* Cyrix only; not supported yet */ /* Both */ |
- NACLi_E3DNOW, /* AMD only */ /* Both */ |
- NACLi_SSE, /* Both */ |
- NACLi_SSE2, /* no prefix => MMX; prefix 66 => SSE; */ /* Both */ |
- /* f2, f3 not allowed unless used for opcode selection */ |
- NACLi_SSE2x, /* SSE2; prefix 66 required!!! */ /* 32 */ |
- NACLi_SSE3, /* Both */ |
- NACLi_SSE4A, /* AMD only */ /* Both */ |
- NACLi_SSE41, /* Both */ |
- NACLi_SSE42, /* Both */ |
- NACLi_MOVBE, /* Both */ |
- NACLi_POPCNT, /* Both */ |
- NACLi_LZCNT, /* Both */ |
- NACLi_LONGMODE,/* AMD only? */ /* 32 */ |
- NACLi_SVM, /* AMD only */ /* Both */ |
- NACLi_SSSE3, /* Both */ |
- NACLi_3BYTE, /* 32 */ |
- NACLi_FCMOV, /* 32 */ |
- NACLi_VMX, /* 64 */ |
- NACLi_FXSAVE /* SAVE/RESTORE xmm, mmx, and x87 state. */ /* 64 */ |
- /* NOTE: This enum must be kept consistent with kNaClInstTypeRange */ |
- /* (defined below). */ |
- /* Note: If you change this enumerated type, be sure to update */ |
- /* kNaClInstTypeString in x86_insts.c. */ |
-} NaClInstType; |
- |
-#define kNaClInstTypeRange 49 |
- |
-/* Returns the print name for the enumerated type.*/ |
-const char* NaClInstTypeString(NaClInstType typ); |
- |
-/* Define the maximum register value that can be encoded into the opcode |
- * byte. |
- */ |
-#define kMaxRegisterIndexInOpcode 7 |
- |
-extern const uint8_t kFirstX87Opcode; /* 0xd8 */ |
-extern const uint8_t kLastX87Opcode; /* 0xdf */ |
- |
-/* Defines the opcode for the WAIT instruction. |
- * Note: WAIT is an x87 instruction but not in the coproc opcode space. |
- */ |
-extern const uint8_t kWAITOp; /* 0x9b */ |
- |
-#define NCDTABLESIZE 256 |
- |
-extern const uint8_t kTwoByteOpcodeByte1; /* 0x0f */ |
-extern const uint8_t k3DNowOpcodeByte2; /* 0x0f */ |
-extern const int kMaxPrefixBytes; /* 4 */ |
- |
-/* Accessors for the ModRm byte. */ |
-extern uint8_t modrm_mod(uint8_t modrm); |
-extern uint8_t modrm_rm(uint8_t modrm); |
-extern uint8_t modrm_reg(uint8_t modrm); |
-extern uint8_t modrm_opcode(uint8_t modrm); |
- |
-/* Accessors for the Sib byte. */ |
-extern uint8_t sib_ss(uint8_t sib); |
-extern uint8_t sib_index(uint8_t sib); |
-extern uint8_t sib_base(uint8_t sib); |
- |
-/* Defines the range of rex prefix values. */ |
-extern const uint8_t NaClRexMin; /* 0x40 */ |
-extern const uint8_t NaClRexMax; /* 0x4F */ |
- |
-/* Accessors for each of the rex bits. */ |
-uint8_t NaClRexW(uint8_t prefix); |
-uint8_t NaClRexR(uint8_t prefix); |
-uint8_t NaClRexX(uint8_t prefix); |
-uint8_t NaClRexB(uint8_t prefix); |
- |
-EXTERN_C_END |
- |
-#endif /* NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_X86_INSTS_H__ */ |