GDB (xrefs)
Classes | Macros | Enumerations | Functions | Variables
/tmp/gdb-7.10/gdb/mep-tdep.c File Reference
#include "defs.h"
#include "frame.h"
#include "frame-unwind.h"
#include "frame-base.h"
#include "symtab.h"
#include "gdbtypes.h"
#include "gdbcmd.h"
#include "gdbcore.h"
#include "value.h"
#include "inferior.h"
#include "dis-asm.h"
#include "symfile.h"
#include "objfiles.h"
#include "language.h"
#include "arch-utils.h"
#include "regcache.h"
#include "remote.h"
#include "floatformat.h"
#include "sim-regno.h"
#include "disasm.h"
#include "trad-frame.h"
#include "reggroups.h"
#include "elf-bfd.h"
#include "elf/mep.h"
#include "prologue-value.h"
#include "cgen/bitset.h"
#include "infcall.h"
#include "opcodes/mep-desc.h"
#include "opcodes/mep-opc.h"

Go to the source code of this file.

Classes

struct  gdbarch_tdep
 
struct  mep_csr_register
 
struct  mep_prologue
 

Macros

#define IN_SET(set, n)   (MEP_FIRST_ ## set ## _REGNUM <= (n) && (n) <= MEP_LAST_ ## set ## _REGNUM)
 
#define IS_GPR_REGNUM(n)    (IN_SET (GPR, (n)))
 
#define IS_RAW_CSR_REGNUM(n)   (IN_SET (RAW_CSR, (n)))
 
#define IS_RAW_CR_REGNUM(n)   (IN_SET (RAW_CR, (n)))
 
#define IS_RAW_CCR_REGNUM(n)   (IN_SET (RAW_CCR, (n)))
 
#define IS_CSR_REGNUM(n)    (IN_SET (CSR, (n)))
 
#define IS_CR32_REGNUM(n)    (IN_SET (CR32, (n)))
 
#define IS_FP_CR32_REGNUM(n)   (IN_SET (FP_CR32, (n)))
 
#define IS_CR64_REGNUM(n)    (IN_SET (CR64, (n)))
 
#define IS_FP_CR64_REGNUM(n)   (IN_SET (FP_CR64, (n)))
 
#define IS_CR_REGNUM(n)
 
#define IS_CCR_REGNUM(n)    (IN_SET (CCR, (n)))
 
#define IS_RAW_REGNUM(n)    (IN_SET (RAW, (n)))
 
#define IS_PSEUDO_REGNUM(n)   (IN_SET (PSEUDO, (n)))
 
#define NUM_REGS_IN_SET(set)   (MEP_LAST_ ## set ## _REGNUM - MEP_FIRST_ ## set ## _REGNUM + 1)
 
#define MEP_GPR_SIZE   (4) /* Size of a MeP general-purpose register. */
 
#define MEP_PSW_SIZE   (4) /* Size of the PSW register. */
 
#define MEP_LP_SIZE   (4) /* Size of the LP register. */
 
#define CSR(name)   MEP_RAW_ ## name ## _REGNUM, MEP_ ## name ## _REGNUM
 
#define SEXT(n, len)   ((((int) (n)) ^ (1 << ((len) - 1))) - (1 << ((len) - 1)))
 
#define FIELD(i, pos, len)   (((i) >> (pos)) & ((1 << (len)) - 1))
 
#define SFIELD(i, pos, len)   (SEXT (FIELD ((i), (pos), (len)), (len)))
 
#define IS_SW(i)    (((i) & 0xf00f0000) == 0xc00a0000)
 
#define IS_SB(i)    (((i) & 0xf00f0000) == 0xc0080000)
 
#define IS_SH(i)    (((i) & 0xf00f0000) == 0xc0090000)
 
#define SWBH_32_BASE(i)    (FIELD (i, 20, 4))
 
#define SWBH_32_SOURCE(i)    (FIELD (i, 24, 4))
 
#define SWBH_32_OFFSET(i)    (SFIELD (i, 0, 16))
 
#define IS_SW_IMMD(i)    (((i) & 0xf0830000) == 0x40020000)
 
#define SW_IMMD_SOURCE(i)    (FIELD (i, 24, 4))
 
#define SW_IMMD_OFFSET(i)    (FIELD (i, 18, 5) << 2)
 
#define IS_SW_REG(i)    (((i) & 0xf00f0000) == 0x000a0000)
 
#define SW_REG_SOURCE(i)    (FIELD (i, 24, 4))
 
#define SW_REG_BASE(i)    (FIELD (i, 20, 4))
 
#define IS_ADD3_16_REG(i)    (((i) & 0xf0000000) == 0x90000000)
 
#define ADD3_16_REG_SRC1(i)    (FIELD (i, 20, 4)) /* n */
 
#define ADD3_16_REG_SRC2(i)    (FIELD (i, 24, 4)) /* m */
 
#define IS_ADD3_32(i)    (((i) & 0xf00f0000) == 0xc0000000)
 
#define ADD3_32_TARGET(i)    (FIELD (i, 24, 4))
 
#define ADD3_32_SOURCE(i)    (FIELD (i, 20, 4))
 
#define ADD3_32_OFFSET(i)    (SFIELD (i, 0, 16))
 
#define IS_ADD3_16(i)    (((i) & 0xf0830000) == 0x40000000)
 
#define ADD3_16_TARGET(i)    (FIELD (i, 24, 4))
 
#define ADD3_16_OFFSET(i)    (FIELD (i, 18, 5) << 2)
 
#define IS_ADD(i)    (((i) & 0xf0030000) == 0x60000000)
 
#define ADD_TARGET(i)    (FIELD (i, 24, 4))
 
#define ADD_OFFSET(i)    (SFIELD (i, 18, 6))
 
#define IS_LDC(i)    (((i) & 0xf00e0000) == 0x700a0000)
 
