1/* The common simulator framework for GDB, the GNU Debugger. 2 3 Copyright 2002, 2004, 2007, 2008, 2009, 2010, 2011 4 Free Software Foundation, Inc. 5 6 Contributed by Andrew Cagney and Red Hat. 7 8 This file is part of GDB. 9 10 This program is free software; you can redistribute it and/or modify 11 it under the terms of the GNU General Public License as published by 12 the Free Software Foundation; either version 3 of the License, or 13 (at your option) any later version. 14 15 This program is distributed in the hope that it will be useful, 16 but WITHOUT ANY WARRANTY; without even the implied warranty of 17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 GNU General Public License for more details. 19 20 You should have received a copy of the GNU General Public License 21 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 22 23 24#ifndef _SIM_BASICS_H_ 25#define _SIM_BASICS_H_ 26 27 28/* Basic configuration */ 29 30#ifdef HAVE_CONFIG_H 31#include "cconfig.h" 32#endif 33 34/* Basic host dependant mess - hopefully <stdio.h> + <stdarg.h> will 35 bring potential conflicts out in the open */ 36 37#include <stdarg.h> 38#include <stdio.h> 39#include <setjmp.h> 40 41#ifdef __CYGWIN32__ 42extern int vasprintf (char **result, const char *format, va_list args); 43extern int asprintf (char **result, const char *format, ...); 44#endif 45 46 47#ifndef NULL 48#define NULL 0 49#endif 50 51 52 53/* Some versions of GCC include an attribute operator, define it */ 54 55#if !defined (__attribute__) 56#if (!defined(__GNUC__) || (__GNUC__ < 2) || (__GNUC__ == 2 && __GNUC_MINOR__ < 6)) 57#define __attribute__(arg) 58#endif 59#endif 60 61 62/* Global types that code manipulates */ 63 64typedef struct _device device; 65struct hw; 66struct _sim_fpu; 67 68 69/* Generic address space (maps) and access attributes */ 70 71enum { 72 read_map = 0, 73 write_map = 1, 74 exec_map = 2, 75 io_map = 3, 76 nr_maps = 32, /* something small */ 77}; 78 79enum { 80 access_invalid = 0, 81 access_read = 1 << read_map, 82 access_write = 1 << write_map, 83 access_exec = 1 << exec_map, 84 access_io = 1 << io_map, 85}; 86 87enum { 88 access_read_write = (access_read | access_write), 89 access_read_exec = (access_read | access_exec), 90 access_write_exec = (access_write | access_exec), 91 access_read_write_exec = (access_read | access_write | access_exec), 92 access_read_io = (access_read | access_io), 93 access_write_io = (access_write | access_io), 94 access_read_write_io = (access_read | access_write | access_io), 95 access_exec_io = (access_exec | access_io), 96 access_read_exec_io = (access_read | access_exec | access_io), 97 access_write_exec_io = (access_write | access_exec | access_io), 98 access_read_write_exec_io = (access_read | access_write | access_exec | access_io), 99}; 100 101 102/* disposition of an object when things are reset */ 103 104typedef enum { 105 permenant_object, 106 temporary_object, 107} object_disposition; 108 109 110/* Memory transfer types */ 111 112typedef enum _transfer_type { 113 read_transfer, 114 write_transfer, 115} transfer_type; 116 117 118/* directions */ 119 120typedef enum { 121 bidirect_port, 122 input_port, 123 output_port, 124} port_direction; 125 126 127 128/* Basic definitions - ordered so that nothing calls what comes after it. */ 129 130/* FIXME: conditionalizing tconfig.h on HAVE_CONFIG_H seems wrong. */ 131#ifdef HAVE_CONFIG_H 132#include "tconfig.h" 133#endif 134 135#include "ansidecl.h" 136#include "gdb/callback.h" 137#include "gdb/remote-sim.h" 138 139#include "sim-config.h" 140 141#include "sim-inline.h" 142 143#include "sim-types.h" 144#include "sim-bits.h" 145#include "sim-endian.h" 146#include "sim-signal.h" 147#include "sim-arange.h" 148 149#include "sim-utils.h" 150 151/* Note: Only the simpler interfaces are defined here. More heavy 152 weight objects, such as core and events, are defined in the more 153 serious sim-base.h header. */ 154 155#endif /* _SIM_BASICS_H_ */ 156