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 + -
显示快捷键?