#define LDC_IMM(i)    ((FIELD (i, 16, 1) << 4) | FIELD (i, 20, 4))
 
#define LDC_TARGET(i)    (FIELD (i, 24, 4))
 
#define IS_LW(i)    (((i) & 0xf00f0000) == 0xc00e0000)
 
#define LW_TARGET(i)    (FIELD (i, 24, 4))
 
#define LW_BASE(i)    (FIELD (i, 20, 4))
 
#define LW_OFFSET(i)    (SFIELD (i, 0, 16))
 
#define IS_MOV(i)    (((i) & 0xf00f0000) == 0x00000000)
 
#define MOV_TARGET(i)    (FIELD (i, 24, 4))
 
#define MOV_SOURCE(i)    (FIELD (i, 20, 4))
 
#define IS_BRA(i)    (((i) & 0xf0010000) == 0xb0000000)
 
#define BRA_DISP(i)    (SFIELD (i, 17, 11) << 1)
 

Enumerations

enum  {
  MEP_OPT_DIV = 1 << 25, MEP_OPT_MUL = 1 << 24, MEP_OPT_BIT = 1 << 23, MEP_OPT_SAT = 1 << 22,
  MEP_OPT_CLP = 1 << 21, MEP_OPT_MIN = 1 << 20, MEP_OPT_AVE = 1 << 19, MEP_OPT_ABS = 1 << 18,
  MEP_OPT_LDZ = 1 << 16, MEP_OPT_VL64 = 1 << 6, MEP_OPT_VL32 = 1 << 5, MEP_OPT_COP = 1 << 4,
  MEP_OPT_DSP = 1 << 2, MEP_OPT_UCI = 1 << 1, MEP_OPT_DBG = 1 << 0
}
 
enum  {
  MEP_FIRST_RAW_REGNUM = 0, MEP_FIRST_GPR_REGNUM = 0, MEP_R0_REGNUM = 0, MEP_R1_REGNUM = 1,
  MEP_R2_REGNUM = 2, MEP_R3_REGNUM = 3, MEP_R4_REGNUM = 4, MEP_R5_REGNUM = 5,
  MEP_R6_REGNUM = 6, MEP_R7_REGNUM = 7, MEP_R8_REGNUM = 8, MEP_R9_REGNUM = 9,
  MEP_R10_REGNUM = 10, MEP_R11_REGNUM = 11, MEP_R12_REGNUM = 12, MEP_FP_REGNUM = MEP_R8_REGNUM,
  MEP_R13_REGNUM = 13, MEP_TP_REGNUM = MEP_R13_REGNUM, MEP_R14_REGNUM = 14, MEP_GP_REGNUM = MEP_R14_REGNUM,
  MEP_R15_REGNUM = 15, MEP_SP_REGNUM = MEP_R15_REGNUM, MEP_LAST_GPR_REGNUM = MEP_R15_REGNUM, MEP_FIRST_RAW_CSR_REGNUM = 16,
  MEP_RAW_PC_REGNUM = 16, MEP_RAW_LP_REGNUM = 17, MEP_RAW_SAR_REGNUM = 18, MEP_RAW_CSR3_REGNUM = 19,
  MEP_RAW_RPB_REGNUM = 20, MEP_RAW_RPE_REGNUM = 21, MEP_RAW_RPC_REGNUM = 22, MEP_RAW_HI_REGNUM = 23,
  MEP_RAW_LO_REGNUM = 24, MEP_RAW_CSR9_REGNUM = 25, MEP_RAW_CSR10_REGNUM = 26, MEP_RAW_CSR11_REGNUM = 27,
  MEP_RAW_MB0_REGNUM = 28, MEP_RAW_ME0_REGNUM = 29, MEP_RAW_MB1_REGNUM = 30, MEP_RAW_ME1_REGNUM = 31,
  MEP_RAW_PSW_REGNUM = 32, MEP_RAW_ID_REGNUM = 33, MEP_RAW_TMP_REGNUM = 34, MEP_RAW_EPC_REGNUM = 35,
  MEP_RAW_EXC_REGNUM = 36, MEP_RAW_CFG_REGNUM = 37, MEP_RAW_CSR22_REGNUM = 38, MEP_RAW_NPC_REGNUM = 39,
  MEP_RAW_DBG_REGNUM = 40, MEP_RAW_DEPC_REGNUM = 41, MEP_RAW_OPT_REGNUM = 42, MEP_RAW_RCFG_REGNUM = 43,
  MEP_RAW_CCFG_REGNUM = 44, MEP_RAW_CSR29_REGNUM = 45, MEP_RAW_CSR30_REGNUM = 46, MEP_RAW_CSR31_REGNUM = 47,
  MEP_LAST_RAW_CSR_REGNUM = MEP_RAW_CSR31_REGNUM, MEP_FIRST_RAW_CR_REGNUM = 48, MEP_LAST_RAW_CR_REGNUM = MEP_FIRST_RAW_CR_REGNUM + 31, MEP_FIRST_RAW_CCR_REGNUM = 80,
  MEP_LAST_RAW_CCR_REGNUM = MEP_FIRST_RAW_CCR_REGNUM + 63, MEP_MODULE_REGNUM, MEP_LAST_RAW_REGNUM = MEP_MODULE_REGNUM, MEP_NUM_RAW_REGS = MEP_LAST_RAW_REGNUM + 1,
  MEP_FIRST_PSEUDO_REGNUM = MEP_NUM_RAW_REGS, MEP_FIRST_CSR_REGNUM = MEP_FIRST_PSEUDO_REGNUM, MEP_PC_REGNUM = MEP_FIRST_CSR_REGNUM, MEP_LP_REGNUM,
  MEP_SAR_REGNUM, MEP_CSR3_REGNUM, MEP_RPB_REGNUM, MEP_RPE_REGNUM,
  MEP_RPC_REGNUM, MEP_HI_REGNUM, MEP_LO_REGNUM, MEP_CSR9_REGNUM,
  MEP_CSR10_REGNUM, MEP_CSR11_REGNUM, MEP_MB0_REGNUM, MEP_ME0_REGNUM,
  MEP_MB1_REGNUM, MEP_ME1_REGNUM, MEP_PSW_REGNUM, MEP_ID_REGNUM,
  MEP_TMP_REGNUM, MEP_EPC_REGNUM, MEP_EXC_REGNUM, MEP_CFG_REGNUM,
  MEP_CSR22_REGNUM, MEP_NPC_REGNUM, MEP_DBG_REGNUM, MEP_DEPC_REGNUM,
  MEP_OPT_REGNUM, MEP_RCFG_REGNUM, MEP_CCFG_REGNUM, MEP_CSR29_REGNUM,
  MEP_CSR30_REGNUM, MEP_CSR31_REGNUM, MEP_LAST_CSR_REGNUM = MEP_CSR31_REGNUM, MEP_FIRST_CR32_REGNUM,
  MEP_LAST_CR32_REGNUM = MEP_FIRST_CR32_REGNUM + 31, MEP_FIRST_FP_CR32_REGNUM, MEP_LAST_FP_CR32_REGNUM = MEP_FIRST_FP_CR32_REGNUM + 31, MEP_FIRST_CR64_REGNUM,
  MEP_LAST_CR64_REGNUM = MEP_FIRST_CR64_REGNUM + 31, MEP_FIRST_FP_CR64_REGNUM, MEP_LAST_FP_CR64_REGNUM = MEP_FIRST_FP_CR64_REGNUM + 31, MEP_FIRST_CCR_REGNUM,
  MEP_LAST_CCR_REGNUM = MEP_FIRST_CCR_REGNUM + 63, MEP_LAST_PSEUDO_REGNUM = MEP_LAST_CCR_REGNUM, MEP_NUM_PSEUDO_REGS = (MEP_LAST_PSEUDO_REGNUM - MEP_LAST_RAW_REGNUM), MEP_NUM_REGS = MEP_NUM_RAW_REGS + MEP_NUM_PSEUDO_REGS
}
 

