1/* kvx-dis.h -- Header file kvx-dis.c
2   Copyright (C) 2009-2024 Free Software Foundation, Inc.
3   Contributed by Kalray SA.
4
5   This file is part of the GNU opcodes library.
6
7   This library is free software; you can redistribute it and/or modify
8   it under the terms of the GNU General Public License as published by
9   the Free Software Foundation; either version 3, or (at your option)
10   any later version.
11
12   It is distributed in the hope that it will be useful, but WITHOUT
13   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
15   License for more details.
16
17   You should have received a copy of the GNU General Public License
18   along with this program; see the file COPYING3. If not,
19   see <http://www.gnu.org/licenses/>.  */
20
21#ifndef _KV3_DIS_H_
22#define _KV3_DIS_H_
23
24#include "dis-asm.h"
25
26#define KVX_GPR_REG_SP 12
27#define KVX_GPR_REG_FP 14
28
29enum kvx_prologue_epilogue_insn_type
30{
31  KVX_PROL_EPIL_INSN_SD,
32  KVX_PROL_EPIL_INSN_SQ,
33  KVX_PROL_EPIL_INSN_SO,
34  KVX_PROL_EPIL_INSN_GET_RA,
35  KVX_PROL_EPIL_INSN_ADD_FP,
36  KVX_PROL_EPIL_INSN_ADD_SP,
37  KVX_PROL_EPIL_INSN_RESTORE_SP_FROM_FP,
38  KVX_PROL_EPIL_INSN_GOTO,
39  KVX_PROL_EPIL_INSN_IGOTO,
40  KVX_PROL_EPIL_INSN_CB,
41  KVX_PROL_EPIL_INSN_RET,
42  KVX_PROL_EPIL_INSN_CALL,
43};
44
45struct kvx_prologue_epilogue_insn
46{
47  enum kvx_prologue_epilogue_insn_type insn_type;
48  uint64_t immediate;
49  int gpr_reg[3];
50  int nb_gprs;
51};
52
53struct kvx_prologue_epilogue_bundle
54{
55  struct kvx_prologue_epilogue_insn insn[6];
56  int nb_insn;
57};
58
59int decode_prologue_epilogue_bundle (bfd_vma memaddr,
60				     struct disassemble_info *info,
61				     struct kvx_prologue_epilogue_bundle *pb);
62
63void parse_kvx_dis_option (const char *option);
64
65#endif
66