Probably because -O3 automatically make short functions inline so
local_sb1___flush_cache_all disappears
asm("sb1___flush_cache_all_ipi = local_sb1___flush_cache_all");
^^^^^^^^^I don't know whether this trick is safe for auto-inlining.
as for the problem of adding prefetch to memcpy, I am not famliar with SB1250,
but as of version 2.4.22, arch/mips/lib/memcpy.S already support using MIPS IV
prefetch
macrohat wrote:
>Dear Fuxin Zhang:
>
>Thinks for your help!
>
>Now i have another question, I use mips-linux-gcc which is ported from
>gcc-3.2.3 by Broadcom to compile linux kernel,when I use "-O2" or "-Os"
>option, it can complete successfully, but if i use "-O3" option, it can not
>complete.Enclosed is the err log and souce code.
>Any help would be really appreciated.
>
>err log:
>
>arch/mips64/mm/mm.o: In function `sb1___flush_cache_all':
>arch/mips64/mm/mm.o(.text+0x1930): undefined reference to
>`local_sb1___flush_cac
>he_all'
>arch/mips64/mm/mm.o(.text+0x1934): undefined reference to
>`local_sb1___flush_cac
>he_all'
>make: *** [vmlinux] Error 1
>
>source code:
>
>static void local_sb1___flush_cache_all(void)
>{
> TRACE_RECORD(TRC_CACHEOP_BASE+5, 0, 0,
> read_c0_count());
>
> __sb1_writeback_inv_dcache_all();
> __sb1_flush_icache_all();
>}
>
>extern void sb1___flush_cache_all_ipi(void *ignored);
>asm("sb1___flush_cache_all_ipi = local_sb1___flush_cache_all");
>
>static void sb1___flush_cache_all(void)
>{
> smp_call_function(sb1___flush_cache_all_ipi, 0, 1, 1);
> local_sb1___flush_cache_all();
>}
>
>
>Regards!
>
> macrohat
> emblinux@macrohat.com
> 2004-11-14
>
>
|