Functions

static const CGEN_HW_ENTRY * find_hw_entry_by_prefix_and_isa (CGEN_CPU_DESC desc, const char *prefix, CGEN_BITSET *copro_isa_mask, CGEN_BITSET *generic_isa_mask)
 
static const CGEN_HW_ENTRY * find_hw_entry_by_type (CGEN_CPU_DESC desc, CGEN_HW_TYPE type)
 
static const CGEN_HW_ENTRY * me_module_register_set (CONFIG_ATTR me_module, const char *prefix, CGEN_HW_TYPE generic_type)
 
static CGEN_KEYWORD * register_set_keyword_table (const CGEN_HW_ENTRY *hw)
 
static char * register_name_from_keyword (CGEN_KEYWORD *keyword_table, int regnum)
 
static unsigned int opt_from_option_mask (unsigned int option_mask)
 
static unsigned int me_module_opt (CONFIG_ATTR me_module)
 
static int me_module_cop_data_bus_width (CONFIG_ATTR me_module)
 
static int me_module_big_endian (CONFIG_ATTR me_module)
 
static const char * me_module_name (CONFIG_ATTR me_module)
 
static void mep_init_pseudoregister_maps (void)
 
static int mep_debug_reg_to_regnum (struct gdbarch *gdbarch, int debug_reg)
 
static int mep_pseudo_cr_size (int pseudo)
 
static int mep_pseudo_cr_is_float (int pseudo)
 
static int mep_pseudo_cr_index (int pseudo)
 
static CONFIG_ATTR current_me_module (void)
 
static unsigned int current_options (void)
 
static int current_cop_data_bus_width (void)
 
static CGEN_KEYWORD * current_cr_names (void)
 
static int current_cr_is_float (void)
 
static CGEN_KEYWORD * current_ccr_names (void)
 
static const char * mep_register_name (struct gdbarch *gdbarch, int regnr)
 
static int mep_register_reggroup_p (struct gdbarch *gdbarch, int regnum, struct reggroup *group)
 
static struct typemep_register_type (struct gdbarch *gdbarch, int reg_nr)
 
static CORE_ADDR mep_read_pc (struct regcache *regcache)
 
static enum register_status mep_pseudo_cr32_read (struct gdbarch *gdbarch, struct regcache *regcache, int cookednum, void *buf)
 
static enum register_status mep_pseudo_cr64_read (struct gdbarch *gdbarch, struct regcache *regcache, int cookednum, void *buf)
 
static enum register_status mep_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache, int cookednum, gdb_byte *buf)
 
static void mep_pseudo_csr_write (struct gdbarch *gdbarch, struct regcache *regcache, int cookednum, const void *buf)
 
static void mep_pseudo_cr32_write (struct gdbarch *gdbarch, struct regcache *regcache, int cookednum, const void *buf)
 
static void mep_pseudo_cr64_write (struct gdbarch *gdbarch, struct regcache *regcache, int cookednum, const void *buf)
 
static void mep_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int cookednum, const gdb_byte *buf)
 
static int mep_gdb_print_insn (bfd_vma pc, disassemble_info *info)
 
static int mep_pc_in_vliw_section (CORE_ADDR pc)
 
static CORE_ADDR mep_get_insn (struct gdbarch *gdbarch, CORE_ADDR pc, unsigned long *insn)
 
static int is_arg_reg (pv_t value)
 
static int is_arg_spill (struct gdbarch *gdbarch, pv_t value, pv_t addr, struct pv_area *stack)
 
static void check_for_saved (void *result_untyped, pv_t addr, CORE_ADDR size, pv_t value)
 
static void mep_analyze_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc, CORE_ADDR limit_pc, struct mep_prologue *result)
 
static CORE_ADDR mep_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
 
static const unsigned char * mep_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr, int *lenptr)
 
