tm-d30v.h
来自「模拟嵌入式硬件平台的软件源代码」· C头文件 代码 · 共 324 行 · 第 1/2 页
H
324 行
/* OBSOLETE /* Target-specific definition for the Mitsubishi D30V *//* OBSOLETE Copyright 1997, 1998, 1999, 2000 Free Software Foundation, Inc. *//* OBSOLETE *//* OBSOLETE This file is part of GDB. *//* OBSOLETE *//* OBSOLETE This program is free software; you can redistribute it and/or modify *//* OBSOLETE it under the terms of the GNU General Public License as published by *//* OBSOLETE the Free Software Foundation; either version 2 of the License, or *//* OBSOLETE (at your option) any later version. *//* OBSOLETE *//* OBSOLETE This program is distributed in the hope that it will be useful, *//* OBSOLETE but WITHOUT ANY WARRANTY; without even the implied warranty of *//* OBSOLETE MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *//* OBSOLETE GNU General Public License for more details. *//* OBSOLETE *//* OBSOLETE You should have received a copy of the GNU General Public License *//* OBSOLETE along with this program; if not, write to the Free Software *//* OBSOLETE Foundation, Inc., 59 Temple Place - Suite 330, *//* OBSOLETE Boston, MA 02111-1307, USA. */ *//* OBSOLETE *//* OBSOLETE #ifndef TM_D30V_H *//* OBSOLETE #define TM_D30V_H *//* OBSOLETE *//* OBSOLETE #include "regcache.h" *//* OBSOLETE *//* OBSOLETE /* Offset from address of function to start of its code. *//* OBSOLETE Zero on most machines. */ *//* OBSOLETE *//* OBSOLETE #define FUNCTION_START_OFFSET 0 *//* OBSOLETE *//* OBSOLETE /* these are the addresses the D30V-EVA board maps data */ *//* OBSOLETE /* and instruction memory to. */ *//* OBSOLETE *//* OBSOLETE #define DMEM_START 0x20000000 *//* OBSOLETE #define IMEM_START 0x00000000 /* was 0x10000000 */ *//* OBSOLETE #define STACK_START 0x20007ffe *//* OBSOLETE *//* OBSOLETE /* Forward decls for prototypes */ *//* OBSOLETE struct frame_info; *//* OBSOLETE struct frame_saved_regs; *//* OBSOLETE struct type; *//* OBSOLETE struct value; *//* OBSOLETE *//* OBSOLETE /* Advance PC across any function entry prologue instructions *//* OBSOLETE to reach some "real" code. */ *//* OBSOLETE *//* OBSOLETE extern CORE_ADDR d30v_skip_prologue (CORE_ADDR); *//* OBSOLETE #define SKIP_PROLOGUE(ip) (d30v_skip_prologue (ip)) *//* OBSOLETE *//* OBSOLETE *//* OBSOLETE /* Stack grows downward. */ *//* OBSOLETE #define INNER_THAN(lhs,rhs) ((lhs) < (rhs)) *//* OBSOLETE *//* OBSOLETE /* for a breakpoint, use "dbt || nop" */ *//* OBSOLETE #define BREAKPOINT {0x00, 0xb0, 0x00, 0x00,\ *//* OBSOLETE 0x00, 0xf0, 0x00, 0x00} *//* OBSOLETE *//* OBSOLETE /* If your kernel resets the pc after the trap happens you may need to *//* OBSOLETE define this before including this file. */ *//* OBSOLETE #define DECR_PC_AFTER_BREAK 0 *//* OBSOLETE *//* OBSOLETE #define REGISTER_NAMES \ *//* OBSOLETE { "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", \ *//* OBSOLETE "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", \ *//* OBSOLETE "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23", \ *//* OBSOLETE "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31", \ *//* OBSOLETE "r32", "r33", "r34", "r35", "r36", "r37", "r38", "r39", \ *//* OBSOLETE "r40", "r41", "r42", "r43", "r44", "r45", "r46", "r47", \ *//* OBSOLETE "r48", "r49", "r50", "r51", "r52", "r53", "r54", "r55", \ *//* OBSOLETE "r56", "r57", "r58", "r59", "r60", "r61", "r62", "r63", \ *//* OBSOLETE "spi", "spu", \ *//* OBSOLETE "psw", "bpsw", "pc", "bpc", "dpsw", "dpc", "cr6", "rpt_c", \ *//* OBSOLETE "rpt_s", "rpt_e", "mod_s", "mod_e", "cr12", "cr13", "iba", "eit_vb",\ *//* OBSOLETE "int_s", "int_m", "a0", "a1" \ *//* OBSOLETE } *//* OBSOLETE *//* OBSOLETE #define NUM_REGS 86 *//* OBSOLETE *//* OBSOLETE /* Register numbers of various important registers. *//* OBSOLETE Note that some of these values are "real" register numbers, *//* OBSOLETE and correspond to the general registers of the machine, *//* OBSOLETE and some are "phony" register numbers which are too large *//* OBSOLETE to be actual register numbers as far as the user is concerned *//* OBSOLETE but do serve to get the desired values when passed to read_register. */ *//* OBSOLETE *//* OBSOLETE #define R0_REGNUM 0 *//* OBSOLETE #define FP_REGNUM 61 *//* OBSOLETE #define LR_REGNUM 62 *//* OBSOLETE #define SP_REGNUM 63 *//* OBSOLETE #define SPI_REGNUM 64 /* Interrupt stack pointer */ *//* OBSOLETE #define SPU_REGNUM 65 /* User stack pointer */ *//* OBSOLETE #define CREGS_START 66 *//* OBSOLETE *//* OBSOLETE #define PSW_REGNUM (CREGS_START + 0) /* psw, bpsw, or dpsw??? */ *//* OBSOLETE #define PSW_SM (((unsigned long)0x80000000) >> 0) /* Stack mode: 0/SPI */ *//* OBSOLETE /* 1/SPU */ *//* OBSOLETE #define PSW_EA (((unsigned long)0x80000000) >> 2) /* Execution status */ *//* OBSOLETE #define PSW_DB (((unsigned long)0x80000000) >> 3) /* Debug mode */ *//* OBSOLETE #define PSW_DS (((unsigned long)0x80000000) >> 4) /* Debug EIT status */ *//* OBSOLETE #define PSW_IE (((unsigned long)0x80000000) >> 5) /* Interrupt enable */ *//* OBSOLETE #define PSW_RP (((unsigned long)0x80000000) >> 6) /* Repeat enable */ *//* OBSOLETE #define PSW_MD (((unsigned long)0x80000000) >> 7) /* Modulo enable */ *//* OBSOLETE #define PSW_F0 (((unsigned long)0x80000000) >> 17) /* F0 flag */ *//* OBSOLETE #define PSW_F1 (((unsigned long)0x80000000) >> 19) /* F1 flag */ *//* OBSOLETE #define PSW_F2 (((unsigned long)0x80000000) >> 21) /* F2 flag */ *//* OBSOLETE #define PSW_F3 (((unsigned long)0x80000000) >> 23) /* F3 flag */ *//* OBSOLETE #define PSW_S (((unsigned long)0x80000000) >> 25) /* Saturation flag */ *//* OBSOLETE #define PSW_V (((unsigned long)0x80000000) >> 27) /* Overflow flag */ *//* OBSOLETE #define PSW_VA (((unsigned long)0x80000000) >> 29) /* Accum. overflow */ *//* OBSOLETE #define PSW_C (((unsigned long)0x80000000) >> 31) /* Carry/Borrow flag */ *//* OBSOLETE *//* OBSOLETE #define BPSW_REGNUM (CREGS_START + 1) /* Backup PSW (on interrupt) */ *//* OBSOLETE #define PC_REGNUM (CREGS_START + 2) /* pc, bpc, or dpc??? */ *//* OBSOLETE #define BPC_REGNUM (CREGS_START + 3) /* Backup PC (on interrupt) */ *//* OBSOLETE #define DPSW_REGNUM (CREGS_START + 4) /* Backup PSW (on debug trap) */ *//* OBSOLETE #define DPC_REGNUM (CREGS_START + 5) /* Backup PC (on debug trap) */ *//* OBSOLETE #define RPT_C_REGNUM (CREGS_START + 7) /* Loop count */ *//* OBSOLETE #define RPT_S_REGNUM (CREGS_START + 8) /* Loop start address */ *//* OBSOLETE #define RPT_E_REGNUM (CREGS_START + 9) /* Loop end address */ *//* OBSOLETE #define MOD_S_REGNUM (CREGS_START + 10) *//* OBSOLETE #define MOD_E_REGNUM (CREGS_START + 11) *//* OBSOLETE #define IBA_REGNUM (CREGS_START + 14) /* Instruction break address */ *//* OBSOLETE #define EIT_VB_REGNUM (CREGS_START + 15) /* Vector base address */ *//* OBSOLETE #define INT_S_REGNUM (CREGS_START + 16) /* Interrupt status */ *//* OBSOLETE #define INT_M_REGNUM (CREGS_START + 17) /* Interrupt mask */ *//* OBSOLETE #define A0_REGNUM 84 *//* OBSOLETE #define A1_REGNUM 85 *//* OBSOLETE *//* OBSOLETE /* Say how much memory is needed to store a copy of the register set */ *//* OBSOLETE #define REGISTER_BYTES ((NUM_REGS - 2) * 4 + 2 * 8) *//* OBSOLETE *//* OBSOLETE /* Index within `registers' of the first byte of the space for *//* OBSOLETE register N. */ *//* OBSOLETE *//* OBSOLETE #define REGISTER_BYTE(N) \ *//* OBSOLETE ( ((N) >= A0_REGNUM) ? ( ((N) - A0_REGNUM) * 8 + A0_REGNUM * 4 ) : ((N) * 4) ) *//* OBSOLETE *//* OBSOLETE /* Number of bytes of storage in the actual machine representation *//* OBSOLETE for register N. */ *//* OBSOLETE *//* OBSOLETE #define REGISTER_RAW_SIZE(N) ( ((N) >= A0_REGNUM) ? 8 : 4 ) *//* OBSOLETE *//* OBSOLETE /* Number of bytes of storage in the program's representation *//* OBSOLETE for register N. */ *//* OBSOLETE #define REGISTER_VIRTUAL_SIZE(N) REGISTER_RAW_SIZE(N) *//* OBSOLETE *//* OBSOLETE /* Largest value REGISTER_RAW_SIZE can have. */ *//* OBSOLETE *//* OBSOLETE #define MAX_REGISTER_RAW_SIZE 8 *//* OBSOLETE *//* OBSOLETE /* Largest value REGISTER_VIRTUAL_SIZE can have. */ *//* OBSOLETE *//* OBSOLETE #define MAX_REGISTER_VIRTUAL_SIZE 8 *//* OBSOLETE *//* OBSOLETE /* Return the GDB type object for the "standard" data type *//* OBSOLETE of data in register N. */ *//* OBSOLETE *//* OBSOLETE #define REGISTER_VIRTUAL_TYPE(N) \ *//* OBSOLETE ( ((N) < A0_REGNUM ) ? builtin_type_long : builtin_type_long_long) *//* OBSOLETE *//* OBSOLETE /* Writing to r0 is a noop (not an error or exception or anything like *//* OBSOLETE that, however). */ */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?