|  | /* Definitions to target GDB to OpenRISC 1000 32-bit targets. | 
|  | Copyright (C) 2008-2024 Free Software Foundation, Inc. | 
|  |  | 
|  | This file is part of GDB. | 
|  |  | 
|  | This program is free software; you can redistribute it and/or modify it | 
|  | under the terms of the GNU General Public License as published by the Free | 
|  | Software Foundation; either version 3 of the License, or (at your option) | 
|  | any later version. | 
|  |  | 
|  | This program is distributed in the hope that it will be useful, but WITHOUT | 
|  | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | 
|  | FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for | 
|  | more details. | 
|  |  | 
|  | You should have received a copy of the GNU General Public License along | 
|  | With this program.  If not, see <http://www.gnu.org/licenses/>.  */ | 
|  |  | 
|  | #ifndef OR1K_TDEP_H | 
|  | #define OR1K_TDEP_H | 
|  |  | 
|  | #ifndef TARGET_OR1K | 
|  | #define TARGET_OR1K | 
|  | #endif | 
|  |  | 
|  | /* Make cgen names unique to prevent ODR conflicts with other targets.  */ | 
|  | #define GDB_CGEN_REMAP_PREFIX or1k | 
|  | #include "cgen-remap.h" | 
|  | #include "opcodes/or1k-desc.h" | 
|  | #include "opcodes/or1k-opc.h" | 
|  |  | 
|  | /* General Purpose Registers */ | 
|  | #define OR1K_ZERO_REGNUM          0 | 
|  | #define OR1K_SP_REGNUM            1 | 
|  | #define OR1K_FP_REGNUM            2 | 
|  | #define OR1K_FIRST_ARG_REGNUM     3 | 
|  | #define OR1K_LAST_ARG_REGNUM      8 | 
|  | #define OR1K_LR_REGNUM            9 | 
|  | #define OR1K_FIRST_SAVED_REGNUM  10 | 
|  | #define OR1K_RV_REGNUM           11 | 
|  | #define OR1K_PPC_REGNUM          (OR1K_MAX_GPR_REGS + 0) | 
|  | #define OR1K_NPC_REGNUM          (OR1K_MAX_GPR_REGS + 1) | 
|  | #define OR1K_SR_REGNUM           (OR1K_MAX_GPR_REGS + 2) | 
|  |  | 
|  | /* Properties of the architecture. GDB mapping of registers is all the GPRs | 
|  | and SPRs followed by the PPC, NPC and SR at the end. Red zone is the area | 
|  | past the end of the stack reserved for exception handlers etc.  */ | 
|  |  | 
|  | #define OR1K_MAX_GPR_REGS            32 | 
|  | #define OR1K_NUM_PSEUDO_REGS         0 | 
|  | #define OR1K_NUM_REGS               (OR1K_MAX_GPR_REGS + 3) | 
|  | #define OR1K_STACK_ALIGN             4 | 
|  | #define OR1K_INSTLEN                 4 | 
|  | #define OR1K_INSTBITLEN             (OR1K_INSTLEN * 8) | 
|  | #define OR1K_NUM_TAP_RECORDS         8 | 
|  | #define OR1K_FRAME_RED_ZONE_SIZE     2536 | 
|  |  | 
|  | /* Single step based on where the current instruction will take us.  */ | 
|  | extern std::vector<CORE_ADDR> or1k_software_single_step | 
|  | (struct regcache *regcache); | 
|  |  | 
|  |  | 
|  | #endif /* OR1K_TDEP_H */ |