static struct mep_prologuemep_analyze_frame_prologue (struct frame_info *this_frame, void **this_prologue_cache)
 
static CORE_ADDR mep_frame_base (struct frame_info *this_frame, void **this_prologue_cache)
 
static void mep_frame_this_id (struct frame_info *this_frame, void **this_prologue_cache, struct frame_id *this_id)
 
static struct valuemep_frame_prev_register (struct frame_info *this_frame, void **this_prologue_cache, int regnum)
 
static CORE_ADDR mep_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
 
static CORE_ADDR mep_unwind_sp (struct gdbarch *gdbarch, struct frame_info *next_frame)
 
static int mep_use_struct_convention (struct type *type)
 
static void mep_extract_return_value (struct gdbarch *arch, struct type *type, struct regcache *regcache, gdb_byte *valbuf)
 
static void mep_store_return_value (struct gdbarch *arch, struct type *type, struct regcache *regcache, const gdb_byte *valbuf)
 
static enum return_value_convention mep_return_value (struct gdbarch *gdbarch, struct value *function, struct type *type, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf)
 
static CORE_ADDR mep_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp)
 
static CORE_ADDR push_large_arguments (CORE_ADDR sp, int argc, struct value **argv, CORE_ADDR copy[])
 
static CORE_ADDR mep_push_dummy_call (struct gdbarch *gdbarch, struct value *function, struct regcache *regcache, CORE_ADDR bp_addr, int argc, struct value **argv, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr)
 
static struct frame_id mep_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame)
 
static struct gdbarchmep_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
void _initialize_mep_tdep (void)
 

Variables

struct mep_csr_register mep_csr_registers []
 
static int mep_raw_to_pseudo [MEP_NUM_REGS]
 
static int mep_pseudo_to_raw [MEP_NUM_REGS]
 
static struct reggroupmep_csr_reggroup
 
static struct reggroupmep_cr_reggroup
 
static struct reggroupmep_ccr_reggroup
 
static const struct frame_unwind mep_frame_unwind
 
initialize_file_ftype _initialize_mep_tdep
 

Macro Definition Documentation

#define ADD3_16_OFFSET (   i)    (FIELD (i, 18, 5) << 2)

Definition at line 1555 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define ADD3_16_REG_SRC1 (   i)    (FIELD (i, 20, 4)) /* n */

Definition at line 1543 of file mep-tdep.c.

#define ADD3_16_REG_SRC2 (   i)    (FIELD (i, 24, 4)) /* m */

Definition at line 1544 of file mep-tdep.c.

#define ADD3_16_TARGET (   i)    (FIELD (i, 24, 4))

Definition at line 1554 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define ADD3_32_OFFSET (   i)    (SFIELD (i, 0, 16))

Definition at line 1550 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define ADD3_32_SOURCE (   i)    (FIELD (i, 20, 4))

Definition at line 1549 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define ADD3_32_TARGET (   i)    (FIELD (i, 24, 4))

Definition at line 1548 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define ADD_OFFSET (   i)    (SFIELD (i, 18, 6))

Definition at line 1560 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define ADD_TARGET (   i)    (FIELD (i, 24, 4))

Definition at line 1559 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define BRA_DISP (   i)    (SFIELD (i, 17, 11) << 1)

Definition at line 1581 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define CSR (   name)    MEP_RAW_ ## name ## _REGNUM, MEP_ ## name ## _REGNUM

Definition at line 664 of file mep-tdep.c.

Referenced by mep_init_pseudoregister_maps().

#define FIELD (   i,
  pos,
  len 
)    (((i) >> (pos)) & ((1 << (len)) - 1))

Definition at line 1503 of file mep-tdep.c.

