*** ./Makefile~	Fri Sep 20 16:29:45 1991
--- ./Makefile	Tue Nov 19 09:56:28 1991
***************
*** 22,27 ****
  # See below for how to change them for certain systems.
  
! CFLAGS = -g $(XCFLAGS)
! CC = cc
  BISON = bison
  BISONFLAGS = -v
--- 22,41 ----
  # See below for how to change them for certain systems.
  
! # For GCC56K or GCC5616:
! # Flags for the compiler on your system:
! XCFLAGS=-Di386 -O
! 
! # For GCC56K or GCC5616 -- prefix for the executables:
! #   Uncomment the line for the appropriate target build
! #PREFIX=56k
! PREFIX=5616
! 
! # For GCC56K or GCC5616 -- debug dumps in choice places:
! #  Uncomment the following line if you're getting crashes.  It will
! #  help to pinpoint the problem.
! # DEBUGFLAG=-DDEBUG56
! 
! CFLAGS = -g $(XCFLAGS) $(DEBUGFLAG)
! CC = gcc
  BISON = bison
  BISONFLAGS = -v
***************
*** 44,48 ****
  # NOTE: -O does not work on some Unix systems!
  # On them, you must take it out.
! CCLIBFLAGS=-O
  
  # This should be the version of ar to use with output from $(OLDCC).
--- 58,62 ----
  # NOTE: -O does not work on some Unix systems!
  # On them, you must take it out.
! CCLIBFLAGS=-g
  
  # This should be the version of ar to use with output from $(OLDCC).
***************
*** 239,243 ****
  # is include the system varargs.h.
  
! all: config.status gnulib gcc cc1 cpp float.h gnulib2 # cc1plus
  
  # Use this instead of `all' if you need to convert the libraries
--- 253,258 ----
  # is include the system varargs.h.
  
! #all: config.status gnulib gcc cc1 cpp float.h gnulib2 # cc1plus
! all: config.status cc1 gcc cpp # gnulib float.h gnulib2 cc1plus
  
  # Use this instead of `all' if you need to convert the libraries
***************
*** 366,370 ****
  	$(CC) $(CFLAGS) $(INCLUDES) \
    -DSTANDARD_STARTFILE_PREFIX=\"$(libdir)/\" \
!   -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc-\" -c \
    `echo $(srcdir)/gcc.c | sed 's,^\./,,'`
  
--- 381,385 ----
  	$(CC) $(CFLAGS) $(INCLUDES) \
    -DSTANDARD_STARTFILE_PREFIX=\"$(libdir)/\" \
!   -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc$(PREFIX)-\" -c \
    `echo $(srcdir)/gcc.c | sed 's,^\./,,'`
  
***************
*** 571,576 ****
  cccp.o: cccp.c $(CONFIG_H)
  	$(CC) $(CFLAGS) $(INCLUDES) \
!           -DGCC_INCLUDE_DIR=\"$(libdir)/gcc-include\" \
!           -DGPLUSPLUS_INCLUDE_DIR=\"$(libdir)/g++-include\" \
  	  -c `echo $(srcdir)/cccp.c | sed 's,^\./,,'`
  
--- 586,591 ----
  cccp.o: cccp.c $(CONFIG_H)
  	$(CC) $(CFLAGS) $(INCLUDES) \
!           -DGCC_INCLUDE_DIR=\"$(libdir)/gcc$(PREFIX)-include\" \
!           -DGPLUSPLUS_INCLUDE_DIR=\"$(libdir)/g++$(PREFIX)-include\" \
  	  -c `echo $(srcdir)/cccp.c | sed 's,^\./,,'`
  
***************
*** 612,635 ****
  
  # Copy the files into directories where they will be run.
! install: all $(USER_H) float.h gvarargs.h gstdarg.h gcc.1
  	-mkdir $(libdir)
! 	-if [ -f cc1 ] ; then $(INSTALL) cc1 $(libdir)/gcc-cc1 ; else true; fi
! 	-if [ -f cc1plus ] ; then $(INSTALL) cc1plus $(libdir)/gcc-cc1plus ; else true; fi
! 	$(INSTALL) gnulib $(libdir)/gcc-gnulib
! 	-if [ -f /usr/bin/ranlib -o -f /bin/ranlib ] ; then (cd $(libdir); $(RANLIB) gcc-gnulib) ; else true; fi
! 	$(INSTALL) cpp $(libdir)/gcc-cpp
! 	$(INSTALL) gcc $(bindir)
! 	-mkdir $(libdir)/gcc-include
! 	-chmod ugo+rx $(libdir)/gcc-include
! 	for file in $(USER_H); do \
  	     for eachfile in  $(srcdir)/$${file} ; do \
