diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index a08291e3f3e..05c6de9cc0c 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,7 @@
 Tue Jul  6 10:23:39 1999  Jeffrey A Law  (law@cygnus.com)
 
+        * libhppa.h: Revert July 2, 1999 patch.
+
 	* elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): T mode selectors
 	need to generate DLTIND relocations, not DLTREL relocations.
 
diff --git a/bfd/libhppa.h b/bfd/libhppa.h
index 7fc52e46b79..05256a201db 100644
--- a/bfd/libhppa.h
+++ b/bfd/libhppa.h
@@ -177,6 +177,21 @@ enum hppa_reloc_expr_type_alt
   };
 
 
+/* Relocations for function calls must be accompanied by parameter
+   relocation bits.  These bits describe exactly where the caller has
+   placed the function's arguments and where it expects to find a return
+   value.
+
+   Both ELF and SOM encode this information within the addend field
+   of the call relocation.  (Note this could break very badly if one
+   was to make a call like bl foo + 0x12345678).
+
+   The high order 10 bits contain parameter relocation information,
+   the low order 22 bits contain the constant offset.  */
+   
+#define HPPA_R_ARG_RELOC(a)	(((a) >> 22) & 0x3FF)
+#define HPPA_R_CONSTANT(a)	((((int)(a)) << 10) >> 10)
+#define HPPA_R_ADDEND(r,c)	(((r) << 22) + ((c) & 0x3FFFFF))
 #define HPPA_WIDE	       (0) /* PSW W-bit, need to check! FIXME */
 
 /* These macros get bit fields using HP's numbering (MSB = 0),