#define IN_SET (   set,
 
)    (MEP_FIRST_ ## set ## _REGNUM <= (n) && (n) <= MEP_LAST_ ## set ## _REGNUM)

Definition at line 614 of file mep-tdep.c.

#define IS_ADD (   i)    (((i) & 0xf0030000) == 0x60000000)

Definition at line 1558 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define IS_ADD3_16 (   i)    (((i) & 0xf0830000) == 0x40000000)

Definition at line 1553 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define IS_ADD3_16_REG (   i)    (((i) & 0xf0000000) == 0x90000000)

Definition at line 1542 of file mep-tdep.c.

#define IS_ADD3_32 (   i)    (((i) & 0xf00f0000) == 0xc0000000)

Definition at line 1547 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define IS_BRA (   i)    (((i) & 0xf0010000) == 0xb0000000)

Definition at line 1580 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define IS_CCR_REGNUM (   n)    (IN_SET (CCR, (n)))
#define IS_CR32_REGNUM (   n)    (IN_SET (CR32, (n)))
#define IS_CR64_REGNUM (   n)    (IN_SET (CR64, (n)))
#define IS_CR_REGNUM (   n)
Value:
#define IS_CR64_REGNUM(n)
Definition: mep-tdep.c:625
#define IS_CR32_REGNUM(n)
Definition: mep-tdep.c:623
#define IS_FP_CR32_REGNUM(n)
Definition: mep-tdep.c:624
#define IS_FP_CR64_REGNUM(n)
Definition: mep-tdep.c:626

Definition at line 627 of file mep-tdep.c.

Referenced by mep_register_name(), mep_register_reggroup_p(), and mep_register_type().

#define IS_CSR_REGNUM (   n)    (IN_SET (CSR, (n)))
#define IS_FP_CR32_REGNUM (   n)    (IN_SET (FP_CR32, (n)))
#define IS_FP_CR64_REGNUM (   n)    (IN_SET (FP_CR64, (n)))
#define IS_GPR_REGNUM (   n)    (IN_SET (GPR, (n)))

Definition at line 617 of file mep-tdep.c.

Referenced by mep_register_name(), and mep_register_reggroup_p().

#define IS_LDC (   i)    (((i) & 0xf00e0000) == 0x700a0000)

Definition at line 1564 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define IS_LW (   i)    (((i) & 0xf00f0000) == 0xc00e0000)

Definition at line 1569 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define IS_MOV (   i)    (((i) & 0xf00f0000) == 0x00000000)

Definition at line 1575 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define IS_PSEUDO_REGNUM (   n)    (IN_SET (PSEUDO, (n)))

Definition at line 632 of file mep-tdep.c.

#define IS_RAW_CCR_REGNUM (   n)    (IN_SET (RAW_CCR, (n)))

Definition at line 620 of file mep-tdep.c.

#define IS_RAW_CR_REGNUM (   n)    (IN_SET (RAW_CR, (n)))

Definition at line 619 of file mep-tdep.c.

Referenced by mep_register_type().

#define IS_RAW_CSR_REGNUM (   n)    (IN_SET (RAW_CSR, (n)))

Definition at line 618 of file mep-tdep.c.

#define IS_RAW_REGNUM (   n)    (IN_SET (RAW, (n)))

Definition at line 631 of file mep-tdep.c.

#define IS_SB (   i)    (((i) & 0xf00f0000) == 0xc0080000)

Definition at line 1524 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define IS_SH (   i)    (((i) & 0xf00f0000) == 0xc0090000)

Definition at line 1526 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define IS_SW (   i)    (((i) & 0xf00f0000) == 0xc00a0000)

Definition at line 1522 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define IS_SW_IMMD (   i)    (((i) & 0xf0830000) == 0x40020000)

Definition at line 1532 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define IS_SW_REG (   i)    (((i) & 0xf00f0000) == 0x000a0000)

Definition at line 1537 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define LDC_IMM (   i)    ((FIELD (i, 16, 1) << 4) | FIELD (i, 20, 4))

Definition at line 1565 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define LDC_TARGET (   i)    (FIELD (i, 24, 4))

Definition at line 1566 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define LW_BASE (   i)    (FIELD (i, 20, 4))

Definition at line 1571 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define LW_OFFSET (   i)    (SFIELD (i, 0, 16))

Definition at line 1572 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define LW_TARGET (   i)    (FIELD (i, 24, 4))

Definition at line 1570 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define MEP_GPR_SIZE   (4) /* Size of a MeP general-purpose register. */
#define MEP_LP_SIZE   (4) /* Size of the LP register. */

Definition at line 639 of file mep-tdep.c.

#define MEP_PSW_SIZE   (4) /* Size of the PSW register. */

Definition at line 638 of file mep-tdep.c.

#define MOV_SOURCE (   i)    (FIELD (i, 20, 4))

Definition at line 1577 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define MOV_TARGET (   i)    (FIELD (i, 24, 4))

Definition at line 1576 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define NUM_REGS_IN_SET (   set)    (MEP_LAST_ ## set ## _REGNUM - MEP_FIRST_ ## set ## _REGNUM + 1)

Definition at line 634 of file mep-tdep.c.

Referenced by mep_init_pseudoregister_maps().

#define SEXT (   n,
  len 
)    ((((int) (n)) ^ (1 << ((len) - 1))) - (1 << ((len) - 1)))

Definition at line 1500 of file mep-tdep.c.

#define SFIELD (   i,
  pos,
  len 
)    (SEXT (FIELD ((i), (pos), (len)), (len)))

Definition at line 1506 of file mep-tdep.c.

#define SW_IMMD_OFFSET (   i)    (FIELD (i, 18, 5) << 2)

Definition at line 1534 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define SW_IMMD_SOURCE (   i)    (FIELD (i, 24, 4))

Definition at line 1533 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define SW_REG_BASE (   i)    (FIELD (i, 20, 4))

Definition at line 1539 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define SW_REG_SOURCE (   i)    (FIELD (i, 24, 4))

Definition at line 1538 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define SWBH_32_BASE (   i)    (FIELD (i, 20, 4))

Definition at line 1527 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define SWBH_32_OFFSET (   i)    (SFIELD (i, 0, 16))

Definition at line 1529 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

#define SWBH_32_SOURCE (   i)    (FIELD (i, 24, 4))

Definition at line 1528 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

Enumeration Type Documentation

anonymous enum
Enumerator
MEP_OPT_DIV 
MEP_OPT_MUL 
MEP_OPT_BIT 
MEP_OPT_SAT 
MEP_OPT_CLP 
MEP_OPT_MIN 
MEP_OPT_AVE 
MEP_OPT_ABS 
MEP_OPT_LDZ 
MEP_OPT_VL64 
MEP_OPT_VL32 
MEP_OPT_COP 
MEP_OPT_DSP 
MEP_OPT_UCI 
MEP_OPT_DBG 

Definition at line 333 of file mep-tdep.c.