! 		$(INSTALL) $(srcdir)/`basename $${eachfile}` $(libdir)/gcc-include/`basename $${eachfile}`; \
  	     done ; done
! 	$(INSTALL) float.h $(libdir)/gcc-include/float.h
! 	$(INSTALL) $(srcdir)/gvarargs.h $(libdir)/gcc-include/varargs.h
! 	$(INSTALL) $(srcdir)/gstdarg.h $(libdir)/gcc-include/stdarg.h
! 	-chmod a-x $(libdir)/gcc-include/*.h
! 	$(INSTALL) $(srcdir)/gcc.1 $(mandir)/gcc.$(manext)
! 	-chmod a-x $(mandir)/gcc.$(manext)
  
  # do make -f ../gcc/Makefile maketest DIR=../gcc
--- 627,650 ----
  
  # Copy the files into directories where they will be run.
! install: all # $(USER_H) float.h gvarargs.h gstdarg.h gcc.1
  	-mkdir $(libdir)
! 	-if [ -f cc1 ] ; then $(INSTALL) cc1 $(libdir)/gcc$(PREFIX)-cc1 ; else true; fi
! 	-if [ -f cc1plus ] ; then $(INSTALL) cc1plus $(libdir)/gcc$(PREFIX)-cc1plus ; else true; fi
! #	$(INSTALL) gnulib $(libdir)/gcc$(PREFIX)-gnulib
! #	-if [ -f /usr/bin/ranlib -o -f /bin/ranlib ] ; then (cd $(libdir); $(RANLIB) gcc$(PREFIX)-gnulib) ; else true; fi
! 	$(INSTALL) cpp $(libdir)/gcc$(PREFIX)-cpp
! 	$(INSTALL) gcc $(bindir)/gcc$(PREFIX)
! #	-mkdir $(libdir)/gcc$(PREFIX)-include
! #	-chmod ugo+rx $(libdir)/gcc$(PREFIX)-include
! #	for file in $(USER_H); do \
  	     for eachfile in  $(srcdir)/$${file} ; do \
! 		$(INSTALL) $(srcdir)/`basename $${eachfile}` $(libdir)/gcc$(PREFIX)-include/`basename $${eachfile}`; \
  	     done ; done
! #	$(INSTALL) float.h $(libdir)/gcc$(PREFIX)-include/float.h
! #	$(INSTALL) $(srcdir)/gvarargs.h $(libdir)/gcc$(PREFIX)-include/varargs.h
! #	$(INSTALL) $(srcdir)/gstdarg.h $(libdir)/gcc$(PREFIX)-include/stdarg.h
! #	-chmod a-x $(libdir)/gcc$(PREFIX)-include/*.h
! #	$(INSTALL) $(srcdir)/gcc.1 $(mandir)/gcc$(PREFIX).$(manext)
! #	-chmod a-x $(mandir)/gcc$(PREFIX).$(manext)
  
  # do make -f ../gcc/Makefile maketest DIR=../gcc
*** ./c-decl.c~	Fri Sep 20 16:25:06 1991
--- ./c-decl.c	Fri Sep 20 12:22:17 1991
***************
*** 1548,1554 ****
--- 1548,1557 ----
    /* `unsigned long' or `unsigned int' is the standard type for sizeof.
       Traditionally, use a signed type.  */
+ 	/* STERIAN : Modification (questionable) Sept. '91 */
+ #if !defined(DSP56K) && !defined(DSP5616)
    if (INT_TYPE_SIZE != LONG_TYPE_SIZE)
      sizetype = flag_traditional ? long_integer_type_node : long_unsigned_type_node;
    else
+ #endif
      sizetype = flag_traditional ? integer_type_node : unsigned_type_node;
  
*** ./caller-save.c~	Fri Sep 20 16:25:25 1991
--- ./caller-save.c	Fri Sep 20 11:16:41 1991
***************
*** 483,490 ****
  	}
  
        /* If any call-clobbered reg is dead, put it in TEMPREG.
  	 It can be used as a temporary at no extra cost.  */
        if (tempreg == 0 && call_used_regs[regno] && ! fixed_regs[regno]
! 	  && ! offset[regno] >= 0
  	  && HARD_REGNO_MODE_OK (regno, Pmode))
  	{
--- 483,496 ----
  	}
  
