/src/keystone/llvm/keystone/ks_priv.h
| Line | Count | Source | 
| 1 |  | /* Keystone Assembler Engine */ | 
| 2 |  | /* By Nguyen Anh Quynh <aquynh@gmail.com>, 2016 */ | 
| 3 |  |  | 
| 4 |  | #ifndef KS_PRIV_H | 
| 5 |  | #define KS_PRIV_H | 
| 6 |  |  | 
| 7 |  | #include <stdint.h> | 
| 8 |  |  | 
| 9 |  | #include "../../include/keystone/keystone.h" | 
| 10 |  |  | 
| 11 |  | #include "llvm/MC/MCAsmBackend.h" | 
| 12 |  | #include "llvm/MC/MCAsmInfo.h" | 
| 13 |  | #include "llvm/MC/MCContext.h" | 
| 14 |  | #include "llvm/MC/MCInstrInfo.h" | 
| 15 |  | #include "llvm/MC/MCParser/MCTargetAsmParser.h" | 
| 16 |  | #include "llvm/MC/MCTargetOptionsCommandFlags.h" | 
| 17 |  | #include "llvm/Support/SourceMgr.h" | 
| 18 |  | #include "llvm/Support/TargetRegistry.h" | 
| 19 |  | #include "llvm/Support/TargetSelect.h" | 
| 20 |  |  | 
| 21 |  | // These are masks of supported modes for each cpu/arch. | 
| 22 |  | // They should be updated when changes are made to the ks_mode enum typedef. | 
| 23 | 49.6k | #define KS_MODE_ARM_MASK    (KS_MODE_ARM|KS_MODE_THUMB|KS_MODE_LITTLE_ENDIAN|KS_MODE_BIG_ENDIAN|KS_MODE_V8) | 
| 24 | 5.15k | #define KS_MODE_MIPS_MASK   (KS_MODE_MIPS32|KS_MODE_MIPS64|KS_MODE_LITTLE_ENDIAN|KS_MODE_BIG_ENDIAN) | 
| 25 | 13.2k | #define KS_MODE_X86_MASK    (KS_MODE_16|KS_MODE_32|KS_MODE_64|KS_MODE_LITTLE_ENDIAN) | 
| 26 | 5.68k | #define KS_MODE_PPC_MASK    (KS_MODE_PPC32|KS_MODE_PPC64|KS_MODE_LITTLE_ENDIAN|KS_MODE_BIG_ENDIAN) | 
| 27 | 10.4k | #define KS_MODE_SPARC_MASK  (KS_MODE_V9|KS_MODE_SPARC32|KS_MODE_SPARC64|KS_MODE_LITTLE_ENDIAN|KS_MODE_BIG_ENDIAN) | 
| 28 | 3.17k | #define KS_MODE_HEXAGON_MASK  (KS_MODE_BIG_ENDIAN) | 
| 29 | 42 | #define KS_MODE_SYSTEMZ_MASK  (KS_MODE_BIG_ENDIAN) | 
| 30 |  | #define KS_MODE_ARM64_MASK  (KS_MODE_LITTLE_ENDIAN) | 
| 31 |  | #define KS_MODE_M68K_MASK   (KS_MODE_BIG_ENDIAN) | 
| 32 | 21.8k | #define KS_MODE_RISCV_MASK (KS_MODE_RISCV32|KS_MODE_RISCV64|KS_MODE_LITTLE_ENDIAN) | 
| 33 |  |  | 
| 34 |  |  | 
| 35 |  | #define ARR_SIZE(a) (sizeof(a)/sizeof(a[0])) | 
| 36 |  |  | 
| 37 |  | struct ks_struct; | 
| 38 |  |  | 
| 39 |  | // return 0 on success, -1 on failure | 
| 40 |  | typedef void (*ks_args_ks_t)(struct ks_struct*); | 
| 41 |  |  | 
| 42 |  | struct ks_struct { | 
| 43 |  |     ks_arch arch; | 
| 44 |  |     int mode; | 
| 45 |  |     unsigned int errnum; | 
| 46 |  |     ks_opt_value syntax; | 
| 47 |  |  | 
| 48 |  |     ks_args_ks_t init_arch = nullptr; | 
| 49 |  |     const Target *TheTarget = nullptr; | 
| 50 |  |     std::string TripleName; | 
| 51 |  |     SourceMgr SrcMgr; | 
| 52 |  |     MCAsmBackend *MAB = nullptr; | 
| 53 |  |     MCTargetOptions MCOptions; | 
| 54 |  |     MCRegisterInfo *MRI = nullptr; | 
| 55 |  |     MCAsmInfo *MAI = nullptr; | 
| 56 |  |     MCInstrInfo *MCII = nullptr; | 
| 57 |  |     std::string FeaturesStr; | 
| 58 |  |     MCSubtargetInfo *STI = nullptr; | 
| 59 |  |     MCObjectFileInfo MOFI; | 
| 60 |  |     ks_sym_resolver sym_resolver = nullptr; | 
| 61 |  |  | 
| 62 |  |     ks_struct(ks_arch arch, int mode, unsigned int errnum, ks_opt_value syntax) | 
| 63 | 111k |         : arch(arch), mode(mode), errnum(errnum), syntax(syntax) { } | 
| 64 |  | }; | 
| 65 |  |  | 
| 66 |  |  | 
| 67 |  | #endif |