2004-11-12 Randolph Chung <tausq@debian.org>

* hppa-tdep.c (hppa_skip_permanent_breakpoint): Move definition ...
	* hppa-hpux-tdep.c (hppa_skip_permanent_breakpoint): ... to here.
	* config/pa/tm-hppa.h (SKIP_PERMANENT_BREAKPOINT): Move definition ...
	* config/pa/tm-hppah.h (SKIP_PERMANENT_BREAKPOINT): ... to here.
This commit is contained in:
Randolph Chung 2004-11-12 18:38:34 +00:00
parent c46ec85da2
commit 5aac166f58
5 changed files with 34 additions and 28 deletions

View File

@ -1,3 +1,10 @@
2004-11-12 Randolph Chung <tausq@debian.org>
* hppa-tdep.c (hppa_skip_permanent_breakpoint): Move definition ...
* hppa-hpux-tdep.c (hppa_skip_permanent_breakpoint): ... to here.
* config/pa/tm-hppa.h (SKIP_PERMANENT_BREAKPOINT): Move definition ...
* config/pa/tm-hppah.h (SKIP_PERMANENT_BREAKPOINT): ... to here.
2004-11-12 Mark Kettenis <kettenis@jive.nl>
* tui/tui-io.c: Don't include "terminal.h".

View File

@ -35,10 +35,6 @@ extern int hppa_instruction_nullified (void);
#define INSTRUCTION_NULLIFIED hppa_instruction_nullified ()
#endif
/* Here's how to step off a permanent breakpoint. */
#define SKIP_PERMANENT_BREAKPOINT (hppa_skip_permanent_breakpoint)
extern void hppa_skip_permanent_breakpoint (void);
/* On HP-UX, certain system routines (millicode) have names beginning
with $ or $$, e.g. $$dyncall, which handles inter-space procedure
calls on PA-RISC. Tell the expression parser to check for those

View File

@ -41,5 +41,9 @@ struct frame_info;
#define CHILD_ENABLE_EXCEPTION_CALLBACK
#define CHILD_GET_CURRENT_EXCEPTION_EVENT
/* Here's how to step off a permanent breakpoint. */
#define SKIP_PERMANENT_BREAKPOINT (hppa_skip_permanent_breakpoint)
extern void hppa_skip_permanent_breakpoint (void);
/* Mostly it's common to all HPPA's. */
#include "pa/tm-hppa.h"

View File

@ -505,6 +505,29 @@ hppa_hpux_skip_trampoline_code (CORE_ADDR pc)
}
}
void
hppa_skip_permanent_breakpoint (void)
{
/* To step over a breakpoint instruction on the PA takes some
fiddling with the instruction address queue.
When we stop at a breakpoint, the IA queue front (the instruction
we're executing now) points at the breakpoint instruction, and
the IA queue back (the next instruction to execute) points to
whatever instruction we would execute after the breakpoint, if it
were an ordinary instruction. This is the case even if the
breakpoint is in the delay slot of a branch instruction.
Clearly, to step past the breakpoint, we need to set the queue
front to the back. But what do we put in the back? What
instruction comes after that one? Because of the branch delay
slot, the next insn is always at the back + 4. */
write_register (HPPA_PCOQ_HEAD_REGNUM, read_register (HPPA_PCOQ_TAIL_REGNUM));
write_register (HPPA_PCSQ_HEAD_REGNUM, read_register (HPPA_PCSQ_TAIL_REGNUM));
write_register (HPPA_PCOQ_TAIL_REGNUM, read_register (HPPA_PCOQ_TAIL_REGNUM) + 4);
/* We can leave the tail's space the same, since there's no jump. */
}
/* Exception handling support for the HP-UX ANSI C++ compiler.
The compiler (aCC) provides a callback for exception events;

View File

@ -2264,30 +2264,6 @@ unwind_command (char *exp, int from_tty)
pin (Total_frame_size);
}
void
hppa_skip_permanent_breakpoint (void)
{
/* To step over a breakpoint instruction on the PA takes some
fiddling with the instruction address queue.
When we stop at a breakpoint, the IA queue front (the instruction
we're executing now) points at the breakpoint instruction, and
the IA queue back (the next instruction to execute) points to
whatever instruction we would execute after the breakpoint, if it
were an ordinary instruction. This is the case even if the
breakpoint is in the delay slot of a branch instruction.
Clearly, to step past the breakpoint, we need to set the queue
front to the back. But what do we put in the back? What
instruction comes after that one? Because of the branch delay
slot, the next insn is always at the back + 4. */
write_register (HPPA_PCOQ_HEAD_REGNUM, read_register (HPPA_PCOQ_TAIL_REGNUM));
write_register (HPPA_PCSQ_HEAD_REGNUM, read_register (HPPA_PCSQ_TAIL_REGNUM));
write_register (HPPA_PCOQ_TAIL_REGNUM, read_register (HPPA_PCOQ_TAIL_REGNUM) + 4);
/* We can leave the tail's space the same, since there's no jump. */
}
int
hppa_pc_requires_run_before_use (CORE_ADDR pc)
{