1 /* $OpenBSD: disasm.h,v 1.1 2020/07/25 12:26:09 tobhe Exp $ */ 2 /* $NetBSD: disasm.h,v 1.1 2018/04/01 04:35:03 ryo Exp $ */ 3 4 /* 5 * Copyright (c) 2018 Ryo Shimizu <ryo@nerv.org> 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 1. Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 20 * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 21 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 22 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 23 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 25 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 26 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 * POSSIBILITY OF SUCH DAMAGE. 28 */ 29 30 #ifndef _ARM64_DISASM_H_ 31 #define _ARM64_DISASM_H_ 32 33 typedef struct { 34 db_expr_t (*di_readword)(db_expr_t); 35 void (*di_printaddr)(db_expr_t); 36 int (*di_printf)(const char *, ...) 37 __attribute__((__format__(__kprintf__,1,2))); 38 } disasm_interface_t; 39 40 void disasm_insn(const disasm_interface_t *, vaddr_t, uint32_t); 41 vaddr_t disasm(const disasm_interface_t *, vaddr_t); 42 43 #endif /* _ARM64_DISASM_H_ */ 44