2003-10-06 Andrew Cagney <cagney@redhat.com>
[deliverable/binutils-gdb.git] / gdb / config / pa / tm-hppao.h
CommitLineData
56056df7
AC
1// OBSOLETE /* Parameters for execution on an HP PA-RISC machine running OSF1, for GDB.
2// OBSOLETE Contributed by the Center for Software Science at the
3// OBSOLETE University of Utah (pa-gdb-bugs@cs.utah.edu). */
4// OBSOLETE
5// OBSOLETE #include "regcache.h"
6// OBSOLETE
7// OBSOLETE /* Define offsets to access CPROC stack when it does not have
8// OBSOLETE * a kernel thread.
9// OBSOLETE */
10// OBSOLETE #define MACHINE_CPROC_SP_OFFSET 20
11// OBSOLETE #define MACHINE_CPROC_PC_OFFSET 16
12// OBSOLETE #define MACHINE_CPROC_FP_OFFSET 12
13// OBSOLETE
14// OBSOLETE /*
15// OBSOLETE * Software defined PSW masks.
16// OBSOLETE */
17// OBSOLETE #define PSW_SS 0x10000000 /* Kernel managed single step */
18// OBSOLETE
19// OBSOLETE /* Thread flavors used in re-setting the T bit.
20// OBSOLETE * @@ this is also bad for cross debugging.
21// OBSOLETE */
22// OBSOLETE #define TRACE_FLAVOR HP800_THREAD_STATE
23// OBSOLETE #define TRACE_FLAVOR_SIZE HP800_THREAD_STATE_COUNT
24// OBSOLETE #define TRACE_SET(x,state) \
25// OBSOLETE ((struct hp800_thread_state *)state)->cr22 |= PSW_SS
26// OBSOLETE #define TRACE_CLEAR(x,state) \
27// OBSOLETE ((((struct hp800_thread_state *)state)->cr22 &= ~PSW_SS), 1)
28// OBSOLETE
29// OBSOLETE /* For OSF1 (Should be close if not identical to BSD, but I haven't
30// OBSOLETE tested it yet):
31// OBSOLETE
32// OBSOLETE The signal context structure pointer is always saved at the base
33// OBSOLETE of the frame + 0x4.
34// OBSOLETE
35// OBSOLETE We get the PC & SP directly from the sigcontext structure itself.
36// OBSOLETE For other registers we have to dive in a little deeper:
37// OBSOLETE
38// OBSOLETE The hardware save state pointer is at offset 0x10 within the
39// OBSOLETE signal context structure.
40// OBSOLETE
41// OBSOLETE Within the hardware save state, registers are found in the same order
42// OBSOLETE as the register numbers in GDB. */
43// OBSOLETE
44// OBSOLETE #define FRAME_SAVED_PC_IN_SIGTRAMP(FRAME, TMP) \
45// OBSOLETE { \
46// OBSOLETE *(TMP) = read_memory_integer ((FRAME)->frame + 0x4, 4); \
47// OBSOLETE *(TMP) = read_memory_integer (*(TMP) + 0x18, 4); \
48// OBSOLETE }
49// OBSOLETE
50// OBSOLETE #define FRAME_BASE_BEFORE_SIGTRAMP(FRAME, TMP) \
51// OBSOLETE { \
52// OBSOLETE *(TMP) = read_memory_integer ((FRAME)->frame + 0x4, 4); \
53// OBSOLETE *(TMP) = read_memory_integer (*(TMP) + 0x8, 4); \
54// OBSOLETE }
55// OBSOLETE
56// OBSOLETE #define FRAME_FIND_SAVED_REGS_IN_SIGTRAMP(FRAME, FSR) \
57// OBSOLETE { \
58// OBSOLETE int i; \
59// OBSOLETE CORE_ADDR TMP; \
60// OBSOLETE TMP = read_memory_integer ((FRAME)->frame + 0x4, 4); \
61// OBSOLETE TMP = read_memory_integer (TMP + 0x10, 4); \
62// OBSOLETE for (i = 0; i < NUM_REGS; i++) \
63// OBSOLETE { \
64// OBSOLETE if (i == SP_REGNUM) \
65// OBSOLETE (FSR)->regs[SP_REGNUM] = read_memory_integer (TMP + SP_REGNUM * 4, 4); \
66// OBSOLETE else \
67// OBSOLETE (FSR)->regs[i] = TMP + i * 4; \
68// OBSOLETE } \
69// OBSOLETE }
70// OBSOLETE
71// OBSOLETE /* OSF1 does not need the pc space queue restored. */
72// OBSOLETE #define NO_PC_SPACE_QUEUE_RESTORE
73// OBSOLETE
74// OBSOLETE /* The mach kernel uses the recovery counter to implement single
75// OBSOLETE stepping. While this greatly simplifies the kernel support
76// OBSOLETE necessary for single stepping, it unfortunately does the wrong
77// OBSOLETE thing in the presense of a nullified instruction (gives control
78// OBSOLETE back two insns after the nullifed insn). This is an artifact
79// OBSOLETE of the HP architecture (recovery counter doesn't tick for
80// OBSOLETE nullified insns).
81// OBSOLETE
82// OBSOLETE Do our best to avoid losing in such situations. */
83// OBSOLETE #define INSTRUCTION_NULLIFIED \
84// OBSOLETE (({ \
85// OBSOLETE int ipsw = (int)read_register(IPSW_REGNUM); \
86// OBSOLETE if (ipsw & PSW_N) \
87// OBSOLETE { \
88// OBSOLETE int pcoqt = (int)read_register(PCOQ_TAIL_REGNUM); \
89// OBSOLETE write_register(PCOQ_HEAD_REGNUM, pcoqt); \
90// OBSOLETE write_register(PCOQ_TAIL_REGNUM, pcoqt + 0x4); \
91// OBSOLETE write_register(IPSW_REGNUM, ipsw & ~(PSW_N | PSW_B | PSW_X)); \
92// OBSOLETE stop_pc = pcoqt; \
93// OBSOLETE } \
94// OBSOLETE }), 0)
95// OBSOLETE
96// OBSOLETE /* It's mostly just the common stuff. */
97// OBSOLETE
98// OBSOLETE #include "pa/tm-hppa.h"
This page took 0.069464 seconds and 4 git commands to generate.