This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Where's ".div" implemented?


Nick Patavalis writes:
 > On Tue, Jun 03, 2003 at 07:25:03AM -0700, Doug Evans wrote:
 > > .div is in gcc/config/sparc/lb1spc.asm in the gcc sources.
 > > 
 > > I'm guessing no one's tried running linux on an old v7 machine
 > > because the linux configurations don't include lb1spc.asm in libgcc.a.
 > > [not surprising]
 > 
 > Actually my target processor is a quite new LEON, which is compliant
 > with sparc-v8, but with the integer multiply / divide instructions
 > disabled (according to the gcc-manual is the only difference between
 > v7 / v8, as far as gcc is concerned). 

Ah.

 > As I am planning on eventually running linux on it, I would like to
 > have a single toolkit. I also figure that since gcc accepts the
 > "-mcpu=v7" the integet mul/div instructions *should* de included in
 > libgcc.a (i.e. not including them could be considered a "bug" of
 > sorts).
 > 
 > Do you know how to make gcc build with these functions included in
 > "libgcc.a". I mean what build-scripts, config-files, etc should be
 > changed to make this happen?

Essentially what you want to do is add

LIB1ASMSRC = sparc/lb1spc.asm
LIB1ASMFUNCS = _mulsi3 _divsi3 _modsi3

to some "t-*" file in gcc.

In the gcc-3.2 tree (I'm guessing 3.3 is equivalent),
the entry for sparc-linux in gcc/config.gcc is

sparc-*-linux*)		# Sparc's running GNU/Linux, libc6
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux.h"
	tmake_file="t-slibgcc-elf-ver t-linux sparc/t-crtfm"
	extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
	gnu_ld=yes
	float_format=sparc
	;;

I'd say create file gcc/config/sparc/t-linux that contains

LIB1ASMSRC = sparc/lb1spc.asm
LIB1ASMFUNCS = _mulsi3 _divsi3 _modsi3

and then modify the above:

-	tmake_file="t-slibgcc-elf-ver t-linux sparc/t-crtfm"
+	tmake_file="t-slibgcc-elf-ver t-linux sparc/t-crtfm sparc/t-linux"

and give it a shot.
Haven't tried it of course, but it feels right.

------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]