anonymous enum
Enumerator
MEP_FIRST_RAW_REGNUM 
MEP_FIRST_GPR_REGNUM 
MEP_R0_REGNUM 
MEP_R1_REGNUM 
MEP_R2_REGNUM 
MEP_R3_REGNUM 
MEP_R4_REGNUM 
MEP_R5_REGNUM 
MEP_R6_REGNUM 
MEP_R7_REGNUM 
MEP_R8_REGNUM 
MEP_R9_REGNUM 
MEP_R10_REGNUM 
MEP_R11_REGNUM 
MEP_R12_REGNUM 
MEP_FP_REGNUM 
MEP_R13_REGNUM 
MEP_TP_REGNUM 
MEP_R14_REGNUM 
MEP_GP_REGNUM 
MEP_R15_REGNUM 
MEP_SP_REGNUM 
MEP_LAST_GPR_REGNUM 
MEP_FIRST_RAW_CSR_REGNUM 
MEP_RAW_PC_REGNUM 
MEP_RAW_LP_REGNUM 
MEP_RAW_SAR_REGNUM 
MEP_RAW_CSR3_REGNUM 
MEP_RAW_RPB_REGNUM 
MEP_RAW_RPE_REGNUM 
MEP_RAW_RPC_REGNUM 
MEP_RAW_HI_REGNUM 
MEP_RAW_LO_REGNUM 
MEP_RAW_CSR9_REGNUM 
MEP_RAW_CSR10_REGNUM 
MEP_RAW_CSR11_REGNUM 
MEP_RAW_MB0_REGNUM 
MEP_RAW_ME0_REGNUM 
MEP_RAW_MB1_REGNUM 
MEP_RAW_ME1_REGNUM 
MEP_RAW_PSW_REGNUM 
MEP_RAW_ID_REGNUM 
MEP_RAW_TMP_REGNUM 
MEP_RAW_EPC_REGNUM 
MEP_RAW_EXC_REGNUM 
MEP_RAW_CFG_REGNUM 
MEP_RAW_CSR22_REGNUM 
MEP_RAW_NPC_REGNUM 
MEP_RAW_DBG_REGNUM 
MEP_RAW_DEPC_REGNUM 
MEP_RAW_OPT_REGNUM 
MEP_RAW_RCFG_REGNUM 
MEP_RAW_CCFG_REGNUM 
MEP_RAW_CSR29_REGNUM 
MEP_RAW_CSR30_REGNUM 
MEP_RAW_CSR31_REGNUM 
MEP_LAST_RAW_CSR_REGNUM 
MEP_FIRST_RAW_CR_REGNUM 
MEP_LAST_RAW_CR_REGNUM 
MEP_FIRST_RAW_CCR_REGNUM 
MEP_LAST_RAW_CCR_REGNUM 
MEP_MODULE_REGNUM 
MEP_LAST_RAW_REGNUM 
MEP_NUM_RAW_REGS 
MEP_FIRST_PSEUDO_REGNUM 
MEP_FIRST_CSR_REGNUM 
MEP_PC_REGNUM 
MEP_LP_REGNUM 
MEP_SAR_REGNUM 
MEP_CSR3_REGNUM 
MEP_RPB_REGNUM 
MEP_RPE_REGNUM 
MEP_RPC_REGNUM 
MEP_HI_REGNUM 
MEP_LO_REGNUM 
MEP_CSR9_REGNUM 
MEP_CSR10_REGNUM 
MEP_CSR11_REGNUM 
MEP_MB0_REGNUM 
MEP_ME0_REGNUM 
MEP_MB1_REGNUM 
MEP_ME1_REGNUM 
MEP_PSW_REGNUM 
MEP_ID_REGNUM 
MEP_TMP_REGNUM 
MEP_EPC_REGNUM 
MEP_EXC_REGNUM 
MEP_CFG_REGNUM 
MEP_CSR22_REGNUM 
MEP_NPC_REGNUM 
MEP_DBG_REGNUM 
MEP_DEPC_REGNUM 
MEP_OPT_REGNUM 
MEP_RCFG_REGNUM 
MEP_CCFG_REGNUM 
MEP_CSR29_REGNUM 
MEP_CSR30_REGNUM 
MEP_CSR31_REGNUM 
MEP_LAST_CSR_REGNUM 
MEP_FIRST_CR32_REGNUM 
MEP_LAST_CR32_REGNUM 
MEP_FIRST_FP_CR32_REGNUM 
MEP_LAST_FP_CR32_REGNUM 
MEP_FIRST_CR64_REGNUM 
MEP_LAST_CR64_REGNUM 
MEP_FIRST_FP_CR64_REGNUM 
MEP_LAST_FP_CR64_REGNUM 
MEP_FIRST_CCR_REGNUM 
MEP_LAST_CCR_REGNUM 
MEP_LAST_PSEUDO_REGNUM 
MEP_NUM_PSEUDO_REGS 
MEP_NUM_REGS 

Definition at line 463 of file mep-tdep.c.

Function Documentation

void _initialize_mep_tdep ( void  )
static void check_for_saved ( void *  result_untyped,
pv_t  addr,
CORE_ADDR  size,
pv_t  value 
)
static
static CGEN_KEYWORD* current_ccr_names ( void  )
static
static int current_cop_data_bus_width ( void  )
static

Definition at line 884 of file mep-tdep.c.

References current_me_module(), and me_module_cop_data_bus_width().

Referenced by mep_register_name().

static int current_cr_is_float ( void  )
static

Definition at line 905 of file mep-tdep.c.

References current_me_module(), and me_module_register_set().

Referenced by mep_register_name().

static CGEN_KEYWORD* current_cr_names ( void  )
static
static CONFIG_ATTR current_me_module ( void  )
static
static unsigned int current_options ( void  )
static
static const CGEN_HW_ENTRY* find_hw_entry_by_prefix_and_isa ( CGEN_CPU_DESC  desc,
const char *  prefix,
CGEN_BITSET *  copro_isa_mask,
CGEN_BITSET *  generic_isa_mask 
)
static

Definition at line 157 of file mep-tdep.c.

Referenced by me_module_register_set().

static const CGEN_HW_ENTRY* find_hw_entry_by_type ( CGEN_CPU_DESC  desc,
CGEN_HW_TYPE  type 
)
static

Definition at line 187 of file mep-tdep.c.

Referenced by me_module_register_set().

static int is_arg_reg ( pv_t  value)
static
static int is_arg_spill ( struct gdbarch gdbarch,
pv_t  value,
pv_t  addr,
struct pv_area stack 
)
static
static int me_module_big_endian ( CONFIG_ATTR  me_module)
static

Definition at line 413 of file mep-tdep.c.

Referenced by mep_gdbarch_init().

static int me_module_cop_data_bus_width ( CONFIG_ATTR  me_module)
static

Definition at line 401 of file mep-tdep.c.

Referenced by current_cop_data_bus_width().

static const char* me_module_name ( CONFIG_ATTR  me_module)
static

