Brian,

Following could be the problems.

1. Compiler flags.
2. 'mmu' pin is not grounded in PPC configuration.

GoodLuck,
Prakash


--- brian.auld at adic.com wrote:
>
> Using ELDK to run embedded linux on 440GP eval
> board.
>
> After getting the above running, I decided to test
> the waters with a custom
> kernel another group in our company has used on a
> custom 440GP board
> (Ultimately, the directive from mgmt is to leverage
> the work done on this
> other custom board). This group used a Mac as their
> development server as
> opposed to cross-developing on an x86.
>
> When I try to build this 'custom kernel', I get the
> following error:
>
> ...
> Unrecognized opcode: 'tlbre' in the file
> arch/ppc/kernel/misc.S
> ...
>
> I diffed the custom kernel against the kernel I'm
> successfully running on
> ebony (ELDK kernel), and have attached it below. It
> seems the the previous
> version of misc.S (1.76) had a smattering of 'tlbre'
> commands, but in 1.77
> they are gone.
>
> Any thoughts or background? I read some background
> info on the mailing list
> about the use of mcpu=403/405 for ppc_4xx. I also
> read the documentation for
> the 405 and compared it to the 440GP, and they both
> support the tlbre
> opcode.
>
> Why is the ELDK not recognizing this opcode? I also
> tried cross-compiling
> this kernel with a backup 'made by hand' gnu
> tool-chain and I got the same
> error.
>
> General question: Is there a way to get previous
> versions of
> linuxppc_2_4_devel kernels?
>
>
==========================================================================
> --- linuxppc/arch/ppc/kernel/misc.S   2003-02-04
> 10:02:50.000000000 -0500
> +++ custom-kernel/arch/ppc/kernel/misc.S      2003-02-06
> 06:56:16.000000000 -0500
> @@ -1,5 +1,5 @@
>  /*
> - * BK Id: SCCS/s.misc.S 1.77 10/09/02 10:47:02
> paulus
> + * BK Id: SCCS/s.misc.S 1.76 09/20/02 07:53:45
> trini
>   */
>  /*
>   * This file contains miscellaneous low-level
> functions.
> @@ -478,6 +478,42 @@
>  #endif /* CONFIG_40x */
>       blr
>
> +
> +/*
> + * invalidate_dcache_range(unsigned long start,
> unsigned long stop)
> + */
> +_GLOBAL(invalidate_icache_range)
> +     li      r5,L1_CACHE_LINE_SIZE-1
> +     andc    r3,r3,r5
> +     subf    r4,r3,r4
> +     add     r4,r4,r5
> +     srwi.   r4,r4,LG_L1_CACHE_LINE_SIZE
> +     beqlr
> +     mtctr   r4
> +
> +1:   icbi    0,r3
> +     addi    r3,r3,L1_CACHE_LINE_SIZE
> +     bdnz    1b
> +     sync                            /* wait for icbi's to get to ram */
> +     blr
> +
> +
> +/*
> + * void get_tlb(int* entry, int index)
> + */
> +_GLOBAL(get_tlb)
> +        tlbre        r0, r4, 0
> +     stw     r0, 4(r3)
> +     mfspr   r0, SPRN_MMUCR
> +     andi.   r0, r0, PPC440_MMUCR_TID
> +     stw     r0, 0(r3)
> +        tlbre        r0, r4, 1
> +     stw     r0, 8(r3)
> +        tlbre        r0, r4, 2
> +     stw     r0, 12(r3)
> +     blr
> +
> +
>  /*
>   * Flush instruction cache.
>   * This is a no-op on the 601.
>
============================================================================
>
> Thanks
>
> -- Brian
>
>


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/



Reply via email to