tm-a29k.h

来自「gdb是linux下的一个远程调试环境.能让你很方便地调试linux下的代码.」· C头文件 代码 · 共 723 行 · 第 1/3 页

H
723
字号
/* OBSOLETE /* Parameters for target machine AMD 29000, for GDB, the GNU debugger. *//* OBSOLETE    Copyright 1990, 1991, 1993, 1994, 1995, 1996, 1998, 1999, 2000, *//* OBSOLETE    2001 Free Software Foundation, Inc. *//* OBSOLETE    Contributed by Cygnus Support.  Written by Jim Kingdon. *//* 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 #include "regcache.h" *//* OBSOLETE  *//* OBSOLETE /* Parameters for an EB29K (a board which plugs into a PC and is *//* OBSOLETE    accessed through EBMON software running on the PC, which we *//* OBSOLETE    use as we'd use a remote stub (see remote-eb.c). *//* OBSOLETE  *//* OBSOLETE    If gdb is ported to other a29k machines/systems, the *//* OBSOLETE    machine/system-specific parts should be removed from this file (a *//* OBSOLETE    la tm-m68k.h).  */ *//* OBSOLETE  *//* OBSOLETE /* Byte order is configurable, but this machine runs big-endian.  */ *//* OBSOLETE #define TARGET_BYTE_ORDER BFD_ENDIAN_BIG *//* OBSOLETE  *//* OBSOLETE /* Floating point uses IEEE representations.  */ *//* OBSOLETE #define IEEE_FLOAT (1) *//* OBSOLETE  *//* OBSOLETE /* Recognize our magic number.  */ *//* OBSOLETE #define BADMAG(x) ((x).f_magic != 0572) *//* 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 /* Advance PC across any function entry prologue instructions *//* OBSOLETE    to reach some "real" code.  */ *//* OBSOLETE  *//* OBSOLETE #define SKIP_PROLOGUE(pc) (a29k_skip_prologue (pc)) *//* OBSOLETE CORE_ADDR a29k_skip_prologue (); *//* OBSOLETE  *//* OBSOLETE /* Immediately after a function call, return the saved pc. *//* OBSOLETE    Can't go through the frames for this because on some machines *//* OBSOLETE    the new frame is not set up until the new function executes *//* OBSOLETE    some instructions.  */ *//* OBSOLETE  *//* OBSOLETE #define SAVED_PC_AFTER_CALL(frame) ((frame->flags & TRANSPARENT_FRAME) \ *//* OBSOLETE 				    ? read_register (TPC_REGNUM) \ *//* OBSOLETE 				    : read_register (LR0_REGNUM)) *//* OBSOLETE  *//* OBSOLETE /* Stack grows downward.  */ *//* OBSOLETE  *//* OBSOLETE #define INNER_THAN(lhs,rhs) ((lhs) < (rhs)) *//* OBSOLETE  *//* OBSOLETE /* Stack must be aligned on 32-bit boundaries when synthesizing *//* OBSOLETE    function calls. */ *//* OBSOLETE  *//* OBSOLETE #define STACK_ALIGN(ADDR) (((ADDR) + 3) & ~3) *//* OBSOLETE  *//* OBSOLETE /* Sequence of bytes for breakpoint instruction.  */ *//* OBSOLETE /* ASNEQ 0x50, gr1, gr1 *//* OBSOLETE    The trap number 0x50 is chosen arbitrarily. *//* OBSOLETE    We let the command line (or previously included files) override this *//* OBSOLETE    setting.  */ *//* OBSOLETE #ifndef BREAKPOINT *//* OBSOLETE #if TARGET_BYTE_ORDER == BFD_ENDIAN_BIG *//* OBSOLETE #define BREAKPOINT {0x72, 0x50, 0x01, 0x01} *//* OBSOLETE #else /* Target is little-endian.  */ *//* OBSOLETE #define BREAKPOINT {0x01, 0x01, 0x50, 0x72} *//* OBSOLETE #endif /* Target is little-endian.  */ *//* OBSOLETE #endif /* BREAKPOINT */ *//* OBSOLETE  *//* OBSOLETE /* Amount PC must be decremented by after a breakpoint. *//* OBSOLETE    This is often the number of bytes in BREAKPOINT *//* OBSOLETE    but not always.  */ *//* OBSOLETE  *//* OBSOLETE #define DECR_PC_AFTER_BREAK 0 *//* OBSOLETE  *//* OBSOLETE /* Say how long (ordinary) registers are.  This is a piece of bogosity *//* OBSOLETE    used in push_word and a few other places; REGISTER_RAW_SIZE is the *//* OBSOLETE    real way to know how big a register is.  */ *//* OBSOLETE  *//* OBSOLETE #define REGISTER_SIZE 4 *//* OBSOLETE  *//* OBSOLETE /* Allow the register declarations here to be overridden for remote *//* OBSOLETE    kernel debugging.  */ *//* OBSOLETE #if !defined (REGISTER_NAMES) *//* OBSOLETE  *//* OBSOLETE /* Number of machine registers */ *//* OBSOLETE  *//* OBSOLETE #define NUM_REGS 205 *//* OBSOLETE  *//* OBSOLETE /* Initializer for an array of names of registers. *//* OBSOLETE    There should be NUM_REGS strings in this initializer. *//* OBSOLETE  *//* OBSOLETE    FIXME, add floating point registers and support here. *//* OBSOLETE  *//* OBSOLETE    Also note that this list does not attempt to deal with kernel *//* OBSOLETE    debugging (in which the first 32 registers are gr64-gr95).  */ *//* OBSOLETE  *//* OBSOLETE #define REGISTER_NAMES \ *//* OBSOLETE {"gr96", "gr97", "gr98", "gr99", "gr100", "gr101", "gr102", "gr103", "gr104", \ *//* OBSOLETE  "gr105", "gr106", "gr107", "gr108", "gr109", "gr110", "gr111", "gr112", \ *//* OBSOLETE  "gr113", "gr114", "gr115", "gr116", "gr117", "gr118", "gr119", "gr120", \ *//* OBSOLETE  "gr121", "gr122", "gr123", "gr124", "gr125", "gr126", "gr127",		 \ *//* OBSOLETE  "lr0", "lr1", "lr2", "lr3", "lr4", "lr5", "lr6", "lr7", "lr8", "lr9",   \ *//* OBSOLETE  "lr10", "lr11", "lr12", "lr13", "lr14", "lr15", "lr16", "lr17", "lr18", \ *//* OBSOLETE  "lr19", "lr20", "lr21", "lr22", "lr23", "lr24", "lr25", "lr26", "lr27", \ *//* OBSOLETE  "lr28", "lr29", "lr30", "lr31", "lr32", "lr33", "lr34", "lr35", "lr36", \ *//* OBSOLETE  "lr37", "lr38", "lr39", "lr40", "lr41", "lr42", "lr43", "lr44", "lr45", \ *//* OBSOLETE  "lr46", "lr47", "lr48", "lr49", "lr50", "lr51", "lr52", "lr53", "lr54", \ *//* OBSOLETE  "lr55", "lr56", "lr57", "lr58", "lr59", "lr60", "lr61", "lr62", "lr63", \ *//* OBSOLETE  "lr64", "lr65", "lr66", "lr67", "lr68", "lr69", "lr70", "lr71", "lr72", \ *//* OBSOLETE  "lr73", "lr74", "lr75", "lr76", "lr77", "lr78", "lr79", "lr80", "lr81", \ *//* OBSOLETE  "lr82", "lr83", "lr84", "lr85", "lr86", "lr87", "lr88", "lr89", "lr90", \ *//* OBSOLETE  "lr91", "lr92", "lr93", "lr94", "lr95", "lr96", "lr97", "lr98", "lr99", \ *//* OBSOLETE  "lr100", "lr101", "lr102", "lr103", "lr104", "lr105", "lr106", "lr107", \ *//* OBSOLETE  "lr108", "lr109", "lr110", "lr111", "lr112", "lr113", "lr114", "lr115", \ *//* OBSOLETE  "lr116", "lr117", "lr118", "lr119", "lr120", "lr121", "lr122", "lr123", \ *//* OBSOLETE  "lr124", "lr125", "lr126", "lr127",					 \ *//* OBSOLETE   "AI0", "AI1", "AI2", "AI3", "AI4", "AI5", "AI6", "AI7", "AI8", "AI9",  \ *//* OBSOLETE   "AI10", "AI11", "AI12", "AI13", "AI14", "AI15", "FP",			 \ *//* OBSOLETE   "bp", "fc", "cr", "q",						 \ *//* OBSOLETE   "vab", "ops", "cps", "cfg", "cha", "chd", "chc", "rbp", "tmc", "tmr",	 \ *//* OBSOLETE   "pc0", "pc1", "pc2", "mmu", "lru", "fpe", "inte", "fps", "exo", "gr1",  \ *//* OBSOLETE   "alu", "ipc", "ipa", "ipb" } *//* OBSOLETE  *//* OBSOLETE /* *//* OBSOLETE  * Converts an sdb register number to an internal gdb register number. *//* OBSOLETE  * Currently under epi, gr96->0...gr127->31...lr0->32...lr127->159, or... *//* OBSOLETE  *                      gr64->0...gr95->31, lr0->32...lr127->159. *//* OBSOLETE  */ *//* OBSOLETE #define SDB_REG_TO_REGNUM(value) \ *//* OBSOLETE   (((value) >= 96 && (value) <= 127) ? ((value) - 96) : \ *//* OBSOLETE    ((value) >= 128 && (value) <=  255) ? ((value) - 128 + LR0_REGNUM) : \ *//* OBSOLETE    (value)) *//* OBSOLETE  *//* OBSOLETE /* *//* OBSOLETE  * Provide the processor register numbers of some registers that are *//* OBSOLETE  * expected/written in instructions that might change under different *//* OBSOLETE  * register sets.  Namely, gcc can compile (-mkernel-registers) so that *//* OBSOLETE  * it uses gr64-gr95 in stead of gr96-gr127. *//* OBSOLETE  */ *//* OBSOLETE #define MSP_HW_REGNUM	125	/* gr125 */ *//* OBSOLETE #define RAB_HW_REGNUM	126	/* gr126 */ *//* OBSOLETE  *//* OBSOLETE /* Convert Processor Special register #x to REGISTER_NAMES register # */ *//* OBSOLETE #define SR_REGNUM(x) \ *//* OBSOLETE   ((x) < 15  ? VAB_REGNUM + (x)					 \ *//* OBSOLETE    : (x) >= 128 && (x) < 131 ? IPC_REGNUM + (x) - 128		 \ *//* OBSOLETE    : (x) == 131 ? Q_REGNUM					 \ *//* OBSOLETE    : (x) == 132 ? ALU_REGNUM					 \ *//* OBSOLETE    : (x) >= 133 && (x) < 136 ? BP_REGNUM + (x) - 133		 \ *//* OBSOLETE    : (x) >= 160 && (x) < 163 ? FPE_REGNUM + (x) - 160		 \ *//* OBSOLETE    : (x) == 164 ? EXO_REGNUM                                     \ *//* OBSOLETE    : (error ("Internal error in SR_REGNUM"), 0)) *//* OBSOLETE #define GR96_REGNUM 0 *//* OBSOLETE  *//* OBSOLETE /* Define the return register separately, so it can be overridden for *//* OBSOLETE    kernel procedure calling conventions. */ *//* OBSOLETE #define	RETURN_REGNUM	GR96_REGNUM *//* OBSOLETE #define GR1_REGNUM 200 *//* OBSOLETE /* This needs to be the memory stack pointer, not the register stack pointer, *//* OBSOLETE    to make call_function work right.  */ *//* OBSOLETE #define SP_REGNUM MSP_REGNUM *//* OBSOLETE #define FP_REGNUM 33		/* lr1 */ *//* OBSOLETE  *//* OBSOLETE /* Return register for transparent calling convention (gr122).  */ *//* OBSOLETE #define TPC_REGNUM (122 - 96 + GR96_REGNUM) *//* OBSOLETE  *//* OBSOLETE /* Large Return Pointer (gr123).  */ *//* OBSOLETE #define LRP_REGNUM (123 - 96 + GR96_REGNUM) *//* OBSOLETE  *//* OBSOLETE /* Static link pointer (gr124).  */ *//* OBSOLETE #define SLP_REGNUM (124 - 96 + GR96_REGNUM) *//* OBSOLETE  *//* OBSOLETE /* Memory Stack Pointer (gr125).  */ *//* OBSOLETE #define MSP_REGNUM (125 - 96 + GR96_REGNUM) *//* OBSOLETE  *//* OBSOLETE /* Register allocate bound (gr126).  */ *//* OBSOLETE #define RAB_REGNUM (126 - 96 + GR96_REGNUM) *//* OBSOLETE  *//* OBSOLETE /* Register Free Bound (gr127).  */ *//* OBSOLETE #define RFB_REGNUM (127 - 96 + GR96_REGNUM) *//* OBSOLETE  *//* OBSOLETE /* Register Stack Pointer.  */ *//* OBSOLETE #define RSP_REGNUM GR1_REGNUM *//* OBSOLETE #define LR0_REGNUM 32 *//* OBSOLETE #define BP_REGNUM 177 *//* OBSOLETE #define FC_REGNUM 178 *//* OBSOLETE #define CR_REGNUM 179 *//* OBSOLETE #define Q_REGNUM 180 *//* OBSOLETE #define VAB_REGNUM 181 *//* OBSOLETE #define OPS_REGNUM (VAB_REGNUM + 1) *//* OBSOLETE #define CPS_REGNUM (VAB_REGNUM + 2) *//* OBSOLETE #define CFG_REGNUM (VAB_REGNUM + 3) *//* OBSOLETE #define CHA_REGNUM (VAB_REGNUM + 4) *//* OBSOLETE #define CHD_REGNUM (VAB_REGNUM + 5) *//* OBSOLETE #define CHC_REGNUM (VAB_REGNUM + 6) *//* OBSOLETE #define RBP_REGNUM (VAB_REGNUM + 7) *//* OBSOLETE #define TMC_REGNUM (VAB_REGNUM + 8) *//* OBSOLETE #define TMR_REGNUM (VAB_REGNUM + 9) *//* OBSOLETE #define NPC_REGNUM (VAB_REGNUM + 10)	/* pc0 */ *//* OBSOLETE #define PC_REGNUM  (VAB_REGNUM + 11)	/* pc1 */ *//* OBSOLETE #define PC2_REGNUM (VAB_REGNUM + 12) *//* OBSOLETE #define MMU_REGNUM (VAB_REGNUM + 13) *//* OBSOLETE #define LRU_REGNUM (VAB_REGNUM + 14) *//* OBSOLETE #define FPE_REGNUM (VAB_REGNUM + 15) *//* OBSOLETE #define INTE_REGNUM (VAB_REGNUM + 16) *//* OBSOLETE #define FPS_REGNUM (VAB_REGNUM + 17) *//* OBSOLETE #define EXO_REGNUM (VAB_REGNUM + 18) *//* OBSOLETE /* gr1 is defined above as 200 = VAB_REGNUM + 19 */ *//* OBSOLETE #define ALU_REGNUM (VAB_REGNUM + 20) *//* OBSOLETE #define PS_REGNUM  ALU_REGNUM *//* OBSOLETE #define IPC_REGNUM (VAB_REGNUM + 21) *//* OBSOLETE #define IPA_REGNUM (VAB_REGNUM + 22) *//* OBSOLETE #define IPB_REGNUM (VAB_REGNUM + 23) *//* OBSOLETE  *//* OBSOLETE #endif /* !defined(REGISTER_NAMES) */ *//* OBSOLETE  *//* OBSOLETE /* Total amount of space needed to store our copies of the machine's *//* OBSOLETE    register state, the array `registers'.  */ *//* OBSOLETE #define REGISTER_BYTES (NUM_REGS * 4) *//* OBSOLETE  *//* OBSOLETE /* Index within `registers' of the first byte of the space for *//* OBSOLETE    register N.  */ *//* OBSOLETE #define REGISTER_BYTE(N)  ((N)*4) *//* OBSOLETE  *//* OBSOLETE /* Number of bytes of storage in the actual machine representation *//* OBSOLETE    for register N.  */ */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?