+ 	/* STERIAN :: PATCH Sept. '91 */
+ 	/* The second line of the 'if' condition used to read */
+ 	/*      && ! offset[regno] >= 0						  */
+ 	/* Unfortunately, '!' has higher precedence than '>=' */
+ 	/* hence the intended meaning (I think) of this		  */
+ 	/* condition is not realized. */
        /* If any call-clobbered reg is dead, put it in TEMPREG.
  	 It can be used as a temporary at no extra cost.  */
        if (tempreg == 0 && call_used_regs[regno] && ! fixed_regs[regno]
! 	  && ! (offset[regno] >= 0)
  	  && HARD_REGNO_MODE_OK (regno, Pmode))
  	{
*** ./conditions.h~	Tue Sep 24 15:45:02 1991
--- ./conditions.h	Tue Sep 24 16:24:45 1991
***************
*** 59,62 ****
--- 59,67 ----
  extern CC_STATUS cc_status;
  
+ /* STERIAN : Modification Sept. '91 */
+ #if defined(DSP56K) || defined(DSP5616)
+ #define CC_OPERANDS_THE_SAME 0x40
+ #endif
+ 
  /* These are the machine-independent flags:  */
  
*** ./config.gcc~	Fri Sep 20 16:29:55 1991
--- ./config.gcc	Fri Sep 20 11:32:22 1991
***************
*** 1,2 ****
--- 1,3 ----
+ 
  #!/bin/sh
  # Configuration script for GNU CC
***************
*** 23,27 ****
  # preparation for compiling gcc.
  #
! # Usage: config.gcc [vint] [-srcdir=DIR] machine
  #
  # If config.gcc succeeds, it leaves its status in config.status.
--- 24,28 ----
  # preparation for compiling gcc.
  #
! # Usage: config.gcc [vint] [-srcdir=DIR] [-host=MACHINE] machine
  #
  # If config.gcc succeeds, it leaves its status in config.status.
***************
*** 50,53 ****
--- 51,57 ----
  	vint=on
  	;;
+    -host=*)
+ 	configuration_file=xm-`echo $arg | sed s/-host=//`.h
+     ;;
     *)
  	machine=$arg
***************
*** 332,335 ****
--- 336,347 ----
  #		machine=370
  #		;;
+ 	dsp56k)
+ 		cpu_type=dsp56k
+ 		machine=dsp56k
+ 		;;
+ 	dsp5616)
+ 		cpu_type=dsp5616
+ 		machine=dsp5616
+ 		;;
  	esac
  
***************
*** 408,414 ****
  	exit 0
  else
! 	echo "Usage: $progname machine"
! 	echo -n "Where \`machine' is something like "
! 	echo "\`vax', \`sun3', \`encore', etc."
  	if [ -r config.status ]
  	then
--- 420,426 ----
  	exit 0
  else
! 	echo "Usage: $progname -host=hostname machine"
! 	echo -n "Where \`machine' is dsp56k or dsp5616 "
! 	echo "and 'hostname' is the name of the host machine"
  	if [ -r config.status ]
  	then
*** ./explow.c~	Fri Sep 20 16:25:32 1991
--- ./explow.c	Fri Sep 20 16:28:03 1991
***************
*** 425,430 ****
      x = force_operand (x, temp);
  
!   if (GET_MODE (x) != mode && GET_MODE (x) != VOIDmode)
!     abort ();
    if (x != temp)
      emit_move_insn (temp, x);
--- 425,443 ----
      x = force_operand (x, temp);
  
!   if (GET_MODE (x) != mode && GET_MODE (x) != VOIDmode) {
! 	/* STERIAN : MODIFICATION Sept. '91 */
! 	/* Since Pmode != SImode, the 'if' above us doesn't let us do */
! 	/* some address arithmetic.  I hope this fix is ok...*/
! 	/* The fix is for RTL of the form:		*/
! 	/* (mem:SI (symbol_ref:HI "some_label"))  and other variants */
! 	/* in GCC56K.  In GCC5616, Pmode==SImode */
! #if defined(DSP56K)
! 	if (GET_CODE(x) == MEM && GET_MODE(x) == SImode && mode == Pmode)
! 		;	/* OK */
! 	else
! #endif
!     	abort ();
!   }
! 
    if (x != temp)
      emit_move_insn (temp, x);
*** ./expr.c~	Fri Sep 20 16:25:40 1991
--- ./expr.c	Tue Nov 19 09:53:18 1991
***************
*** 18,22 ****
  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  
! 
  #include "config.h"
  #include "rtl.h"
--- 18,24 ----
  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  
! #ifdef DEBUG56
! #include <stdio.h>	/* STERIAN : Debug modification Sept. '91 */
! #endif
  #include "config.h"
  #include "rtl.h"
***************
*** 1110,1115 ****
      }
  #endif
!   else
!     abort ();
  }
  
--- 1112,1122 ----
      }
  #endif
!   else {		/* STERIAN : Debug modification Sept. '91 */
! #ifdef DEBUG56
! 	fprintf(stderr,"%s:%u Can't emit move insn\n",__FILE__,__LINE__);
! 	debug_rtx(x);
! 	debug_rtx(y);
! #endif
!     abort (); }
  }
  
*** ./final.c~	Fri Sep 20 16:25:45 1991
--- ./final.c	Thu Sep 26 20:58:18 1991
***************
*** 590,593 ****
--- 590,600 ----
        if (prescan > 0)
  	break;
+ /* STERIAN : Modification Sept. '91 */
+ #if defined(DSP56K) || defined(DSP5616)
+ 		switch(NOTE_LINE_NUMBER(insn)) {
+ 		 case NOTE_INSN_SETJMP: case NOTE_INSN_FUNCTION_BEG:
+ 			allRegsInvalid();
+ 		}
+ #endif
        if (write_symbols == NO_DEBUG)
  	break;
***************
*** 670,673 ****
--- 677,685 ----
        ASM_OUTPUT_ALIGN_CODE (file);
  #endif
+ 
+ /* STERIAN :: Modification Sept. '91 */
+ #if defined(DSP56K) || defined(DSP5616)
+ 		if (prescan <= 0) allRegsInvalid();
+ #endif
        break;
  
***************
*** 682,685 ****
--- 694,701 ----
  	  app_on = 0;
  	}
+ /* STERIAN : Modification Sept. '91 */
+ #if defined(DSP56K) || defined(DSP5616)
+ 		allRegsInvalid();
+ #endif
  #ifdef ASM_OUTPUT_CASE_LABEL
        if (NEXT_INSN (insn) != 0
***************
*** 710,713 ****
--- 726,758 ----
  	char *template;
  
+ #if defined(DSP56K) || defined(DSP5616)
+ 	if ((prescan <= 0) && (GET_CODE(insn) == CALL_INSN)) {
+ 		rtx prevInsn, bodyPrevInsn, callOp;
+ 
+ 		allRegsInvalid();
+ 		
+ 		/* Check for a jmp or jsr to R? in which R? was set in the */
+ 		/* immediately preceding instruction.  This calls for a NOP */
+ 		/* since the Motorola assembler won't put one in for us. */
+ 		if (GET_CODE(body) == CALL) {
+ 			callOp = XEXP(body, 0);			/* (call (mem (X)) (Y)) */
+ 			callOp = XEXP(callOp,0);
+ 		} else {
+ 			callOp = XEXP(XEXP(body,1),0);  /* (set (X) (call (mem (Y)) (Z)) */
+ 			callOp = XEXP(callOp,0);
+ 		}
+ 		if (GET_CODE(callOp) == REG && REGNO(callOp) >= 10) {
+ 			prevInsn = PREV_INSN(insn);
+ 			if (prevInsn && GET_CODE(prevInsn)==INSN) {
+ 				bodyPrevInsn = PATTERN(prevInsn);
+ 				if (GET_CODE(bodyPrevInsn) == SET &&
+ 					GET_CODE(SET_DEST(bodyPrevInsn)) == REG &&
+ 					REGNO(SET_DEST(bodyPrevInsn)) == REGNO(callOp)) {
+ 					fprintf(asm_out_file,"\tnop ;p\n");
+ 				}
+ 			}
+ 		}
+ 	}
+ #endif
  	/* An INSN, JUMP_INSN or CALL_INSN.
  	   First check for special kinds that recog doesn't recognize.  */
***************
*** 752,755 ****
--- 797,804 ----
  	      }
  	    fprintf (asm_out_file, "\t%s\n", XSTR (body, 0));
