diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 15e1089a500a7b9fefc0e464ff46c9ac7d836e1c..6d6e1c857e8c6743c6f1c58f13efe93f0821d1de 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,8 @@
 2004-02-22  Andrew Cagney  <cagney@redhat.com>
 
+	* hppa-tdep.c (hppa_gdbarch_init): Re-order separating
+	struct-return and inferior function call methods.
+
 	* hppa-tdep.c: Include "trad-frame.h", "frame-unwind.h", and
 	"frame-base.h".
 	(struct hppa_frame_cache): Define.
diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c
index 340bc475aff79a7f547bf9e3a5b1f55150975ff5..21f86d5e006ecb52565ffd8304f09a03c956515d 100644
--- a/gdb/hppa-tdep.c
+++ b/gdb/hppa-tdep.c
@@ -5491,23 +5491,38 @@ hppa_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 	  set_gdbarch_deprecated_call_dummy_length (gdbarch, hppa32_call_dummy_length);
 	  set_gdbarch_deprecated_stack_align (gdbarch, hppa32_stack_align);
 	  set_gdbarch_deprecated_reg_struct_has_addr (gdbarch, hppa_reg_struct_has_addr);
-	  set_gdbarch_deprecated_extract_return_value (gdbarch, hppa32_extract_return_value);
-	  set_gdbarch_use_struct_convention (gdbarch, hppa32_use_struct_convention);
-	  set_gdbarch_deprecated_store_return_value (gdbarch, hppa32_store_return_value);
 	  break;
 	case 8:
 	  set_gdbarch_deprecated_call_dummy_breakpoint_offset (gdbarch, hppa64_call_dummy_breakpoint_offset);
 	  set_gdbarch_deprecated_call_dummy_length (gdbarch, hppa64_call_dummy_length);
 	  set_gdbarch_deprecated_stack_align (gdbarch, hppa64_stack_align);
+	  break;
+	}
+      set_gdbarch_deprecated_push_dummy_frame (gdbarch, hppa_push_dummy_frame);
+      /* set_gdbarch_deprecated_fix_call_dummy (gdbarch, hppa_fix_call_dummy); */
+      set_gdbarch_deprecated_push_arguments (gdbarch, hppa_push_arguments);
+    }
+      
+  /* Struct return methods.  */
+  if (0)
+    {
+    }
+  else
+    {
+      switch (tdep->bytes_per_address)
+	{
+	case 4:
+	  set_gdbarch_deprecated_extract_return_value (gdbarch, hppa32_extract_return_value);
+	  set_gdbarch_use_struct_convention (gdbarch, hppa32_use_struct_convention);
+	  set_gdbarch_deprecated_store_return_value (gdbarch, hppa32_store_return_value);
+	  break;
+	case 8:
 	  set_gdbarch_deprecated_extract_return_value (gdbarch, hppa64_extract_return_value);
 	  set_gdbarch_use_struct_convention (gdbarch, hppa64_use_struct_convention);
 	  set_gdbarch_deprecated_store_return_value (gdbarch, hppa64_store_return_value);
 	  break;
 	}
       set_gdbarch_deprecated_store_struct_return (gdbarch, hppa_store_struct_return);
-      set_gdbarch_deprecated_push_dummy_frame (gdbarch, hppa_push_dummy_frame);
-      /* set_gdbarch_deprecated_fix_call_dummy (gdbarch, hppa_fix_call_dummy); */
-      set_gdbarch_deprecated_push_arguments (gdbarch, hppa_push_arguments);
     }
       
   /* Frame unwind methods.  */