xref: /aosp_15_r20/external/capstone/arch/PowerPC/PPCMapping.h (revision 9a0e4156d50a75a99ec4f1653a0e9602a5d45c18)
1*9a0e4156SSadaf Ebrahimi /* Capstone Disassembly Engine */
2*9a0e4156SSadaf Ebrahimi /* By Nguyen Anh Quynh <[email protected]>, 2013-2015 */
3*9a0e4156SSadaf Ebrahimi 
4*9a0e4156SSadaf Ebrahimi #ifndef CS_PPC_MAP_H
5*9a0e4156SSadaf Ebrahimi #define CS_PPC_MAP_H
6*9a0e4156SSadaf Ebrahimi 
7*9a0e4156SSadaf Ebrahimi #include "capstone/capstone.h"
8*9a0e4156SSadaf Ebrahimi 
9*9a0e4156SSadaf Ebrahimi // return name of regiser in friendly string
10*9a0e4156SSadaf Ebrahimi const char *PPC_reg_name(csh handle, unsigned int reg);
11*9a0e4156SSadaf Ebrahimi 
12*9a0e4156SSadaf Ebrahimi // given internal insn id, return public instruction info
13*9a0e4156SSadaf Ebrahimi void PPC_get_insn_id(cs_struct *h, cs_insn *insn, unsigned int id);
14*9a0e4156SSadaf Ebrahimi 
15*9a0e4156SSadaf Ebrahimi const char *PPC_insn_name(csh handle, unsigned int id);
16*9a0e4156SSadaf Ebrahimi const char *PPC_group_name(csh handle, unsigned int id);
17*9a0e4156SSadaf Ebrahimi 
18*9a0e4156SSadaf Ebrahimi // map internal raw register to 'public' register
19*9a0e4156SSadaf Ebrahimi ppc_reg PPC_map_register(unsigned int r);
20*9a0e4156SSadaf Ebrahimi 
21*9a0e4156SSadaf Ebrahimi struct ppc_alias {
22*9a0e4156SSadaf Ebrahimi 	unsigned int id;	// instruction id
23*9a0e4156SSadaf Ebrahimi 	int cc;	// code condition
24*9a0e4156SSadaf Ebrahimi 	const char *mnem;
25*9a0e4156SSadaf Ebrahimi };
26*9a0e4156SSadaf Ebrahimi 
27*9a0e4156SSadaf Ebrahimi // given alias mnemonic, return instruction ID & CC
28*9a0e4156SSadaf Ebrahimi bool PPC_alias_insn(const char *name, struct ppc_alias *alias);
29*9a0e4156SSadaf Ebrahimi 
30*9a0e4156SSadaf Ebrahimi // check if this insn is relative branch
31*9a0e4156SSadaf Ebrahimi bool PPC_abs_branch(cs_struct *h, unsigned int id);
32*9a0e4156SSadaf Ebrahimi 
33*9a0e4156SSadaf Ebrahimi #endif
34*9a0e4156SSadaf Ebrahimi 
35