RTEMS 4.7.99.2 Available -- PowerPC/virtex feedback
gregory.menke at gsfc.nasa.gov
gregory.menke at gsfc.nasa.gov
Fri Aug 10 15:05:45 UTC 2007
I had to hack at the environment vars to make the toolchain
configure/make step include soft-float, its been a while but the
*_FOR_TARGET vars didn't quite work. I had to to pipe the configure &
make output to a file and check for the -msoft-float as xgcc built. If
you're not careful, you can can have gcc use soft-float as expected but
g++ still using the default- which means stuff works great until the
first C++ code comes along and by then you've forgotten about the
"special" gcc build.
If newlib built w/ rtems then it'd be easier. OTOH maybe the way to
approach it is to sneak some build options into the newlib configure
scripts, essentially hardcoding only newlib for soft-float & gcc/g++ can
build normally. Then there is the question of mixing code compiled for
soft-float w/ hard, which hopefully can be answered in general.
It is a 403/405 AFAIK, but the hardware people can choose which options
go along with it (such as an fpu, cache configs, peripherals etc.), so
there is always the opportunity for stuff to get out of sync. Remember
this isn't only a RTEMS bsp config issue- it involves the abi & code
generation inside gcc. In fact the only way I could see it affecting
the bsp is if the fpu context & exception code can be conditionally
compiled.
Greg
Joel Sherrill writes:
> Robert S. Grimes wrote:
> > gregory.menke at gsfc.nasa.gov wrote:
> >
> >> You'll have to apply -msoft-float to more than the RTEMS kernel, newlib
> >> (being part of the toolchain) needed to be compiled with it as well.
> >>
> >>
> > Does this mean rebuilding gcc? Or can newlib be built separately?
> >
> > I assume I'll need to reconfigure gcc, right? What switch to I add to
> > the configure command?
> >
> If you are using the RTEMS RPMs or standard configure
> command, then you have a lot of multilib variants.
>
> GCC has some differences for 403, 405, and 405fp.
> Is the virtex CPU really a 403 like the CPU_CFLAGS indicates?
>
> This is the difference from gcc's viewpoint:
>
> = {{"401", PROCESSOR_PPC403, POWERPC_BASE_MASK | MASK_SOFT_FLOAT},
> {"403", PROCESSOR_PPC403,
> POWERPC_BASE_MASK | MASK_SOFT_FLOAT | MASK_STRICT_ALIGN},
> {"405", PROCESSOR_PPC405,
> POWERPC_BASE_MASK | MASK_SOFT_FLOAT | MASK_MULHW | MASK_DLMZB},
> {"405fp", PROCESSOR_PPC405,
> POWERPC_BASE_MASK | MASK_MULHW | MASK_DLMZB},
> {"440", PROCESSOR_PPC440,
> POWERPC_BASE_MASK | MASK_SOFT_FLOAT | MASK_MULHW | MASK_DLMZB},
> {"440fp", PROCESSOR_PPC440,
>
More information about the users
mailing list