X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=sim%2Fcommon%2Fsim-basics.h;h=b6bdea77e9691a64c07829e2faf7740d2fe67862;hb=05e682e3be7e3d9d63ec358dcf8943fd200545cb;hp=f3db0e0b88f4eb268af048d4a4bf2093e331efb5;hpb=0f2811d1c539d123b69ffa0da3cd13febd10ef43;p=deliverable%2Fbinutils-gdb.git diff --git a/sim/common/sim-basics.h b/sim/common/sim-basics.h index f3db0e0b88..b6bdea77e9 100644 --- a/sim/common/sim-basics.h +++ b/sim/common/sim-basics.h @@ -1,27 +1,27 @@ -/* This file is part of the program psim. +/* The common simulator framework for GDB, the GNU Debugger. - Copyright (C) 1994-1997, Andrew Cagney - Copyright (C) 1997, Free Software Foundation, Inc. + Copyright 2002-2020 Free Software Foundation, Inc. - 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 2 of the License, or - (at your option) any later version. + Contributed by Andrew Cagney and Red Hat. - 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, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - - */ + 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. -#ifndef _SIM_BASICS_H_ -#define _SIM_BASICS_H_ + 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 . */ + + +#ifndef SIM_BASICS_H +#define SIM_BASICS_H /* Basic configuration */ @@ -37,82 +37,120 @@ #include #include +#ifdef __CYGWIN32__ +extern int vasprintf (char **result, const char *format, va_list args); +extern int asprintf (char **result, const char *format, ...); +#endif + + #ifndef NULL #define NULL 0 #endif +#ifndef min +#define min(a, b) ((a) < (b) ? (a) : (b)) +#endif +#ifndef max +#define max(a, b) ((a) > (b) ? (a) : (b)) +#endif + - /* Some versions of GCC include an attribute operator, define it */ #if !defined (__attribute__) -#if (!defined(__GNUC__) \ - || (__GNUC__ < 2) \ - || (__GNUC__ == 2 && __GNUC_MINOR__ < 6)) +#if (!defined(__GNUC__) || (__GNUC__ < 2) || (__GNUC__ == 2 && __GNUC_MINOR__ < 6)) #define __attribute__(arg) #endif #endif +/* Global types that code manipulates */ -/* Memory management with an allocator that clears memory before use. */ +struct hw; +struct _sim_fpu; -void *zalloc (unsigned long size); -#define ZALLOC(TYPE) (TYPE*)zalloc(sizeof (TYPE)) +/* Generic address space (maps) and access attributes */ -void zfree(void*); +enum { + read_map = 0, + write_map = 1, + exec_map = 2, + io_map = 3, + nr_maps = 32, /* something small */ +}; +enum { + access_invalid = 0, + access_read = 1 << read_map, + access_write = 1 << write_map, + access_exec = 1 << exec_map, + access_io = 1 << io_map, +}; +enum { + access_read_write = (access_read | access_write), + access_read_exec = (access_read | access_exec), + access_write_exec = (access_write | access_exec), + access_read_write_exec = (access_read | access_write | access_exec), + access_read_io = (access_read | access_io), + access_write_io = (access_write | access_io), + access_read_write_io = (access_read | access_write | access_io), + access_exec_io = (access_exec | access_io), + access_read_exec_io = (access_read | access_exec | access_io), + access_write_exec_io = (access_write | access_exec | access_io), + access_read_write_exec_io = (access_read | access_write | access_exec | access_io), +}; -/* Global types that code manipulates */ -typedef struct _device device; +/* disposition of an object when things are reset */ +typedef enum { + permenant_object, + temporary_object, +} object_disposition; -/* Address access attributes */ -typedef enum _access_type { - access_invalid = 0, - access_read = 1, - access_write = 2, - access_read_write = 3, - access_exec = 4, - access_read_exec = 5, - access_write_exec = 6, - access_read_write_exec = 7, -} access_type; +/* Memory transfer types */ -/* Address attachement types */ -typedef enum _attach_type { - attach_invalid, - attach_raw_memory, - attach_callback, - /* ... */ -} attach_type; +typedef enum _transfer_type { + read_transfer, + write_transfer, +} transfer_type; +/* directions */ -/* Basic definitions - ordered so that nothing calls what comes after - it */ +typedef enum { + bidirect_port, + input_port, + output_port, +} port_direction; + + + +/* Basic definitions - ordered so that nothing calls what comes after it. */ -#ifdef HAVE_CONFIG_H -#include "tconfig.h" -#endif #include "ansidecl.h" -#include "callback.h" -#include "remote-sim.h" +#include "gdb/callback.h" +#include "gdb/remote-sim.h" #include "sim-config.h" -#include "sim-base.h" -#include "sim-trace.h" - #include "sim-inline.h" #include "sim-types.h" #include "sim-bits.h" #include "sim-endian.h" +#include "sim-signal.h" + +#include "sim-utils.h" + +#include "libiberty.h" + +/* Note: Only the simpler interfaces are defined here. More heavy + weight objects, such as core and events, are defined in the more + serious sim-base.h header. */ -#endif /* _SIM_BASICS_H_ */ +#endif /* SIM_BASICS_H */