Definition at line 421 of file mep-tdep.c.

References name.

Referenced by mep_gdbarch_init().

static unsigned int me_module_opt ( CONFIG_ATTR  me_module)
static

Definition at line 392 of file mep-tdep.c.

References opt_from_option_mask().

Referenced by current_options().

static const CGEN_HW_ENTRY* me_module_register_set ( CONFIG_ATTR  me_module,
const char *  prefix,
CGEN_HW_TYPE  generic_type 
)
static
static struct mep_prologue* mep_analyze_frame_prologue ( struct frame_info this_frame,
void **  this_prologue_cache 
)
static
static void mep_analyze_prologue ( struct gdbarch gdbarch,
CORE_ADDR  start_pc,
CORE_ADDR  limit_pc,
struct mep_prologue result 
)
static
static const unsigned char* mep_breakpoint_from_pc ( struct gdbarch gdbarch,
CORE_ADDR pcptr,
int lenptr 
)
static

Definition at line 1921 of file mep-tdep.c.

Referenced by mep_gdbarch_init().

static int mep_debug_reg_to_regnum ( struct gdbarch gdbarch,
int  debug_reg 
)
static

Definition at line 784 of file mep-tdep.c.

Referenced by mep_gdbarch_init().

static struct frame_id mep_dummy_id ( struct gdbarch gdbarch,
struct frame_info this_frame 
)
static

Definition at line 2371 of file mep-tdep.c.

References frame_id_build(), get_frame_pc(), get_frame_register_unsigned(), and MEP_SP_REGNUM.

Referenced by mep_gdbarch_init().

static void mep_extract_return_value ( struct gdbarch arch,
struct type type,
struct regcache regcache,
gdb_byte valbuf 
)
static
static CORE_ADDR mep_frame_align ( struct gdbarch gdbarch,
CORE_ADDR  sp 
)
static

Definition at line 2228 of file mep-tdep.c.

Referenced by mep_gdbarch_init().

static CORE_ADDR mep_frame_base ( struct frame_info this_frame,
void **  this_prologue_cache 
)
static
static struct value* mep_frame_prev_register ( struct frame_info this_frame,
void **  this_prologue_cache,
int  regnum 
)
static
static void mep_frame_this_id ( struct frame_info this_frame,
void **  this_prologue_cache,
struct frame_id this_id 
)
static

Definition at line 1991 of file mep-tdep.c.

References frame_id_build(), get_frame_func(), and mep_frame_base().

static int mep_gdb_print_insn ( bfd_vma  pc,
disassemble_info *  info 
)
static

Definition at line 1270 of file mep-tdep.c.

References find_pc_section(), and obj_section::the_bfd_section.

Referenced by mep_gdbarch_init().

static struct gdbarch* mep_gdbarch_init ( struct gdbarch_info  info,
struct gdbarch_list arches 
)
static

Definition at line 2383 of file mep-tdep.c.

References _, gdbarch_info::abfd, all_reggroup, gdbarch_info::bfd_arch_info, gdbarch_info::byte_order, core_addr_lessthan(), gdbarch_tdep::cpu_desc, gdbarch_tdep::e_flags, fputc_unfiltered(), frame_unwind_append_unwinder(), gdb_stderr, gdbarch_list::gdbarch, gdbarch_alloc(), gdbarch_list_lookup_by_info(), general_reggroup, gdbarch_tdep::me_module, me_module_big_endian(), me_module_name(), mep_breakpoint_from_pc(), mep_debug_reg_to_regnum(), mep_dummy_id(), mep_frame_align(), mep_gdb_print_insn(), MEP_NUM_PSEUDO_REGS, MEP_NUM_RAW_REGS, MEP_PC_REGNUM, mep_pseudo_register_read(), mep_pseudo_register_write(), mep_push_dummy_call(), mep_read_pc(), mep_register_name(), mep_register_reggroup_p(), mep_register_type(), mep_return_value(), mep_skip_prologue(), MEP_SP_REGNUM, mep_unwind_pc(), mep_unwind_sp(), gdbarch_list::next, reggroup_add(), restore_reggroup, save_reggroup, set_gdbarch_breakpoint_from_pc(), set_gdbarch_decr_pc_after_break(), set_gdbarch_dummy_id(), set_gdbarch_dwarf2_reg_to_regnum(), set_gdbarch_frame_align(), set_gdbarch_frame_args_skip(), set_gdbarch_inner_than(), set_gdbarch_num_pseudo_regs(), set_gdbarch_num_regs(), set_gdbarch_pc_regnum(), set_gdbarch_print_insn(), set_gdbarch_pseudo_register_read(), set_gdbarch_pseudo_register_write(), set_gdbarch_push_dummy_call(), set_gdbarch_read_pc(), set_gdbarch_register_name(), set_gdbarch_register_reggroup_p(), set_gdbarch_register_type(), set_gdbarch_return_value(), set_gdbarch_skip_prologue(), set_gdbarch_sp_regnum(), set_gdbarch_stab_reg_to_regnum(), set_gdbarch_unwind_pc(), set_gdbarch_unwind_sp(), warning(), and xmalloc().

Referenced by _initialize_mep_tdep().

static CORE_ADDR mep_get_insn ( struct gdbarch gdbarch,
CORE_ADDR  pc,
unsigned long *  insn 
)
static
static void mep_init_pseudoregister_maps ( void  )
static
static int mep_pc_in_vliw_section ( CORE_ADDR  pc)
static

Definition at line 1343 of file mep-tdep.c.

References find_pc_section(), and obj_section::the_bfd_section.

Referenced by mep_get_insn().

static enum register_status mep_pseudo_cr32_read ( struct gdbarch gdbarch,
struct regcache regcache,
int  cookednum,
void *  buf 
)
static
static void mep_pseudo_cr32_write ( struct gdbarch gdbarch,
struct regcache regcache,
int  cookednum,
const void *  buf 
)
static
static enum register_status mep_pseudo_cr64_read ( struct gdbarch gdbarch,
struct regcache regcache,
int  cookednum,
void *  buf 
)
static