+ /* STERIAN : Modification Sept. '91 */
+ #if defined(DSP56K) || defined(DSP5616)
+ 		allRegsInvalid();
+ #endif
  	    break;
  	  }
***************
*** 788,791 ****
--- 837,844 ----
  	    if (noperands > 0)
  	      free (ops);
+ /* STERIAN : Modification Sept. '91 */
+ #if defined(DSP56K) || defined(DSP5616)
+ 		allRegsInvalid();
+ #endif
  	    break;
  	  }
***************
*** 1017,1022 ****
  
  #ifdef REGISTER_CONSTRAINTS
! 	if (! constrain_operands (insn_code_number))
  	  abort ();
  #endif
  
--- 1070,1083 ----
  
  #ifdef REGISTER_CONSTRAINTS
! 	if (! constrain_operands (insn_code_number)) {
! 		/* STERIAN : Debug modification Sept. '91 */
! #ifdef DEBUG56
! 	  debug_rtx(recog_operand[0]);
! 	  debug_rtx(recog_operand[1]);
! 	  fprintf(stderr,"%s:%u Cannot constrain INSN %u codenumber %d\n",
! 		__FILE__, __LINE__, INSN_UID(insn), insn_code_number);
! #endif
  	  abort ();
+ 	}
  #endif
  
***************
*** 1245,1248 ****
--- 1306,1325 ----
  {
    int value = 0;
+ 
+ /* STERIAN : Modification Sept. '91 */
+ #if defined(DSP56K) || defined(DSP5616)
+   if (cc_status.flags & CC_OPERANDS_THE_SAME) {
+ 	switch(GET_CODE(cond)) {
+ 	 case EQ: case LE: case GE: case LEU: case GEU:
+ 		return 1;	/* Always true */
+ 
+ 	 case NE: case LT: case GT: case LTU: case GTU:
+ 		return -1;  /* Always false */
+ 
+ 	 default:
+ 		error("Internal error -- alter_cond()"); abort();
+ 	}
+   }
+ #endif
  
    if (cc_status.flags & CC_REVERSED)
*** ./reload.c~	Fri Sep 20 16:25:52 1991
--- ./reload.c	Fri Sep 20 13:34:56 1991
***************
*** 82,85 ****
--- 82,88 ----
  #define REG_OK_STRICT
  
+ #ifdef DEBUG56
+ #include <stdio.h>	/* STERIAN : Debug modification Sept. '91 */
+ #endif
  #include "config.h"
  #include "rtl.h"
***************
*** 1800,1803 ****
--- 1803,1811 ----
        /* No alternative works with reloads??  */
        if (insn_code_number >= 0)
+ 		/* STERIAN : Debug modification Sept. '91 */
+ #if DEBUG56
+ 		fprintf(stderr,"%s:%u Operands don't meet constraints for INSN %u\n",
+ 			__FILE__,__LINE__,INSN_UID(insn)),
+ #endif
  	abort ();
        error_for_asm (insn, "inconsistent operand constraints in an `asm'");
*** ./reload1.c~	Fri Sep 20 16:26:03 1991
--- ./reload1.c	Tue Nov 19 09:54:38 1991
***************
*** 918,924 ****
--- 918,930 ----
  		     of the new reload reg we have found.  */
  
+ 			/* STERIAN : Debug modification Sept. '91 */ 
+ 			{
+ #if DEBUG56
+ 	      if (dumpfile) fprintf(dumpfile,"%u\n",__LINE__), fflush(dumpfile);
+ #endif
  		  something_changed
  		    |= new_spill_reg (i, class, max_needs, 0,
  				      global, dumpfile);
+ 			}
  		}
  	      else
***************
*** 952,955 ****
--- 958,966 ----
  				    if (potential_reload_regs[idx] == j + k)
  				      break;
+ 				/* STERIAN : debug modification Sept. '91 */ 
+ #if DEBUG56
+ 				  if (dumpfile) fprintf(dumpfile,"%u\n",__LINE__),
+ 								fflush(dumpfile);
+ #endif
  				  something_changed
  				    |= new_spill_reg (idx, class, max_needs, 0,
***************
*** 996,1002 ****
--- 1007,1019 ----
  		 of the new reload reg we have found.  */
  
+ 		/* STERIAN : Debug modification Sept. '91 */ 
+ 			{
+ #if DEBUG56
+ 		  if (dumpfile) fprintf(dumpfile,"%u\n",__LINE__),fflush(dumpfile);
+ #endif
  	      something_changed
  		|= new_spill_reg (i, class, max_needs, max_nongroups,
  				  global, dumpfile);
+ 			}
  	    }
  	}
