--- as/ppc.c.orig	2013-01-04 10:39:49.000000000 +0100
+++ as/ppc.c	2013-01-04 10:40:02.000000000 +0100
@@ -1019,6 +1019,8 @@ char *op)
 
 	/* if this instruction requires labels mark it for later */
 	switch(insn.reloc){
+	case NO_RELOC:
+	    break;
 	case PPC_RELOC_HI16:
 	case PPC_RELOC_LO16:
 	case PPC_RELOC_HA16:
@@ -1033,6 +1035,7 @@ char *op)
 		    insn.reloc);
 	    break;
 	case PPC_RELOC_BR14:
+	case PPC_RELOC_BR14_predicted:
 	    fix_new(frag_now,
 		    thisfrag - frag_now->fr_literal,
 		    4,
--- as/m88k.c.orig	1969-12-31 16:00:00.000000000 -0800
+++ as/m88k.c	2013-07-05 10:32:19.000000000 -0700
@@ -600,6 +600,10 @@ char *op)
 
 	/* if this instruction requires labels mark it for later */
 	switch (insn.reloc) {
+
+		case NO_RELOC:
+				break;
+
 		case M88K_RELOC_LO16:
 		case M88K_RELOC_HI16:
 				fix_new(
--- as/sparc.c.orig	1969-12-31 16:00:00.000000000 -0800
+++ as/sparc.c	2013-07-05 10:32:14.000000000 -0700
@@ -851,6 +851,20 @@ sparc_ip (str)
  		  /* plug absolutes directly into opcode */
 
 		  switch(the_insn.reloc) {
+		  case SPARC_RELOC_13:
+		    if (the_insn.exp.X_seg == SEG_BIG)
+		      opcode |= (*(int *) generic_bignum) & 0x1fff;
+		    else
+		      opcode |= the_insn.exp.X_add_number & 0x1fff;
+		    the_insn.reloc = SPARC_RELOC_NONE;
+		    break;
+		  case SPARC_RELOC_22:
+		    if (the_insn.exp.X_seg == SEG_BIG)
+		      opcode |= (*(int *) generic_bignum) & 0x3fffff;
+		    else
+		      opcode |= the_insn.exp.X_add_number & 0x3fffff;
+		    the_insn.reloc = SPARC_RELOC_NONE;
+		    break;
 		  case SPARC_RELOC_HI22:
 		    /* extract upper 22 bits from constant */
 		    opcode |= (the_insn.exp.X_add_number >> 10) & 0x3fffff;
