diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 6382a3d11186e9085ed04cf7a7dbb4a52c1239f1..4770aa5154c6582c5a52acee959a869e48aad6bd 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2004-02-29  Andrew Cagney  <cagney@redhat.com>
+
+	* rs6000-tdep.c (rs6000_init_frame_pc_first): New function.
+	(rs6000_gdbarch_init): Set deprecated_init_frame_pc_first.
+	* config/rs6000/tm-rs6000.h (DEPRECATED_INIT_FRAME_PC_FIRST):
+	Delete macro.
+
 2004-02-29  Daniel Jacobowitz  <drow@mvista.com>
 
 	* inflow.c (terminal_inferior): Don't give up the terminal if we
diff --git a/gdb/config/rs6000/tm-rs6000.h b/gdb/config/rs6000/tm-rs6000.h
index 4b8a09dc3c2a534afecf7aca7bd9d894ef187028..4422fcbf3c8eaf25474c531f2cc84feba796e05a 100644
--- a/gdb/config/rs6000/tm-rs6000.h
+++ b/gdb/config/rs6000/tm-rs6000.h
@@ -74,12 +74,6 @@ extern void aix_process_linenos (void);
 #define FP0_REGNUM 32		/* Floating point register 0 */
 #define FPLAST_REGNUM 63	/* Last floating point register */
 
-/* Define other aspects of the stack frame.  */
-
-#define DEPRECATED_INIT_FRAME_PC_FIRST(fromleaf, prev) \
-  (fromleaf ? DEPRECATED_SAVED_PC_AFTER_CALL (prev->next) : \
-	      prev->next ? DEPRECATED_FRAME_SAVED_PC (prev->next) : read_pc ())
-
 /* Notice when a new child process is started. */
 
 #define TARGET_CREATE_INFERIOR_HOOK rs6000_create_inferior
diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
index 5eef8959115048aa8420fc7e4586b1a99e5b3444..05eb44211417b61130bd4d89cb33d6b0d294e00b 100644
--- a/gdb/rs6000-tdep.c
+++ b/gdb/rs6000-tdep.c
@@ -210,6 +210,13 @@ rs6000_frame_init_saved_regs (struct frame_info *fi)
   frame_get_saved_regs (fi, NULL);
 }
 
+static CORE_ADDR
+rs6000_init_frame_pc_first (int fromleaf, struct frame_info *prev)
+{
+  return (fromleaf ? DEPRECATED_SAVED_PC_AFTER_CALL (prev->next)
+	  : prev->next ? DEPRECATED_FRAME_SAVED_PC (prev->next) : read_pc ());
+}
+
 static CORE_ADDR
 rs6000_frame_args_address (struct frame_info *fi)
 {
@@ -2914,6 +2921,7 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
   set_gdbarch_deprecated_frame_init_saved_regs (gdbarch, rs6000_frame_init_saved_regs);
   set_gdbarch_deprecated_init_extra_frame_info (gdbarch, rs6000_init_extra_frame_info);
+  set_gdbarch_deprecated_init_frame_pc_first (gdbarch, rs6000_init_frame_pc_first);
 
   if (!sysv_abi)
     {