--- 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;