GDB (xrefs)
Classes | Defines | Enumerations | Functions | Variables
/home/stan/gdb/src/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 "gdb_string.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 "gdb_assert.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

Defines

#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 struct frame_unwind mep_frame_unwind
initialize_file_ftype _initialize_mep_tdep

Define Documentation

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

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

Referenced by mep_analyze_prologue().

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

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

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

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

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

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

Referenced by mep_analyze_prologue().

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

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

Referenced by mep_analyze_prologue().

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

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

Referenced by mep_analyze_prologue().

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

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

Referenced by mep_analyze_prologue().

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

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

Referenced by mep_analyze_prologue().

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

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

Referenced by mep_analyze_prologue().

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

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

Referenced by mep_analyze_prologue().

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

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

Referenced by mep_init_pseudoregister_maps().

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

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

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

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

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

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

Referenced by mep_analyze_prologue().

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

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

Referenced by mep_analyze_prologue().

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

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

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

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

Referenced by mep_analyze_prologue().

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

Definition at line 1583 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:

Definition at line 630 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 620 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 1567 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

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

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

Referenced by mep_analyze_prologue().

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

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

Referenced by mep_analyze_prologue().

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

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

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

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

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

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

Referenced by mep_register_type().

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

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

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

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

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

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

Referenced by mep_analyze_prologue().

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

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

Referenced by mep_analyze_prologue().

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

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

Referenced by mep_analyze_prologue().

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

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

Referenced by mep_analyze_prologue().

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

Definition at line 1540 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 1568 of file mep-tdep.c.

Referenced by mep_analyze_prologue().

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

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

Referenced by mep_analyze_prologue().

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

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

Referenced by mep_analyze_prologue().

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

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

Referenced by mep_analyze_prologue().

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

Definition at line 1573 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 642 of file mep-tdep.c.

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

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

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

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

Referenced by mep_analyze_prologue().

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

Definition at line 1579 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 637 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 1503 of file mep-tdep.c.

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

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

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

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

Referenced by mep_analyze_prologue().

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

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

Referenced by mep_analyze_prologue().

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

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

Referenced by mep_analyze_prologue().

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

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

Referenced by mep_analyze_prologue().

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

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

Referenced by mep_analyze_prologue().

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

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

Referenced by mep_analyze_prologue().

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

Definition at line 1531 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 336 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 466 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 887 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 908 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 160 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 190 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 416 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 404 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 424 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 395 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, read]
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 1924 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 787 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, read]

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

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

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 2231 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, read]
static void mep_frame_this_id ( struct frame_info this_frame,
void **  this_prologue_cache,
struct frame_id this_id 
) [static]

Definition at line 1994 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 1273 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, read]

Definition at line 2386 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 1346 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 1155 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 1237 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 814 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 1121 of file mep-tdep.c.

References MEP_PC_REGNUM, regcache_cooked_read_unsigned(), and ULONGEST.

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, read]
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 2099 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 2107 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 2118 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 2268 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 312 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 294 of file mep-tdep.c.

References gdb_assert.

Referenced by current_ccr_names(), and current_cr_names().


Variable Documentation

Referenced by initialize_all_files().

struct reggroup* mep_ccr_reggroup [static]

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

struct reggroup* mep_cr_reggroup [static]

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

struct reggroup* mep_csr_reggroup [static]

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

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

struct frame_unwind mep_frame_unwind [static]

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

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

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines