]>
Commit | Line | Data |
---|---|---|
9846de1b JM |
1 | /* OBSOLETE /* Definitions to make GDB run on a Pyramidax under OSx 4.0 (4.2bsd). */ |
2 | /* OBSOLETE Copyright 1988, 1989, 1992 Free Software Foundation, Inc. */ | |
3 | /* OBSOLETE */ | |
4 | /* OBSOLETE This file is part of GDB. */ | |
5 | /* OBSOLETE */ | |
6 | /* OBSOLETE This program is free software; you can redistribute it and/or modify */ | |
7 | /* OBSOLETE it under the terms of the GNU General Public License as published by */ | |
8 | /* OBSOLETE the Free Software Foundation; either version 2 of the License, or */ | |
9 | /* OBSOLETE (at your option) any later version. */ | |
10 | /* OBSOLETE */ | |
11 | /* OBSOLETE This program is distributed in the hope that it will be useful, */ | |
12 | /* OBSOLETE but WITHOUT ANY WARRANTY; without even the implied warranty of */ | |
13 | /* OBSOLETE MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ | |
14 | /* OBSOLETE GNU General Public License for more details. */ | |
15 | /* OBSOLETE */ | |
16 | /* OBSOLETE You should have received a copy of the GNU General Public License */ | |
17 | /* OBSOLETE along with this program; if not, write to the Free Software */ | |
18 | /* OBSOLETE Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *x/ */ | |
19 | /* OBSOLETE */ | |
20 | /* OBSOLETE #define HOST_BYTE_ORDER BIG_ENDIAN */ | |
21 | /* OBSOLETE */ | |
22 | /* OBSOLETE /* Define PYRAMID_CONTROL_FRAME_DEBUGGING to get copious messages */ | |
23 | /* OBSOLETE about reading the control stack on standard output. This */ | |
24 | /* OBSOLETE makes gdb unusable as a debugger. *x/ */ | |
25 | /* OBSOLETE */ | |
26 | /* OBSOLETE /* #define PYRAMID_CONTROL_FRAME_DEBUGGING *x/ */ | |
27 | /* OBSOLETE */ | |
28 | /* OBSOLETE /* Define PYRAMID_FRAME_DEBUGGING for ? *x/ */ | |
29 | /* OBSOLETE */ | |
30 | /* OBSOLETE /* use Pyramid's slightly strange ptrace *x/ */ | |
31 | /* OBSOLETE #define PYRAMID_PTRACE */ | |
32 | /* OBSOLETE */ | |
33 | /* OBSOLETE /* Traditional Unix virtual address spaces have thre regions: text, */ | |
34 | /* OBSOLETE data and stack. The text, initialised data, and uninitialised data */ | |
35 | /* OBSOLETE are represented in separate segments of the a.out file. */ | |
36 | /* OBSOLETE When a process dumps core, the data and stack regions are written */ | |
37 | /* OBSOLETE to a core file. This gives a debugger enough information to */ | |
38 | /* OBSOLETE reconstruct (and debug) the virtual address space at the time of */ | |
39 | /* OBSOLETE the coredump. */ | |
40 | /* OBSOLETE Pyramids have an distinct fourth region of the virtual address */ | |
41 | /* OBSOLETE space, in which the contents of the windowed registers are stacked */ | |
42 | /* OBSOLETE in fixed-size frames. Pyramid refer to this region as the control */ | |
43 | /* OBSOLETE stack. Each call (or trap) automatically allocates a new register */ | |
44 | /* OBSOLETE frame; each return deallocates the current frame and restores the */ | |
45 | /* OBSOLETE windowed registers to their values before the call. */ | |
46 | /* OBSOLETE */ | |
47 | /* OBSOLETE When dumping core, the control stack is written to a core files as */ | |
48 | /* OBSOLETE a third segment. The core-handling functions need to know to deal */ | |
49 | /* OBSOLETE with it. *x/ */ | |
50 | /* OBSOLETE */ | |
51 | /* OBSOLETE /* Tell dep.c what the extra segment is. *x/ */ | |
52 | /* OBSOLETE #define PYRAMID_CORE */ | |
53 | /* OBSOLETE */ | |
54 | /* OBSOLETE #define NO_SIGINTERRUPT */ | |
55 | /* OBSOLETE */ | |
56 | /* OBSOLETE #define HAVE_WAIT_STRUCT */ | |
57 | /* OBSOLETE */ | |
58 | /* OBSOLETE /* This is the amount to subtract from u.u_ar0 */ | |
59 | /* OBSOLETE to get the offset in the core file of the register values. *x/ */ | |
60 | /* OBSOLETE */ | |
61 | /* OBSOLETE #define KERNEL_U_ADDR (0x80000000 - (UPAGES * NBPG)) */ | |
62 | /* OBSOLETE */ | |
63 | /* OBSOLETE /* Define offsets of registers in the core file (or maybe u area) *x/ */ | |
64 | /* OBSOLETE #define REGISTER_U_ADDR(addr, blockend, regno) \ */ | |
65 | /* OBSOLETE { struct user __u; \ */ | |
66 | /* OBSOLETE addr = blockend + (regno - 16 ) * 4; \ */ | |
67 | /* OBSOLETE if (regno == 67) { \ */ | |
68 | /* OBSOLETE printf("\\geting reg 67\\"); \ */ | |
69 | /* OBSOLETE addr = (int)(&__u.u_pcb.pcb_csp) - (int) &__u; \ */ | |
70 | /* OBSOLETE } else if (regno == KSP_REGNUM) { \ */ | |
71 | /* OBSOLETE printf("\\geting KSP (reg %d)\\", KSP_REGNUM); \ */ | |
72 | /* OBSOLETE addr = (int)(&__u.u_pcb.pcb_ksp) - (int) &__u; \ */ | |
73 | /* OBSOLETE } else if (regno == CSP_REGNUM) { \ */ | |
74 | /* OBSOLETE printf("\\geting CSP (reg %d\\",CSP_REGNUM); \ */ | |
75 | /* OBSOLETE addr = (int)(&__u.u_pcb.pcb_csp) - (int) &__u; \ */ | |
76 | /* OBSOLETE } else if (regno == 64) { \ */ | |
77 | /* OBSOLETE printf("\\geting reg 64\\"); \ */ | |
78 | /* OBSOLETE addr = (int)(&__u.u_pcb.pcb_csp) - (int) &__u; \ */ | |
79 | /* OBSOLETE } else if (regno == PS_REGNUM) \ */ | |
80 | /* OBSOLETE addr = blockend - 4; \ */ | |
81 | /* OBSOLETE else if (1 && ((16 > regno) && (regno > 11))) \ */ | |
82 | /* OBSOLETE addr = last_frame_offset + (4 *(regno+32)); \ */ | |
83 | /* OBSOLETE else if (0 && (12 > regno)) \ */ | |
84 | /* OBSOLETE addr = global_reg_offset + (4 *regno); \ */ | |
85 | /* OBSOLETE else if (16 > regno) \ */ | |
86 | /* OBSOLETE addr = global_reg_offset + (4 *regno); \ */ | |
87 | /* OBSOLETE else \ */ | |
88 | /* OBSOLETE addr = blockend + (regno - 16 ) * 4; \ */ | |
89 | /* OBSOLETE } */ | |
90 | /* OBSOLETE */ | |
91 | /* OBSOLETE /* Override copies of {fetch,store}_inferior_registers in infptrace.c. *x/ */ | |
92 | /* OBSOLETE #define FETCH_INFERIOR_REGISTERS */ |