***************
*** 1156,1159 ****
--- 1173,1178 ----
  
    if (i >= FIRST_PSEUDO_REGISTER)
+ 	fprintf(stderr,"%s:%u Failed to find a reg for class %u\n",
+ 		__FILE__, __LINE__, class),
      abort ();	/* Caller failed to find any register.  */
  
***************
*** 2610,2615 ****
--- 2629,2644 ----
        /* The reg is not OK.  */
        {
+ 	/* STERIAN : Debug modification Sept. '91 */
+ #if DEBUG56
+ 	fprintf(stderr,"%s:%u Reload reg %u can't hold mode %u\n",
+ 		__FILE__,__LINE__,REGNO(reload_reg_rtx[r]),reload_mode);
+ #endif
  	if (asm_noperands (PATTERN (insn)) < 0)
  	  /* It's the compiler's fault.  */
+ 	  /* STERIAN : Debug modification Sept. '91 */
+ #if DEBUG56
+ 	  fprintf(stderr,"%s:%u Reload reg can't hold reload mode -- INSN %u\n",
+ 		__FILE__,__LINE__,INSN_UID(insn)),
+ #endif
  	  abort ();
  	/* It's the user's fault; the operand's mode and constraint
*** ./varasm.c~	Fri Sep 20 16:26:09 1991
--- ./varasm.c	Wed Nov 13 13:20:43 1991
***************
*** 514,521 ****
        if (flag_shared_data)
  	data_section ();
!       if (TREE_PUBLIC (decl))
! 	ASM_OUTPUT_COMMON (asm_out_file, name, size, rounded);
        else
! 	ASM_OUTPUT_LOCAL (asm_out_file, name, size, rounded);
        return;
      }
--- 514,532 ----
        if (flag_shared_data)
  	data_section ();
!       if (TREE_PUBLIC (decl)) {
! 		/* STERIAN : Modification Sept. '91 */
! #if defined(DSP56K) || defined(DSP5616)
! 		SELECT_SECTION(decl);
! #endif
! 		ASM_OUTPUT_COMMON (asm_out_file, name, size, rounded);
! 	  }
        else
! 	  {
! 		/* STERIAN : Modification Sept. '91 */
! #if defined(DSP56K) || defined(DSP5616)
! 		SELECT_SECTION(decl);
! #endif
! 		ASM_OUTPUT_LOCAL (asm_out_file, name, size, rounded);
! 	  }
        return;
      }
***************
*** 1747,1750 ****
--- 1758,1773 ----
        x = expand_expr (exp, 0, VOIDmode, EXPAND_SUM);
  
+ /* STERIAN : Modification Sept. '91 */
+ #if defined(DSP56K) || defined(DSP5616)
+ 	  if (size == 1) {
+ 		ASM_OUTPUT_INT (asm_out_file, x);
+ 		size -= 1;
+ 	  } else if (size == 2) {
+ 		ASM_OUTPUT_DOUBLE_INT (asm_out_file, x);
+ 		size -= 2;
+ 	  } else {
+ 		abort();
+ 	  }
+ #else
        if (size == 1)
  	{
***************
*** 1771,1774 ****
--- 1794,1798 ----
        else
  	abort ();
+ #endif /* DSP56K or DSP5616 */
  
        break;
***************
*** 1795,1798 ****
--- 1819,1831 ----
  	  set_float_handler (output_constant_handler);
  
+ /* STERIAN : Modification Sept. '91 */
+ #if defined(DSP56K) || defined(DSP5616)
+ 		if (size == 1) {
+ 			ASM_OUTPUT_FLOAT(asm_out_file, d);
+ 		} else {
+ 			ASM_OUTPUT_DOUBLE(asm_out_file, d);
+ 		}
+ 		size = 0;
+ #else
  	  if (size < 4)
  	    break;
***************
*** 1807,1810 ****
--- 1840,1844 ----
  	      size -= 8;
  	    }
+ #endif /* DSP56K or DSP5616 */
  	  set_float_handler (0);
  	}

