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: cross compiling for PPC7400/Linux on Solaris 8


Hi,

So the problem seems to come from some functions defined in
asm-ppc/time.h

extern __inline__ unsigned long get_tbl(void) {
        unsigned long tbl;
#if defined(CONFIG_403GCX)
        asm volatile("mfspr %0, 0x3dd" : "=r" (tbl));
#else
        asm volatile("mftb %0" : "=r" (tbl));
#endif
        return tbl;
}

extern __inline__ unsigned long get_tbu(void) {
        unsigned long tbl;
#if defined(CONFIG_403GCX)
        asm volatile("mfspr %0, 0x3dc" : "=r" (tbl));
#else
        asm volatile("mftbu %0" : "=r" (tbl));
#endif
        return tbl;
}

These functions will generate different ASM code for different PPC
processors. And it seems mftbX functions are not valid for PPC403
processors.

Therefore assembling with -many does fail (because PPC403 doens't
support it).

So is there a way to prevent -many to be passed to the assembler?

Thanks

JC

On Mon, 2004-06-28 at 12:06, Jean-Christophe Dubois wrote:
> Hi,
> 
> I manage to generate the cross tool chain for GCC 3.4.0/GLIBC
> 2.3.2/Binutils 2.14 on my Solaris 8 systems. All seems to be well.
> 
> But I then tried to cross-compile the linux kernel and ran into some
> problem. You can find the verbose trace bellow. It looks like there is a
> problem in the way gcc calls as. In my case as is called with "-mppc
> -maltivec -many". While the 2 first one seems OK, the last one "-many"
> prevent as from decoding correctly the "mftbX" operation that are
> generated under #APPS #NO_HAPPS in the assembly file.
> 
> Would anybody have an idea on what can cause this problem or how to
> prevent gcc to pass -many to as.
> 
> Thanks
> 
> JC
> 
> powerpc-7400-linux-gnu-gcc: warning: -pipe ignored because -save-temps
> specified
> Reading specs from
> /vobs/target_tools/sparc-unknown-solaris-gnu/powerpc-7400-linux-gnu/gcc-3.4.0-glibc-2.3.2/lib/gcc/powerpc-7400-linux-gnu/3.4.0/specs
> Configured with:
> /export/home/jdubois/crosstool-0.28-rc25/build/powerpc-7400-linux-gnu/gcc-3.4.0-glibc-2.3.2/gcc-3.4.0/configure --target=powerpc-7400-linux-gnu --host=sparc-host_sun-solaris2.8 --prefix=/vobs/target_tools/sparc-unknown-solaris-gnu/powerpc-7400-linux-gnu/gcc-3.4.0-glibc-2.3.2 --with-cpu=7400 --enable-altivec --with-headers=/vobs/target_tools/sparc-unknown-solaris-gnu/powerpc-7400-linux-gnu/gcc-3.4.0-glibc-2.3.2/powerpc-7400-linux-gnu/include --with-local-prefix=/vobs/target_tools/sparc-unknown-solaris-gnu/powerpc-7400-linux-gnu/gcc-3.4.0-glibc-2.3.2/powerpc-7400-linux-gnu --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long
> Thread model: posix
> gcc version 3.4.0
> 
> /vobs/target_tools/sparc-unknown-solaris-gnu/powerpc-7400-linux-gnu/gcc-3.4.0-glibc-2.3.2/libexec/gcc/powerpc-7400-linux-gnu/3.4.0/cc1 -E -quiet -nostdinc -v -Iinclude -Iarch/ppc -Iinclude -Iarch/ppc -Iarch/ppc -D__unix__ -D__gnu_linux__ -D__linux__ -Dunix -D__unix -Dlinux -D__linux -Asystem=linux -Asystem=unix -Asystem=posix -D__KERNEL__ -D__KERNEL__ -DKBUILD_BASENAME=time -DKBUILD_MODNAME=time -iwithprefix include -MD arch/ppc/kernel/.time.o.d arch/ppc/kernel/time.c -msoft-float -mcpu=7400 -Wall -Wstrict-prototypes -Wno-trigraphs -Wno-uninitialized -Wdeclaration-after-statement -fno-strict-aliasing -fno-common -ffixed-r2 -fomit-frame-pointer -O2 -o time.i
> ignoring duplicate directory "include"
> ignoring duplicate directory "arch/ppc"
> ignoring duplicate directory "arch/ppc"
> #include "..." search starts here:
> #include <...> search starts here:
>  include
>  arch/ppc
> 
> /vobs/target_tools/sparc-unknown-solaris-gnu/powerpc-7400-linux-gnu/gcc-3.4.0-glibc-2.3.2/lib/gcc/powerpc-7400-linux-gnu/3.4.0/include
> End of search list.
> 
> /vobs/target_tools/sparc-unknown-solaris-gnu/powerpc-7400-linux-gnu/gcc-3.4.0-glibc-2.3.2/libexec/gcc/powerpc-7400-linux-gnu/3.4.0/cc1 -fpreprocessed time.i -quiet -dumpbase time.c -msoft-float -mcpu=7400 -auxbase-strip arch/ppc/kernel/.tmp_time.o -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -Wno-uninitialized -Wdeclaration-after-statement -version -fno-strict-aliasing -fno-common -ffixed-r2 -fomit-frame-pointer -o time.s
> GNU C version 3.4.0 (powerpc-7400-linux-gnu)
> 	compiled by GNU C version 3.3.2.
> GGC heuristics: --param ggc-min-expand=100 --param
> ggc-min-heapsize=131072
> arch/ppc/kernel/time.c: In function `timer_interrupt':
> arch/ppc/kernel/time.c:199: warning: use of compound expressions as
> lvalues is deprecated
> arch/ppc/kernel/time.c: In function `time_init':
> arch/ppc/kernel/time.c:348: warning: use of compound expressions as
> lvalues is deprecated
> 
> /vobs/target_tools/sparc-unknown-solaris-gnu/powerpc-7400-linux-gnu/gcc-3.4.0-glibc-2.3.2/lib/gcc/powerpc-7400-linux-gnu/3.4.0/../../../../powerpc-7400-linux-gnu/bin/as -mppc -maltivec -many -V -Qy -o arch/ppc/kernel/.tmp_time.o time.s
> GNU assembler version 2.14 (powerpc-7400-linux-gnu) using BFD version
> 2.14 20030612
> time.s: Assembler messages:
> time.s:158: Error: Unrecognized opcode: `mftb'
> time.s:376: Error: Unrecognized opcode: `mftb'
> time.s:500: Error: Unrecognized opcode: `mftb'
> time.s:685: Error: Unrecognized opcode: `mftb'
> time.s:802: Error: Unrecognized opcode: `mftb'
> time.s:1016: Error: Unrecognized opcode: `mftbu'
> time.s:1017: Error: Unrecognized opcode: `mftb'
> time.s:1018: Error: Unrecognized opcode: `mftbu'



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