
On Mon, Oct 12, 2009 at 10:10 AM, myuboot@fastmail.fm wrote:
Thanks for 1) and 2). For 3), both results show GP register is modified. the result of ${CROSS_COMPILE}objdump --source cpu.o is:
void flush_cache(ulong start_addr, ulong size) { 7c: 3c1c0000 lui gp,0x0 80: 279c0000 addiu gp,gp,0 84: 0399e021 addu gp,gp,t9
It looks like the code expects t9 to have the gp value. I need to get my setup up to -current and do a build test with eldk to help much more (we don't do much mips anymore here, so my setup is a bit behind the times).
unsigned long lsize = CONFIG_SYS_CACHELINE_SIZE; unsigned long addr = start_addr & ~(lsize - 1); 88: 2403fff0 li v1,-16 8c: 00831024 and v0,a0,v1 unsigned long aend = (start_addr + size - 1) & ~(lsize - 1); 90: 2484ffff addiu a0,a0,-1 94: 00852021 addu a0,a0,a1 98: 00831824 and v1,a0,v1
while (1) { cache_op(Hit_Writeback_Inv_D, addr); 9c: bc550000 cache 0x15,0(v0) cache_op(Hit_Invalidate_I, addr); a0: bc500000 cache 0x10,0(v0) if (addr == aend) a4: 1443fffd bne v0,v1,9c <flush_cache+0x20> a8: 24420010 addiu v0,v0,16 break; addr += lsize; } #if defined(CONFIG_TNETVxxxx) invalidate_dcache(); ac: 8f990000 lw t9,0(gp) b0: 03200008 jr t9 b4: 00000000 nop
000000b8 <do_reset>: void __attribute__((weak)) _machine_restart(void) { }
For 4), I generated the toolchain by myself using buildroot 2009.08. Using built-in specs. And the result of gcc -v is: Target: mips-linux-uclibc Configured with: /home/root123/sources/buildroot-2009.08-k/toolchain_build_mips/gcc-4.4.1/configure --prefix=/usr --build=i386-pc-linux-gnu --host=i386-pc-linux-gnu --target=mips-linux-uclibc --enable-languages=c --with-sysroot=/home/root123/sources/buildroot-2009.08-k/build_mips/staging_dir --with-build-time-tools=/home/root123/sources/buildroot-2009.08-k/build_mips/staging_dir/usr/mips-linux-uclibc/bin --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld --disable-libssp --disable-tls --enable-shared --with-gmp=/home/root123/sources/buildroot-2009.08-k/toolchain_build_mips/gmp --with-mpfr=/home/root123/sources/buildroot-2009.08-k/toolchain_build_mips/mpfr --disable-nls --enable-threads --disable-multilib --disable-decimal-float --with-float=soft --with-abi=32 --with-tune=mips32 : (reconfigured) /home/root123/sources/buildroot-2009.08-k/toolchain_build_mips/gcc-4.4.1/configure --prefix=/usr --build=i386-pc-linux-gnu --host=i386-pc-linux-gnu --target=mips-linux-uclibc --enable-languages=c --with-sysroot=/home/root123/sources/buildroot-2009.08-k/build_mips/staging_dir --with-build-time-tools=/home/root123/sources/buildroot-2009.08-k/build_mips/staging_dir/usr/mips-linux-uclibc/bin --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld --disable-libssp --disable-tls --enable-shared --with-gmp=/home/root123/sources/buildroot-2009.08-k/toolchain_build_mips/gmp --with-mpfr=/home/root123/sources/buildroot-2009.08-k/toolchain_build_mips/mpfr --disable-nls --enable-threads --disable-multilib --disable-decimal-float --with-float=soft --with-abi=32 --with-tune=mips32 Thread model: posix gcc version 4.4.1 (GCC)
For most of the flags above, they are automatically added by buildroot. Please let me know if there is anything wrong with the setting.
nothing stands out, but I'm not a gcc expert.
- I am not familiar with ELDK. It seems to be able to create toolchain
quickly. I will give it a try. How is the toolchain created by ELDK different from buildroot or openembedded?
It comes with a prebuilt toolchain. I believe the compiler version is a bit older than what you are running (looks like 4.2.2 from the web page).