Definition at line 1152 of file mep-tdep.c.

References regcache_raw_read().

Referenced by mep_pseudo_register_read().

static void mep_pseudo_cr64_write ( struct gdbarch gdbarch,
struct regcache regcache,
int  cookednum,
const void *  buf 
)
static

Definition at line 1234 of file mep-tdep.c.

References regcache_raw_write().

Referenced by mep_pseudo_register_write().

static int mep_pseudo_cr_index ( int  pseudo)
static
static int mep_pseudo_cr_is_float ( int  pseudo)
static

Definition at line 811 of file mep-tdep.c.

References IS_FP_CR32_REGNUM, and IS_FP_CR64_REGNUM.

Referenced by mep_register_name(), and mep_register_type().

static int mep_pseudo_cr_size ( int  pseudo)
static
static void mep_pseudo_csr_write ( struct gdbarch gdbarch,
struct regcache regcache,
int  cookednum,
const void *  buf 
)
static
static enum register_status mep_pseudo_register_read ( struct gdbarch gdbarch,
struct regcache regcache,
int  cookednum,
gdb_byte buf 
)
static
static void mep_pseudo_register_write ( struct gdbarch gdbarch,
struct regcache regcache,
int  cookednum,
const gdb_byte buf 
)
static
static CORE_ADDR mep_push_dummy_call ( struct gdbarch gdbarch,
struct value function,
struct regcache regcache,
CORE_ADDR  bp_addr,
int  argc,
struct value **  argv,
CORE_ADDR  sp,
int  struct_return,
CORE_ADDR  struct_addr 
)
static
static CORE_ADDR mep_read_pc ( struct regcache regcache)
static

Definition at line 1118 of file mep-tdep.c.

References MEP_PC_REGNUM, and regcache_cooked_read_unsigned().

Referenced by mep_gdbarch_init().

static const char* mep_register_name ( struct gdbarch gdbarch,
int  regnr 
)
static
static int mep_register_reggroup_p ( struct gdbarch gdbarch,
int  regnum,
struct reggroup group 
)
static
static struct type* mep_register_type ( struct gdbarch gdbarch,
int  reg_nr 
)
static
static enum return_value_convention mep_return_value ( struct gdbarch gdbarch,
struct value function,
struct type type,
struct regcache regcache,
gdb_byte readbuf,
const gdb_byte writebuf 
)
static
static CORE_ADDR mep_skip_prologue ( struct gdbarch gdbarch,
CORE_ADDR  pc 
)
static
static void mep_store_return_value ( struct gdbarch arch,
struct type type,
struct regcache regcache,
const gdb_byte valbuf 
)
static
static CORE_ADDR mep_unwind_pc ( struct gdbarch gdbarch,
struct frame_info next_frame 
)
static

Definition at line 2096 of file mep-tdep.c.

References frame_unwind_register_unsigned(), and MEP_PC_REGNUM.

Referenced by mep_gdbarch_init().

static CORE_ADDR mep_unwind_sp ( struct gdbarch gdbarch,
struct frame_info next_frame 
)
static

Definition at line 2104 of file mep-tdep.c.

References frame_unwind_register_unsigned(), and MEP_SP_REGNUM.

Referenced by mep_gdbarch_init().

static int mep_use_struct_convention ( struct type type)
static

Definition at line 2115 of file mep-tdep.c.

References MEP_GPR_SIZE, and TYPE_LENGTH.

Referenced by mep_return_value().

static unsigned int opt_from_option_mask ( unsigned int  option_mask)
static
static CORE_ADDR push_large_arguments ( CORE_ADDR  sp,
int  argc,
struct value **  argv,
CORE_ADDR  copy[] 
)
static

Definition at line 2265 of file mep-tdep.c.

References MEP_GPR_SIZE, TYPE_LENGTH, value_contents(), value_type(), and write_memory().

Referenced by mep_push_dummy_call().

static char* register_name_from_keyword ( CGEN_KEYWORD *  keyword_table,
int  regnum 
)
static

Definition at line 309 of file mep-tdep.c.

References name.

Referenced by mep_register_name().

static CGEN_KEYWORD* register_set_keyword_table ( const CGEN_HW_ENTRY *  hw)
static

Definition at line 291 of file mep-tdep.c.

References gdb_assert.

Referenced by current_ccr_names(), and current_cr_names().

Variable Documentation

initialize_file_ftype _initialize_mep_tdep
struct reggroup* mep_ccr_reggroup
static

Definition at line 1021 of file mep-tdep.c.

struct reggroup* mep_cr_reggroup
static

Definition at line 1020 of file mep-tdep.c.

struct reggroup* mep_csr_reggroup
static

Definition at line 1019 of file mep-tdep.c.

struct mep_csr_register mep_csr_registers[]

Definition at line 665 of file mep-tdep.c.

const struct frame_unwind mep_frame_unwind
static
Initial value:
= {
NULL,
}
static void mep_frame_this_id(struct frame_info *this_frame, void **this_prologue_cache, struct frame_id *this_id)
Definition: mep-tdep.c:1991
int default_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
Definition: frame-unwind.c:170
enum unwind_stop_reason default_frame_unwind_stop_reason(struct frame_info *this_frame, void **this_cache)
Definition: frame-unwind.c:180
static struct value * mep_frame_prev_register(struct frame_info *this_frame, void **this_prologue_cache, int regnum)
Definition: mep-tdep.c:2001

Definition at line 2084 of file mep-tdep.c.

int mep_pseudo_to_raw[MEP_NUM_REGS]
static

Definition at line 709 of file mep-tdep.c.

int mep_raw_to_pseudo[MEP_NUM_REGS]
static

Definition at line 704 of file mep-tdep.c.