OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [gdb-5.3/] [gdb/] [cxux-nat.c] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1181 sfurman
// OBSOLETE /* Native support for Motorola 88k running Harris CX/UX.
2
// OBSOLETE    Copyright 1988, 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000,
3
// OBSOLETE    2001 Free Software Foundation, Inc.
4
// OBSOLETE 
5
// OBSOLETE    This file is part of GDB.
6
// OBSOLETE 
7
// OBSOLETE    This program is free software; you can redistribute it and/or modify
8
// OBSOLETE    it under the terms of the GNU General Public License as published by
9
// OBSOLETE    the Free Software Foundation; either version 2 of the License, or
10
// OBSOLETE    (at your option) any later version.
11
// OBSOLETE 
12
// OBSOLETE    This program is distributed in the hope that it will be useful,
13
// OBSOLETE    but WITHOUT ANY WARRANTY; without even the implied warranty of
14
// OBSOLETE    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
// OBSOLETE    GNU General Public License for more details.
16
// OBSOLETE 
17
// OBSOLETE    You should have received a copy of the GNU General Public License
18
// OBSOLETE    along with this program; if not, write to the Free Software
19
// OBSOLETE    Foundation, Inc., 59 Temple Place - Suite 330,
20
// OBSOLETE    Boston, MA 02111-1307, USA.  */
21
// OBSOLETE 
22
// OBSOLETE #include "defs.h"
23
// OBSOLETE #include "frame.h"
24
// OBSOLETE #include "inferior.h"
25
// OBSOLETE 
26
// OBSOLETE #include <sys/types.h>
27
// OBSOLETE #include <sys/param.h>
28
// OBSOLETE #include <sys/dir.h>
29
// OBSOLETE #include <signal.h>
30
// OBSOLETE #include "gdbcore.h"
31
// OBSOLETE #include <sys/user.h>
32
// OBSOLETE 
33
// OBSOLETE #include "bfd.h"
34
// OBSOLETE #include "symfile.h"
35
// OBSOLETE #include "objfiles.h"
36
// OBSOLETE #include "symtab.h"
37
// OBSOLETE #include "regcache.h"
38
// OBSOLETE 
39
// OBSOLETE #ifndef USER                        /* added to support BCS ptrace_user */
40
// OBSOLETE #define USER ptrace_user
41
// OBSOLETE #endif
42
// OBSOLETE #include <sys/ioctl.h>
43
// OBSOLETE #include <fcntl.h>
44
// OBSOLETE #include <sys/file.h>
45
// OBSOLETE #include "gdb_stat.h"
46
// OBSOLETE 
47
// OBSOLETE #include "symtab.h"
48
// OBSOLETE #include "setjmp.h"
49
// OBSOLETE #include "value.h"
50
// OBSOLETE 
51
// OBSOLETE #include <sys/ptrace.h>
52
// OBSOLETE 
53
// OBSOLETE /* CX/UX provides them already, but as word offsets instead of char offsets */
54
// OBSOLETE #define SXIP_OFFSET (PT_SXIP * 4)
55
// OBSOLETE #define SNIP_OFFSET (PT_SNIP * 4)
56
// OBSOLETE #define SFIP_OFFSET (PT_SFIP * 4)
57
// OBSOLETE #define PSR_OFFSET  (PT_PSR  * sizeof(int))
58
// OBSOLETE #define FPSR_OFFSET (PT_FPSR * sizeof(int))
59
// OBSOLETE #define FPCR_OFFSET (PT_FPCR * sizeof(int))
60
// OBSOLETE 
61
// OBSOLETE #define XREGADDR(r) (((char *)&u.pt_x0-(char *)&u) + \
62
// OBSOLETE                      ((r)-X0_REGNUM)*sizeof(X_REGISTER_RAW_TYPE))
63
// OBSOLETE 
64
// OBSOLETE extern int have_symbol_file_p ();
65
// OBSOLETE 
66
// OBSOLETE extern jmp_buf stack_jmp;
67
// OBSOLETE 
68
// OBSOLETE extern int errno;
69
// OBSOLETE 
70
// OBSOLETE void
71
// OBSOLETE fetch_inferior_registers (int regno)
72
// OBSOLETE {
73
// OBSOLETE   register unsigned int regaddr;
74
// OBSOLETE   char buf[MAX_REGISTER_RAW_SIZE];
75
// OBSOLETE   register int i;
76
// OBSOLETE 
77
// OBSOLETE   struct USER u;
78
// OBSOLETE   unsigned int offset;
79
// OBSOLETE 
80
// OBSOLETE   offset = (char *) &u.pt_r0 - (char *) &u;
81
// OBSOLETE   regaddr = offset;         /* byte offset to r0; */
82
// OBSOLETE 
83
// OBSOLETE /*  offset = ptrace (3, PIDGET (inferior_ptid), (PTRACE_ARG3_TYPE) offset, 0) - KERNEL_U_ADDR; */
84
// OBSOLETE   for (regno = 0; regno < PC_REGNUM; regno++)
85
// OBSOLETE     {
86
// OBSOLETE       /*regaddr = register_addr (regno, offset); */
87
// OBSOLETE       /* 88k enhancement  */
88
// OBSOLETE 
89
// OBSOLETE       for (i = 0; i < REGISTER_RAW_SIZE (regno); i += sizeof (int))
90
// OBSOLETE     {
91
// OBSOLETE       *(int *) &buf[i] = ptrace (3, PIDGET (inferior_ptid),
92
// OBSOLETE                                  (PTRACE_ARG3_TYPE) regaddr, 0);
93
// OBSOLETE       regaddr += sizeof (int);
94
// OBSOLETE     }
95
// OBSOLETE       supply_register (regno, buf);
96
// OBSOLETE     }
97
// OBSOLETE   /* now load up registers 32-37; special pc registers */
98
// OBSOLETE   *(int *) &buf[0] = ptrace (3, PIDGET (inferior_ptid),
99
// OBSOLETE                          (PTRACE_ARG3_TYPE) PSR_OFFSET, 0);
100
// OBSOLETE   supply_register (PSR_REGNUM, buf);
101
// OBSOLETE   *(int *) &buf[0] = ptrace (3, PIDGET (inferior_ptid),
102
// OBSOLETE                          (PTRACE_ARG3_TYPE) FPSR_OFFSET, 0);
103
// OBSOLETE   supply_register (FPSR_REGNUM, buf);
104
// OBSOLETE   *(int *) &buf[0] = ptrace (3, PIDGET (inferior_ptid),
105
// OBSOLETE                          (PTRACE_ARG3_TYPE) FPCR_OFFSET, 0);
106
// OBSOLETE   supply_register (FPCR_REGNUM, buf);
107
// OBSOLETE   *(int *) &buf[0] = ptrace (3, PIDGET (inferior_ptid),
108
// OBSOLETE                          (PTRACE_ARG3_TYPE) SXIP_OFFSET, 0);
109
// OBSOLETE   supply_register (SXIP_REGNUM, buf);
110
// OBSOLETE   *(int *) &buf[0] = ptrace (3, PIDGET (inferior_ptid),
111
// OBSOLETE                          (PTRACE_ARG3_TYPE) SNIP_OFFSET, 0);
112
// OBSOLETE   supply_register (SNIP_REGNUM, buf);
113
// OBSOLETE   *(int *) &buf[0] = ptrace (3, PIDGET (inferior_ptid),
114
// OBSOLETE                          (PTRACE_ARG3_TYPE) SFIP_OFFSET, 0);
115
// OBSOLETE   supply_register (SFIP_REGNUM, buf);
116
// OBSOLETE 
117
// OBSOLETE   if (target_is_m88110)
118
// OBSOLETE     {
119
// OBSOLETE       for (regaddr = XREGADDR (X0_REGNUM), regno = X0_REGNUM;
120
// OBSOLETE        regno < NUM_REGS;
121
// OBSOLETE        regno++, regaddr += 16)
122
// OBSOLETE     {
123
// OBSOLETE       X_REGISTER_RAW_TYPE xval;
124
// OBSOLETE 
125
// OBSOLETE       *(int *) &xval.w1 = ptrace (3, PIDGET (inferior_ptid),
126
// OBSOLETE                                   (PTRACE_ARG3_TYPE) regaddr, 0);
127
// OBSOLETE       *(int *) &xval.w2 = ptrace (3, PIDGET (inferior_ptid),
128
// OBSOLETE                                   (PTRACE_ARG3_TYPE) (regaddr + 4), 0);
129
// OBSOLETE       *(int *) &xval.w3 = ptrace (3, PIDGET (inferior_ptid),
130
// OBSOLETE                                   (PTRACE_ARG3_TYPE) (regaddr + 8), 0);
131
// OBSOLETE       *(int *) &xval.w4 = ptrace (3, PIDGET (inferior_ptid),
132
// OBSOLETE                                   (PTRACE_ARG3_TYPE) (regaddr + 12), 0);
133
// OBSOLETE       supply_register (regno, (void *) &xval);
134
// OBSOLETE     }
135
// OBSOLETE     }
136
// OBSOLETE }
137
// OBSOLETE 
138
// OBSOLETE /* Store our register values back into the inferior.
139
// OBSOLETE    If REGNO is -1, do this for all registers.
140
// OBSOLETE    Otherwise, REGNO specifies which register (so we can save time).  */
141
// OBSOLETE 
142
// OBSOLETE void
143
// OBSOLETE store_inferior_registers (int regno)
144
// OBSOLETE {
145
// OBSOLETE   register unsigned int regaddr;
146
// OBSOLETE   char buf[80];
147
// OBSOLETE 
148
// OBSOLETE   struct USER u;
149
// OBSOLETE 
150
// OBSOLETE   unsigned int offset = (char *) &u.pt_r0 - (char *) &u;
151
// OBSOLETE 
152
// OBSOLETE   regaddr = offset;
153
// OBSOLETE 
154
// OBSOLETE   /* Don't try to deal with EXIP_REGNUM or ENIP_REGNUM, because I think either
155
// OBSOLETE      svr3 doesn't run on an 88110, or the kernel isolates the different (not
156
// OBSOLETE      completely sure this is true, but seems to be.  */
157
// OBSOLETE   if (regno >= 0)
158
// OBSOLETE     {
159
// OBSOLETE       /*      regaddr = register_addr (regno, offset); */
160
// OBSOLETE       if (regno < PC_REGNUM)
161
// OBSOLETE     {
162
// OBSOLETE       regaddr = offset + regno * sizeof (int);
163
// OBSOLETE       errno = 0;
164
// OBSOLETE       ptrace (6, PIDGET (inferior_ptid),
165
// OBSOLETE               (PTRACE_ARG3_TYPE) regaddr, read_register (regno));
166
// OBSOLETE       if (errno != 0)
167
// OBSOLETE         {
168
// OBSOLETE           sprintf (buf, "writing register number %d", regno);
169
// OBSOLETE           perror_with_name (buf);
170
// OBSOLETE         }
171
// OBSOLETE     }
172
// OBSOLETE       else if (regno == PSR_REGNUM)
173
// OBSOLETE     ptrace (6, PIDGET (inferior_ptid),
174
// OBSOLETE             (PTRACE_ARG3_TYPE) PSR_OFFSET, read_register (regno));
175
// OBSOLETE       else if (regno == FPSR_REGNUM)
176
// OBSOLETE     ptrace (6, PIDGET (inferior_ptid),
177
// OBSOLETE             (PTRACE_ARG3_TYPE) FPSR_OFFSET, read_register (regno));
178
// OBSOLETE       else if (regno == FPCR_REGNUM)
179
// OBSOLETE     ptrace (6, PIDGET (inferior_ptid),
180
// OBSOLETE             (PTRACE_ARG3_TYPE) FPCR_OFFSET, read_register (regno));
181
// OBSOLETE       else if (regno == SXIP_REGNUM)
182
// OBSOLETE     ptrace (6, PIDGET (inferior_ptid),
183
// OBSOLETE             (PTRACE_ARG3_TYPE) SXIP_OFFSET, read_register (regno));
184
// OBSOLETE       else if (regno == SNIP_REGNUM)
185
// OBSOLETE     ptrace (6, PIDGET (inferior_ptid),
186
// OBSOLETE             (PTRACE_ARG3_TYPE) SNIP_OFFSET, read_register (regno));
187
// OBSOLETE       else if (regno == SFIP_REGNUM)
188
// OBSOLETE     ptrace (6, PIDGET (inferior_ptid),
189
// OBSOLETE             (PTRACE_ARG3_TYPE) SFIP_OFFSET, read_register (regno));
190
// OBSOLETE       else if (target_is_m88110 && regno < NUM_REGS)
191
// OBSOLETE     {
192
// OBSOLETE       X_REGISTER_RAW_TYPE xval;
193
// OBSOLETE 
194
// OBSOLETE       read_register_bytes (REGISTER_BYTE (regno), (char *) &xval,
195
// OBSOLETE                            sizeof (X_REGISTER_RAW_TYPE));
196
// OBSOLETE       regaddr = XREGADDR (regno);
197
// OBSOLETE       ptrace (6, PIDGET (inferior_ptid), (PTRACE_ARG3_TYPE) regaddr, xval.w1);
198
// OBSOLETE       ptrace (6, PIDGET (inferior_ptid), (PTRACE_ARG3_TYPE) regaddr + 4, xval.w2);
199
// OBSOLETE       ptrace (6, PIDGET (inferior_ptid), (PTRACE_ARG3_TYPE) regaddr + 8, xval.w3);
200
// OBSOLETE       ptrace (6, PIDGET (inferior_ptid), (PTRACE_ARG3_TYPE) regaddr + 12, xval.w4);
201
// OBSOLETE     }
202
// OBSOLETE       else
203
// OBSOLETE     printf_unfiltered ("Bad register number for store_inferior routine\n");
204
// OBSOLETE     }
205
// OBSOLETE   else
206
// OBSOLETE     {
207
// OBSOLETE       for (regno = 0; regno < PC_REGNUM; regno++)
208
// OBSOLETE     {
209
// OBSOLETE       /*      regaddr = register_addr (regno, offset); */
210
// OBSOLETE       errno = 0;
211
// OBSOLETE       regaddr = offset + regno * sizeof (int);
212
// OBSOLETE       ptrace (6, PIDGET (inferior_ptid),
213
// OBSOLETE               (PTRACE_ARG3_TYPE) regaddr, read_register (regno));
214
// OBSOLETE       if (errno != 0)
215
// OBSOLETE         {
216
// OBSOLETE           sprintf (buf, "writing register number %d", regno);
217
// OBSOLETE           perror_with_name (buf);
218
// OBSOLETE         }
219
// OBSOLETE     }
220
// OBSOLETE       ptrace (6, PIDGET (inferior_ptid),
221
// OBSOLETE           (PTRACE_ARG3_TYPE) PSR_OFFSET, read_register (regno));
222
// OBSOLETE       ptrace (6, PIDGET (inferior_ptid),
223
// OBSOLETE           (PTRACE_ARG3_TYPE) FPSR_OFFSET, read_register (regno));
224
// OBSOLETE       ptrace (6, PIDGET (inferior_ptid),
225
// OBSOLETE           (PTRACE_ARG3_TYPE) FPCR_OFFSET, read_register (regno));
226
// OBSOLETE       ptrace (6, PIDGET (inferior_ptid),
227
// OBSOLETE           (PTRACE_ARG3_TYPE) SXIP_OFFSET, read_register (SXIP_REGNUM));
228
// OBSOLETE       ptrace (6, PIDGET (inferior_ptid),
229
// OBSOLETE           (PTRACE_ARG3_TYPE) SNIP_OFFSET, read_register (SNIP_REGNUM));
230
// OBSOLETE       ptrace (6, PIDGET (inferior_ptid),
231
// OBSOLETE           (PTRACE_ARG3_TYPE) SFIP_OFFSET, read_register (SFIP_REGNUM));
232
// OBSOLETE       if (target_is_m88110)
233
// OBSOLETE     {
234
// OBSOLETE       for (regno = X0_REGNUM; regno < NUM_REGS; regno++)
235
// OBSOLETE         {
236
// OBSOLETE           X_REGISTER_RAW_TYPE xval;
237
// OBSOLETE 
238
// OBSOLETE           read_register_bytes (REGISTER_BYTE (regno), (char *) &xval,
239
// OBSOLETE                                sizeof (X_REGISTER_RAW_TYPE));
240
// OBSOLETE           regaddr = XREGADDR (regno);
241
// OBSOLETE           ptrace (6, PIDGET (inferior_ptid), (PTRACE_ARG3_TYPE) regaddr, xval.w1);
242
// OBSOLETE           ptrace (6, PIDGET (inferior_ptid), (PTRACE_ARG3_TYPE) (regaddr + 4), xval.w2);
243
// OBSOLETE           ptrace (6, PIDGET (inferior_ptid), (PTRACE_ARG3_TYPE) (regaddr + 8), xval.w3);
244
// OBSOLETE           ptrace (6, PIDGET (inferior_ptid), (PTRACE_ARG3_TYPE) (regaddr + 12), xval.w4);
245
// OBSOLETE         }
246
// OBSOLETE     }
247
// OBSOLETE     }
248
// OBSOLETE }
249
// OBSOLETE 
250
// OBSOLETE /* blockend is the address of the end of the user structure */
251
// OBSOLETE 
252
// OBSOLETE m88k_register_u_addr (int blockend, int regnum)
253
// OBSOLETE {
254
// OBSOLETE   struct USER u;
255
// OBSOLETE   int ustart = blockend - sizeof (struct USER);
256
// OBSOLETE 
257
// OBSOLETE   if (regnum < PSR_REGNUM)
258
// OBSOLETE     return (ustart + ((int) &u.pt_r0 - (int) &u) +
259
// OBSOLETE         REGISTER_SIZE * regnum);
260
// OBSOLETE   else if (regnum == PSR_REGNUM)
261
// OBSOLETE     return (ustart + ((int) &u.pt_psr) - (int) &u);
262
// OBSOLETE   else if (regnum == FPSR_REGNUM)
263
// OBSOLETE     return (ustart + ((int) &u.pt_fpsr) - (int) &u);
264
// OBSOLETE   else if (regnum == FPCR_REGNUM)
265
// OBSOLETE     return (ustart + ((int) &u.pt_fpcr) - (int) &u);
266
// OBSOLETE   else if (regnum == SXIP_REGNUM)
267
// OBSOLETE     return (ustart + SXIP_OFFSET);
268
// OBSOLETE   else if (regnum == SNIP_REGNUM)
269
// OBSOLETE     return (ustart + SNIP_OFFSET);
270
// OBSOLETE   else if (regnum == SFIP_REGNUM)
271
// OBSOLETE     return (ustart + SFIP_OFFSET);
272
// OBSOLETE   else if (target_is_m88110)
273
// OBSOLETE     return (ustart + ((int) &u.pt_x0 - (int) &u) +  /* Must be X register */
274
// OBSOLETE         sizeof (u.pt_x0) * (regnum - X0_REGNUM));
275
// OBSOLETE   else
276
// OBSOLETE     return (blockend + REGISTER_SIZE * regnum);
277
// OBSOLETE }
278
// OBSOLETE 
279
// OBSOLETE #ifdef USE_PROC_FS
280
// OBSOLETE 
281
// OBSOLETE #include <sys/procfs.h>
282
// OBSOLETE 
283
// OBSOLETE /* Prototypes for supply_gregset etc. */
284
// OBSOLETE #include "gregset.h"
285
// OBSOLETE 
286
// OBSOLETE /*  Given a pointer to a general register set in /proc format (gregset_t *),
287
// OBSOLETE    unpack the register contents and supply them as gdb's idea of the current
288
// OBSOLETE    register values. */
289
// OBSOLETE 
290
// OBSOLETE void
291
// OBSOLETE supply_gregset (gregset_t *gregsetp)
292
// OBSOLETE {
293
// OBSOLETE   register int regi;
294
// OBSOLETE   register greg_t *regp = (greg_t *) gregsetp;
295
// OBSOLETE 
296
// OBSOLETE   for (regi = 0; regi <= SP_REGNUM; regi++)
297
// OBSOLETE     supply_register (regi, (char *) (regp + regi));
298
// OBSOLETE 
299
// OBSOLETE   supply_register (SXIP_REGNUM, (char *) (regp + R_XIP));
300
// OBSOLETE   supply_register (SNIP_REGNUM, (char *) (regp + R_NIP));
301
// OBSOLETE   supply_register (SFIP_REGNUM, (char *) (regp + R_FIP));
302
// OBSOLETE   supply_register (PSR_REGNUM, (char *) (regp + R_PSR));
303
// OBSOLETE   supply_register (FPSR_REGNUM, (char *) (regp + R_FPSR));
304
// OBSOLETE   supply_register (FPCR_REGNUM, (char *) (regp + R_FPCR));
305
// OBSOLETE }
306
// OBSOLETE 
307
// OBSOLETE void
308
// OBSOLETE fill_gregset (gregset_t *gregsetp, int regno)
309
// OBSOLETE {
310
// OBSOLETE   int regi;
311
// OBSOLETE   register greg_t *regp = (greg_t *) gregsetp;
312
// OBSOLETE 
313
// OBSOLETE   for (regi = 0; regi <= R_R31; regi++)
314
// OBSOLETE     if ((regno == -1) || (regno == regi))
315
// OBSOLETE       *(regp + regi) = *(int *) &registers[REGISTER_BYTE (regi)];
316
// OBSOLETE 
317
// OBSOLETE   if ((regno == -1) || (regno == SXIP_REGNUM))
318
// OBSOLETE     *(regp + R_XIP) = *(int *) &registers[REGISTER_BYTE (SXIP_REGNUM)];
319
// OBSOLETE   if ((regno == -1) || (regno == SNIP_REGNUM))
320
// OBSOLETE     *(regp + R_NIP) = *(int *) &registers[REGISTER_BYTE (SNIP_REGNUM)];
321
// OBSOLETE   if ((regno == -1) || (regno == SFIP_REGNUM))
322
// OBSOLETE     *(regp + R_FIP) = *(int *) &registers[REGISTER_BYTE (SFIP_REGNUM)];
323
// OBSOLETE   if ((regno == -1) || (regno == PSR_REGNUM))
324
// OBSOLETE     *(regp + R_PSR) = *(int *) &registers[REGISTER_BYTE (PSR_REGNUM)];
325
// OBSOLETE   if ((regno == -1) || (regno == FPSR_REGNUM))
326
// OBSOLETE     *(regp + R_FPSR) = *(int *) &registers[REGISTER_BYTE (FPSR_REGNUM)];
327
// OBSOLETE   if ((regno == -1) || (regno == FPCR_REGNUM))
328
// OBSOLETE     *(regp + R_FPCR) = *(int *) &registers[REGISTER_BYTE (FPCR_REGNUM)];
329
// OBSOLETE }
330
// OBSOLETE 
331
// OBSOLETE #endif /* USE_PROC_FS */
332
// OBSOLETE 
333
// OBSOLETE /* This support adds the equivalent of adb's % command.  When
334
// OBSOLETE    the `add-shared-symbol-files' command is given, this routine scans 
335
// OBSOLETE    the dynamic linker's link map and reads the minimal symbols
336
// OBSOLETE    from each shared object file listed in the map. */
337
// OBSOLETE 
338
// OBSOLETE struct link_map
339
// OBSOLETE {
340
// OBSOLETE   unsigned long l_addr;             /* address at which object is mapped */
341
// OBSOLETE   char *l_name;                     /* full name of loaded object */
342
// OBSOLETE   void *l_ld;                       /* dynamic structure of object */
343
// OBSOLETE   struct link_map *l_next;  /* next link object */
344
// OBSOLETE   struct link_map *l_prev;  /* previous link object */
345
// OBSOLETE };
346
// OBSOLETE 
347
// OBSOLETE #define LINKS_MAP_POINTER "_ld_tail"
348
// OBSOLETE #define LIBC_FILE "/usr/lib/libc.so.1"
349
// OBSOLETE #define SHARED_OFFSET 0xf0001000
350
// OBSOLETE 
351
// OBSOLETE #ifndef PATH_MAX
352
// OBSOLETE #define PATH_MAX 1023               /* maximum size of path name on OS */
353
// OBSOLETE #endif
354
// OBSOLETE 
355
// OBSOLETE void
356
// OBSOLETE add_shared_symbol_files (void)
357
// OBSOLETE {
358
// OBSOLETE   void *desc;
359
// OBSOLETE   struct link_map *ld_map, *lm, lms;
360
// OBSOLETE   struct minimal_symbol *minsym;
361
// OBSOLETE   struct objfile *objfile;
362
// OBSOLETE   char *path_name;
363
// OBSOLETE 
364
// OBSOLETE   if (ptid_equal (inferior_ptid, null_ptid))
365
// OBSOLETE     {
366
// OBSOLETE       warning ("The program has not yet been started.");
367
// OBSOLETE       return;
368
// OBSOLETE     }
369
// OBSOLETE 
370
// OBSOLETE   objfile = symbol_file_add (LIBC_FILE, 0, NULL, 0, OBJF_READNOW);
371
// OBSOLETE   minsym = lookup_minimal_symbol (LINKS_MAP_POINTER, objfile);
372
// OBSOLETE 
373
// OBSOLETE   ld_map = (struct link_map *)
374
// OBSOLETE     read_memory_integer (((int) SYMBOL_VALUE_ADDRESS (minsym) + SHARED_OFFSET), 4);
375
// OBSOLETE   lm = ld_map;
376
// OBSOLETE   while (lm)
377
// OBSOLETE     {
378
// OBSOLETE       int local_errno = 0;
379
// OBSOLETE 
380
// OBSOLETE       read_memory ((CORE_ADDR) lm, (char *) &lms, sizeof (struct link_map));
381
// OBSOLETE       if (lms.l_name)
382
// OBSOLETE     {
383
// OBSOLETE       if (target_read_string ((CORE_ADDR) lms.l_name, &path_name,
384
// OBSOLETE                               PATH_MAX, &local_errno))
385
// OBSOLETE         {
386
// OBSOLETE           struct section_addr_info section_addrs;
387
// OBSOLETE           memset (&section_addrs, 0, sizeof (section_addrs));
388
// OBSOLETE           section_addrs.other[0].addr = lms.l_addr;
389
// OBSOLETE               section_addrs.other[0].name = ".text";
390
// OBSOLETE           symbol_file_add (path_name, 1, &section_addrs, 0, 0);
391
// OBSOLETE           xfree (path_name);
392
// OBSOLETE         }
393
// OBSOLETE     }
394
// OBSOLETE       /* traverse links in reverse order so that we get the
395
// OBSOLETE          the symbols the user actually gets. */
396
// OBSOLETE       lm = lms.l_prev;
397
// OBSOLETE     }
398
// OBSOLETE 
399
// OBSOLETE   /* Getting new symbols may change our opinion about what is
400
// OBSOLETE      frameless.  */
401
// OBSOLETE   reinit_frame_cache ();
402
// OBSOLETE }
403
// OBSOLETE 
404
// OBSOLETE #if defined(_ES_MP)
405
// OBSOLETE 
406
// OBSOLETE #include <sys/regset.h>
407
// OBSOLETE 
408
// OBSOLETE unsigned int
409
// OBSOLETE m88k_harris_core_register_addr (int regno, int reg_ptr)
410
// OBSOLETE {
411
// OBSOLETE   unsigned int word_offset;
412
// OBSOLETE 
413
// OBSOLETE   switch (regno)
414
// OBSOLETE     {
415
// OBSOLETE     case PSR_REGNUM:
416
// OBSOLETE       word_offset = R_EPSR;
417
// OBSOLETE       break;
418
// OBSOLETE     case FPSR_REGNUM:
419
// OBSOLETE       word_offset = R_FPSR;
420
// OBSOLETE       break;
421
// OBSOLETE     case FPCR_REGNUM:
422
// OBSOLETE       word_offset = R_FPCR;
423
// OBSOLETE       break;
424
// OBSOLETE     case SXIP_REGNUM:
425
// OBSOLETE       word_offset = R_EXIP;
426
// OBSOLETE       break;
427
// OBSOLETE     case SNIP_REGNUM:
428
// OBSOLETE       word_offset = R_ENIP;
429
// OBSOLETE       break;
430
// OBSOLETE     case SFIP_REGNUM:
431
// OBSOLETE       word_offset = R_EFIP;
432
// OBSOLETE       break;
433
// OBSOLETE     default:
434
// OBSOLETE       if (regno <= FP_REGNUM)
435
// OBSOLETE     word_offset = regno;
436
// OBSOLETE       else
437
// OBSOLETE     word_offset = ((regno - X0_REGNUM) * 4);
438
// OBSOLETE     }
439
// OBSOLETE   return (word_offset * 4);
440
// OBSOLETE }
441
// OBSOLETE 
442
// OBSOLETE #endif /* _ES_MP */
443
// OBSOLETE 
444
// OBSOLETE void
445
// OBSOLETE _initialize_m88k_nat (void)
446
// OBSOLETE {
447
// OBSOLETE #ifdef _ES_MP
448
// OBSOLETE   /* Enable 88110 support, as we don't support the 88100 under ES/MP.  */
449
// OBSOLETE 
450
// OBSOLETE   target_is_m88110 = 1;
451
// OBSOLETE #elif defined(_CX_UX)
452
// OBSOLETE   /* Determine whether we're running on an 88100 or an 88110.  */
453
// OBSOLETE   target_is_m88110 = (sinfo (SYSMACHINE, 0) == SYS5800);
454
// OBSOLETE #endif /* _CX_UX */
455
// OBSOLETE }
456
// OBSOLETE 
457
// OBSOLETE #ifdef _ES_MP
458
// OBSOLETE /* Given a pointer to a general register set in /proc format (gregset_t *),
459
// OBSOLETE    unpack the register contents and supply them as gdb's idea of the current
460
// OBSOLETE    register values. */
461
// OBSOLETE 
462
// OBSOLETE void
463
// OBSOLETE supply_gregset (gregset_t *gregsetp)
464
// OBSOLETE {
465
// OBSOLETE   register int regi;
466
// OBSOLETE   register greg_t *regp = (greg_t *) gregsetp;
467
// OBSOLETE 
468
// OBSOLETE   for (regi = 0; regi < R_R31; regi++)
469
// OBSOLETE     {
470
// OBSOLETE       supply_register (regi, (char *) (regp + regi));
471
// OBSOLETE     }
472
// OBSOLETE   supply_register (PSR_REGNUM, (char *) (regp + R_EPSR));
473
// OBSOLETE   supply_register (FPSR_REGNUM, (char *) (regp + R_FPSR));
474
// OBSOLETE   supply_register (FPCR_REGNUM, (char *) (regp + R_FPCR));
475
// OBSOLETE   supply_register (SXIP_REGNUM, (char *) (regp + R_EXIP));
476
// OBSOLETE   supply_register (SNIP_REGNUM, (char *) (regp + R_ENIP));
477
// OBSOLETE   supply_register (SFIP_REGNUM, (char *) (regp + R_EFIP));
478
// OBSOLETE }
479
// OBSOLETE 
480
// OBSOLETE /* Given a pointer to a floating point register set in /proc format
481
// OBSOLETE    (fpregset_t *), unpack the register contents and supply them as gdb's
482
// OBSOLETE    idea of the current floating point register values.  */
483
// OBSOLETE 
484
// OBSOLETE void
485
// OBSOLETE supply_fpregset (fpregset_t *fpregsetp)
486
// OBSOLETE {
487
// OBSOLETE   register int regi;
488
// OBSOLETE   char *from;
489
// OBSOLETE 
490
// OBSOLETE   for (regi = FP0_REGNUM; regi <= FPLAST_REGNUM; regi++)
491
// OBSOLETE     {
492
// OBSOLETE       from = (char *) &((*fpregsetp)[regi - FP0_REGNUM]);
493
// OBSOLETE       supply_register (regi, from);
494
// OBSOLETE     }
495
// OBSOLETE }
496
// OBSOLETE 
497
// OBSOLETE #endif /* _ES_MP */
498
// OBSOLETE 
499
// OBSOLETE #ifdef _CX_UX
500
// OBSOLETE 
501
// OBSOLETE #include <sys/regset.h>
502
// OBSOLETE 
503
// OBSOLETE unsigned int
504
// OBSOLETE m88k_harris_core_register_addr (int regno, int reg_ptr)
505
// OBSOLETE {
506
// OBSOLETE   unsigned int word_offset;
507
// OBSOLETE 
508
// OBSOLETE   switch (regno)
509
// OBSOLETE     {
510
// OBSOLETE     case PSR_REGNUM:
511
// OBSOLETE       word_offset = R_PSR;
512
// OBSOLETE       break;
513
// OBSOLETE     case FPSR_REGNUM:
514
// OBSOLETE       word_offset = R_FPSR;
515
// OBSOLETE       break;
516
// OBSOLETE     case FPCR_REGNUM:
517
// OBSOLETE       word_offset = R_FPCR;
518
// OBSOLETE       break;
519
// OBSOLETE     case SXIP_REGNUM:
520
// OBSOLETE       word_offset = R_XIP;
521
// OBSOLETE       break;
522
// OBSOLETE     case SNIP_REGNUM:
523
// OBSOLETE       word_offset = R_NIP;
524
// OBSOLETE       break;
525
// OBSOLETE     case SFIP_REGNUM:
526
// OBSOLETE       word_offset = R_FIP;
527
// OBSOLETE       break;
528
// OBSOLETE     default:
529
// OBSOLETE       if (regno <= FP_REGNUM)
530
// OBSOLETE     word_offset = regno;
531
// OBSOLETE       else
532
// OBSOLETE     word_offset = ((regno - X0_REGNUM) * 4) + R_X0;
533
// OBSOLETE     }
534
// OBSOLETE   return (word_offset * 4);
535
// OBSOLETE }
536
// OBSOLETE 
537
// OBSOLETE #endif /* _CX_UX */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.