aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRandolph Chung <tausq@debian.org>2004-11-12 18:38:34 +0000
committerRandolph Chung <tausq@debian.org>2004-11-12 18:38:34 +0000
commit5aac166f583ebdcd3d5c62e9d53927e1212c74b3 (patch)
tree7028806aeaab36c4571c4821c69deb249234d664
parentc46ec85da270994b50ccc5c8de0f1751cf3a0683 (diff)
downloadbinutils-5aac166f583ebdcd3d5c62e9d53927e1212c74b3.zip
binutils-5aac166f583ebdcd3d5c62e9d53927e1212c74b3.tar.gz
binutils-5aac166f583ebdcd3d5c62e9d53927e1212c74b3.tar.bz2
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.
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/config/pa/tm-hppa.h4
-rw-r--r--gdb/config/pa/tm-hppah.h4
-rw-r--r--gdb/hppa-hpux-tdep.c23
-rw-r--r--gdb/hppa-tdep.c24
5 files changed, 34 insertions, 28 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 40c15fc..665c879 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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".
diff --git a/gdb/config/pa/tm-hppa.h b/gdb/config/pa/tm-hppa.h
index efcf997..6a1cffd 100644
--- a/gdb/config/pa/tm-hppa.h
+++ b/gdb/config/pa/tm-hppa.h
@@ -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
diff --git a/gdb/config/pa/tm-hppah.h b/gdb/config/pa/tm-hppah.h
index d330d46..43f447c 100644
--- a/gdb/config/pa/tm-hppah.h
+++ b/gdb/config/pa/tm-hppah.h
@@ -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"
diff --git a/gdb/hppa-hpux-tdep.c b/gdb/hppa-hpux-tdep.c
index 9623abe..08c2ece 100644
--- a/gdb/hppa-hpux-tdep.c
+++ b/gdb/hppa-hpux-tdep.c
@@ -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;
diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c
index 8e86367..9431925 100644
--- a/gdb/hppa-tdep.c
+++ b/gdb/hppa-tdep.c
@@ -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)
{