| /* Types for Cpu tools GENerated simulators. |
| Copyright (C) 1996-2021 Free Software Foundation, Inc. |
| Contributed by Cygnus Support. |
| |
| This file is part of GDB, the GNU debugger. |
| |
| 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/>. */ |
| |
| /* This file is not included with cgen-sim.h as it defines types |
| needed by sim-base.h. */ |
| |
| #ifndef CGEN_TYPES_H |
| #define CGEN_TYPES_H |
| |
| /* Miscellaneous cgen configury defined here as this file gets |
| included soon enough. */ |
| |
| /* Indicate we support --{profile,trace}-{range,function}. */ |
| #undef SIM_HAVE_ADDR_RANGE |
| #define SIM_HAVE_ADDR_RANGE |
| |
| #ifdef __GNUC__ |
| #undef DI_FN_SUPPORT |
| #else |
| #define DI_FN_SUPPORT |
| #endif |
| |
| /* Mode support. */ |
| |
| /* Common mode types. */ |
| /* ??? Target specific modes. */ |
| typedef enum mode_type { |
| MODE_VOID, MODE_BI, |
| MODE_QI, MODE_HI, MODE_SI, MODE_DI, |
| MODE_UQI, MODE_UHI, MODE_USI, MODE_UDI, |
| MODE_SF, MODE_DF, MODE_XF, MODE_TF, |
| MODE_TARGET_MAX /* = MODE_TF? */, |
| /* These are host modes. */ |
| MODE_INT, MODE_UINT, MODE_PTR, /*??? MODE_ADDR, MODE_IADDR,*/ |
| MODE_MAX |
| } MODE_TYPE; |
| |
| #define MAX_TARGET_MODES ((int) MODE_TARGET_MAX) |
| #define MAX_MODES ((int) MODE_MAX) |
| |
| extern const char * const cgen_mode_names[]; |
| #define MODE_NAME(m) (cgen_mode_names[m]) |
| |
| /* Some system headers define VOID already, so undo it. */ |
| #undef VOID |
| typedef void VOID; |
| typedef unsigned char BI; |
| typedef signed8 QI; |
| typedef signed16 HI; |
| typedef signed32 SI; |
| typedef unsigned8 UQI; |
| typedef unsigned16 UHI; |
| typedef unsigned32 USI; |
| |
| typedef signed64 DI; |
| typedef unsigned64 UDI; |
| #define GETLODI(di) ((SI) (di)) |
| #define GETHIDI(di) ((SI) ((UDI) (di) >> 32)) |
| #define SETLODI(di, val) ((di) = (((di) & 0xffffffff00000000LL) | (val))) |
| #define SETHIDI(di, val) ((di) = (((di) & 0xffffffffLL) | (((DI) (val)) << 32))) |
| #define MAKEDI(hi, lo) ((((DI) (SI) (hi)) << 32) | ((UDI) (USI) (lo))) |
| |
| /* These are used to record extracted raw data from an instruction, among other |
| things. It must be a host data type, and not a target one. */ |
| typedef int INT; |
| typedef unsigned int UINT; |
| |
| typedef unsigned_address ADDR; /* FIXME: wip*/ |
| typedef unsigned_address IADDR; /* FIXME: wip*/ |
| |
| /* fp types are in cgen-fpu.h */ |
| |
| #endif /* CGEN_TYPES_H */ |