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