aboutsummaryrefslogtreecommitdiff
path: root/sim/fr30/sim-if.c
blob: e5c5c5776c03d7835ddd900c8ce738ffc8c3e6b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
// OBSOLETE /* Main simulator entry points specific to the FR30.
// OBSOLETE    Copyright (C) 1998, 1999 Free Software Foundation, Inc.
// OBSOLETE    Contributed by Cygnus Solutions.
// OBSOLETE 
// OBSOLETE This file is part of the GNU simulators.
// 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, or (at your option)
// OBSOLETE 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 along
// OBSOLETE with this program; if not, write to the Free Software Foundation, Inc.,
// OBSOLETE 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
// OBSOLETE 
// OBSOLETE #include "sim-main.h"
// OBSOLETE #ifdef HAVE_STDLIB_H
// OBSOLETE #include <stdlib.h>
// OBSOLETE #endif
// OBSOLETE #include "sim-options.h"
// OBSOLETE #include "libiberty.h"
// OBSOLETE #include "bfd.h"
// OBSOLETE 
// OBSOLETE static void free_state (SIM_DESC);
// OBSOLETE static void print_fr30_misc_cpu (SIM_CPU *cpu, int verbose);
// OBSOLETE 
// OBSOLETE /* Records simulator descriptor so utilities like fr30_dump_regs can be
// OBSOLETE    called from gdb.  */
// OBSOLETE SIM_DESC current_state;
// OBSOLETE 
// OBSOLETE /* Cover function of sim_state_free to free the cpu buffers as well.  */
// OBSOLETE 
// OBSOLETE static void
// OBSOLETE free_state (SIM_DESC sd)
// OBSOLETE {
// OBSOLETE   if (STATE_MODULES (sd) != NULL)
// OBSOLETE     sim_module_uninstall (sd);
// OBSOLETE   sim_cpu_free_all (sd);
// OBSOLETE   sim_state_free (sd);
// OBSOLETE }
// OBSOLETE 
// OBSOLETE /* Create an instance of the simulator.  */
// OBSOLETE 
// OBSOLETE SIM_DESC
// OBSOLETE sim_open (kind, callback, abfd, argv)
// OBSOLETE      SIM_OPEN_KIND kind;
// OBSOLETE      host_callback *callback;
// OBSOLETE      struct _bfd *abfd;
// OBSOLETE      char **argv;
// OBSOLETE {
// OBSOLETE   char c;
// OBSOLETE   int i;
// OBSOLETE   SIM_DESC sd = sim_state_alloc (kind, callback);
// OBSOLETE 
// OBSOLETE   /* The cpu data is kept in a separately allocated chunk of memory.  */
// OBSOLETE   if (sim_cpu_alloc_all (sd, 1, cgen_cpu_max_extra_bytes ()) != SIM_RC_OK)
// OBSOLETE     {
// OBSOLETE       free_state (sd);
// OBSOLETE       return 0;
// OBSOLETE     }
// OBSOLETE 
// OBSOLETE #if 0 /* FIXME: pc is in mach-specific struct */
// OBSOLETE   /* FIXME: watchpoints code shouldn't need this */
// OBSOLETE   {
// OBSOLETE     SIM_CPU *current_cpu = STATE_CPU (sd, 0);
// OBSOLETE     STATE_WATCHPOINTS (sd)->pc = &(PC);
// OBSOLETE     STATE_WATCHPOINTS (sd)->sizeof_pc = sizeof (PC);
// OBSOLETE   }
// OBSOLETE #endif
// OBSOLETE 
// OBSOLETE   if (sim_pre_argv_init (sd, argv[0]) != SIM_RC_OK)
// OBSOLETE     {
// OBSOLETE       free_state (sd);
// OBSOLETE       return 0;
// OBSOLETE     }
// OBSOLETE 
// OBSOLETE #if 0 /* FIXME: 'twould be nice if we could do this */
// OBSOLETE   /* These options override any module options.
// OBSOLETE      Obviously ambiguity should be avoided, however the caller may wish to
// OBSOLETE      augment the meaning of an option.  */
// OBSOLETE   if (extra_options != NULL)
// OBSOLETE     sim_add_option_table (sd, extra_options);
// OBSOLETE #endif
// OBSOLETE 
// OBSOLETE   /* getopt will print the error message so we just have to exit if this fails.
// OBSOLETE      FIXME: Hmmm...  in the case of gdb we need getopt to call
// OBSOLETE      print_filtered.  */
// OBSOLETE   if (sim_parse_args (sd, argv) != SIM_RC_OK)
// OBSOLETE     {
// OBSOLETE       free_state (sd);
// OBSOLETE       return 0;
// OBSOLETE     }
// OBSOLETE 
// OBSOLETE #if 0
// OBSOLETE   /* Allocate a handler for the control registers and other devices
// OBSOLETE      if no memory for that range has been allocated by the user.
// OBSOLETE      All are allocated in one chunk to keep things from being
// OBSOLETE      unnecessarily complicated.  */
// OBSOLETE   if (sim_core_read_buffer (sd, NULL, read_map, &c, FR30_DEVICE_ADDR, 1) == 0)
// OBSOLETE     sim_core_attach (sd, NULL,
// OBSOLETE 		     0 /*level*/,
// OBSOLETE 		     access_read_write,
// OBSOLETE 		     0 /*space ???*/,
// OBSOLETE 		     FR30_DEVICE_ADDR, FR30_DEVICE_LEN /*nr_bytes*/,
// OBSOLETE 		     0 /*modulo*/,
// OBSOLETE 		     &fr30_devices,
// OBSOLETE 		     NULL /*buffer*/);
// OBSOLETE #endif
// OBSOLETE 
// OBSOLETE   /* Allocate core managed memory if none specified by user.
// OBSOLETE      Use address 4 here in case the user wanted address 0 unmapped.  */
// OBSOLETE   if (sim_core_read_buffer (sd, NULL, read_map, &c, 4, 1) == 0)
// OBSOLETE     sim_do_commandf (sd, "memory region 0,0x%lx", FR30_DEFAULT_MEM_SIZE);
// OBSOLETE 
// OBSOLETE   /* check for/establish the reference program image */
// OBSOLETE   if (sim_analyze_program (sd,
// OBSOLETE 			   (STATE_PROG_ARGV (sd) != NULL
// OBSOLETE 			    ? *STATE_PROG_ARGV (sd)
// OBSOLETE 			    : NULL),
// OBSOLETE 			   abfd) != SIM_RC_OK)
// OBSOLETE     {
// OBSOLETE       free_state (sd);
// OBSOLETE       return 0;
// OBSOLETE     }
// OBSOLETE 
// OBSOLETE   /* Establish any remaining configuration options.  */
// OBSOLETE   if (sim_config (sd) != SIM_RC_OK)
// OBSOLETE     {
// OBSOLETE       free_state (sd);
// OBSOLETE       return 0;
// OBSOLETE     }
// OBSOLETE 
// OBSOLETE   if (sim_post_argv_init (sd) != SIM_RC_OK)
// OBSOLETE     {
// OBSOLETE       free_state (sd);
// OBSOLETE       return 0;
// OBSOLETE     }
// OBSOLETE 
// OBSOLETE   /* Open a copy of the cpu descriptor table.  */
// OBSOLETE   {
// OBSOLETE     CGEN_CPU_DESC cd = fr30_cgen_cpu_open_1 (STATE_ARCHITECTURE (sd)->printable_name,
// OBSOLETE 					     CGEN_ENDIAN_BIG);
// OBSOLETE     for (i = 0; i < MAX_NR_PROCESSORS; ++i)
// OBSOLETE       {
// OBSOLETE 	SIM_CPU *cpu = STATE_CPU (sd, i);
// OBSOLETE 	CPU_CPU_DESC (cpu) = cd;
// OBSOLETE 	CPU_DISASSEMBLER (cpu) = sim_cgen_disassemble_insn;
// OBSOLETE       }
// OBSOLETE     fr30_cgen_init_dis (cd);
// OBSOLETE   }
// OBSOLETE 
// OBSOLETE   /* Initialize various cgen things not done by common framework.
// OBSOLETE      Must be done after fr30_cgen_cpu_open.  */
// OBSOLETE   cgen_init (sd);
// OBSOLETE 
// OBSOLETE   /* Store in a global so things like sparc32_dump_regs can be invoked
// OBSOLETE      from the gdb command line.  */
// OBSOLETE   current_state = sd;
// OBSOLETE 
// OBSOLETE   return sd;
// OBSOLETE }
// OBSOLETE 
// OBSOLETE void
// OBSOLETE sim_close (sd, quitting)
// OBSOLETE      SIM_DESC sd;
// OBSOLETE      int quitting;
// OBSOLETE {
// OBSOLETE   fr30_cgen_cpu_close (CPU_CPU_DESC (STATE_CPU (sd, 0)));
// OBSOLETE   sim_module_uninstall (sd);
// OBSOLETE }
// OBSOLETE 
// OBSOLETE SIM_RC
// OBSOLETE sim_create_inferior (sd, abfd, argv, envp)
// OBSOLETE      SIM_DESC sd;
// OBSOLETE      struct _bfd *abfd;
// OBSOLETE      char **argv;
// OBSOLETE      char **envp;
// OBSOLETE {
// OBSOLETE   SIM_CPU *current_cpu = STATE_CPU (sd, 0);
// OBSOLETE   SIM_ADDR addr;
// OBSOLETE 
// OBSOLETE   if (abfd != NULL)
// OBSOLETE     addr = bfd_get_start_address (abfd);
// OBSOLETE   else
// OBSOLETE     addr = 0;
// OBSOLETE   sim_pc_set (current_cpu, addr);
// OBSOLETE 
// OBSOLETE #if 0
// OBSOLETE   STATE_ARGV (sd) = sim_copy_argv (argv);
// OBSOLETE   STATE_ENVP (sd) = sim_copy_argv (envp);
// OBSOLETE #endif
// OBSOLETE 
// OBSOLETE   return SIM_RC_OK;
// OBSOLETE }
// OBSOLETE 
// OBSOLETE void
// OBSOLETE sim_do_command (sd, cmd)
// OBSOLETE      SIM_DESC sd;
// OBSOLETE      char *cmd;
// OBSOLETE { 
// OBSOLETE   if (sim_args_command (sd, cmd) != SIM_RC_OK)
// OBSOLETE     sim_io_eprintf (sd, "Unknown command `%s'\n", cmd);
// OBSOLETE }