My problems with GCC 4.4- were solved as suggested by adding in more multiply patterns specifically smulsi3_highpart, which enabled reciprocal multiplication to work. GCC 3.4.4 seems to be happy without this, don't know why.
I have now built a mingw32 build of my private port, built on x86_64 linux, based on gcc-4.4-20100223 Building gnat for the final cross is the only problematic one There seem to be 3 build problems. 1) The ada bldtools don't build correctly, host versions of xnmake,xtreeprs,xsinfo , xeinfo and xgnatugn are built but the makefile needs ones built for the build system. I put versions built for the build system on my path and re-enter these lines, modified slightly from the originals (e.g. "./" removed from xnmake etc ) : (cd tools/objdir/gcc/ada/bldtools/nmake_b && i686-pc-mingw32-gnatmake -q xnmake && xnmake -b ../../nmake.adb ) (cd tools/objdir/gcc/ada/bldtools/nmake_s && i686-pc-mingw32-gnatmake -q xnmake && xnmake -s ../../nmake.ads ) (cd tools/objdir/gcc/ada/bldtools/treeprs && i686-pc-mingw32-gnatmake -q xtreeprs && xtreeprs ../../treeprs.ads ) (cd tools/objdir/gcc/ada/bldtools/sinfo && i686-pc-mingw32-gnatmake -q xsinfo && xsinfo ../../sinfo.h ) (cd tools/objdir/gcc/ada/bldtools/einfo && i686-pc-mingw32-gnatmake -q xeinfo && xeinfo ../../einfo.h ) (cd /home/linux/lmp-elf-gcc-4.4.4-prerelease/tools/objdir/gcc && xgnatugn unw ../../gcc-4.4-20100223/gcc/ada/gnat_ugn.texi \ ../../gcc-4.4-20100223/gcc/ada/ug_words doc/gnat_ugn.texi) 2) I had to form an appropriate s-oscons.ads for mingw32 outside the build process 3) The Makefile in gnattools used build system adalib and adainclude files, I had to change it to use the cross libraries, in my case "ADA_INCLUDES=-I/i686-pc-mingw32/lib/gcc/i686-pc-mingw32/4.4.4/adalib \ -I/i686-pc-mingw32/lib/gcc/i686-pc-mingw32/4.4.4/adainclude -I. -I/home/linux/lmp-elf-gcc-4.4.4-prerelease/tools/gcc-4.4-20100223/gcc/ada " \