diff -urN binutils-2.13/gas/config/tc-pdp11.c binutils-2.13-pdp11/gas/config/tc-pdp11.c
--- binutils-2.13/gas/config/tc-pdp11.c	Sat Nov  2 16:43:23 2002
+++ binutils-2.13-pdp11/gas/config/tc-pdp11.c	Sat Nov  2 16:44:13 2002
@@ -279,6 +279,12 @@
 	  return str - 1;
 	}
     }
+  else if (strncmp (str, "fp", 2) == 0 ||
+	   strncmp (str, "FP", 2) == 0)
+    {
+      operand->code = 5;
+      str += 2;
+    }
   else if (strncmp (str, "sp", 2) == 0 ||
 	   strncmp (str, "SP", 2) == 0)
     {
@@ -488,6 +494,14 @@
 
 	if (*str != '(')		/* label */
 	  {
+	    if (operand->reloc.exp.X_op == O_constant) {
+		    operand->code = 037;
+		    operand->additional = 1;
+		    operand->word = 0;
+		    operand->reloc.type = BFD_RELOC_16;
+		    operand->reloc.pc_rel = 0;
+		    break;
+	    }
 	    if (operand->reloc.exp.X_op != O_symbol)
 	      {
 		operand->error = "Label expected";
@@ -521,7 +535,8 @@
 	  {
 	  case O_symbol:
 	    operand->word = 0;
-	    operand->reloc.pc_rel = 1;
+	    operand->reloc.type = BFD_RELOC_16;
+	    operand->reloc.pc_rel = 0;
 	    break;
 	  case O_constant:
 	    if ((operand->code & 7) == 7)
