148a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh/* Capstone Disassembly Engine */ 248a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2014 */ 348a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh 48598a219f303802198439f9fc0884dffe19b3b11Nguyen Anh Quynh#ifdef CAPSTONE_HAS_SYSZ 58598a219f303802198439f9fc0884dffe19b3b11Nguyen Anh Quynh 648a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh#include "../../utils.h" 748a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh#include "../../MCRegisterInfo.h" 848a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh#include "SystemZDisassembler.h" 948a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh#include "SystemZInstPrinter.h" 1048a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh#include "SystemZMapping.h" 1148a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh 1248a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynhstatic cs_err init(cs_struct *ud) 1348a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh{ 1448a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh MCRegisterInfo *mri; 1548a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh 1648a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh mri = cs_mem_malloc(sizeof(*mri)); 1748a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh 1848a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh SystemZ_init(mri); 1948a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh ud->printer = SystemZ_printInst; 2048a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh ud->printer_info = mri; 2148a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh ud->getinsn_info = mri; 2248a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh ud->disasm = SystemZ_getInstruction; 2348a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh ud->post_printer = SystemZ_post_printer; 2448a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh 2548a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh ud->reg_name = SystemZ_reg_name; 2648a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh ud->insn_id = SystemZ_get_insn_id; 2748a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh ud->insn_name = SystemZ_insn_name; 28650f96ce431dc38f702641b3f1cf4320e9c9bf94Nguyen Anh Quynh ud->group_name = SystemZ_group_name; 2948a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh 3048a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh return CS_ERR_OK; 3148a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh} 3248a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh 3348a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynhstatic cs_err option(cs_struct *handle, cs_opt_type type, size_t value) 3448a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh{ 3548a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh if (type == CS_OPT_SYNTAX) 36298d413bbc996b09549067b4acb63ea26cde2d68flyingsymbols handle->syntax = (int) value; 3748a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh 3848a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh return CS_ERR_OK; 3948a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh} 4048a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh 4148a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynhstatic void destroy(cs_struct *handle) 4248a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh{ 4348a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh} 4448a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh 4548a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynhvoid SystemZ_enable(void) 4648a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh{ 4748a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh arch_init[CS_ARCH_SYSZ] = init; 4848a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh arch_option[CS_ARCH_SYSZ] = option; 4948a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh arch_destroy[CS_ARCH_SYSZ] = destroy; 5048a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh 5148a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh // support this arch 5248a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh all_arch |= (1 << CS_ARCH_SYSZ); 5348a14ca4cedc1437876eea7357ab0c5e5769676cNguyen Anh Quynh} 548598a219f303802198439f9fc0884dffe19b3b11Nguyen Anh Quynh 558598a219f303802198439f9fc0884dffe19b3b11Nguyen Anh Quynh#endif 56