On Tue, Sep 11, 2007 at 11:30:48PM +0200, Thomas Bogendoerfer wrote:
> I finally figured out, why 64bit SGI IP22 kernels are broken (at
> least when booted with SGI sash). Looks like sash jumps to an uncached
> XPHYS address instead of the KSEG0 address indicated by the ELF start.
> This messes up bogomips calculation.
>
> I found an interesting piece of code in head.S:
>
> .macro ARC64_TWIDDLE_PC
> #if defined(CONFIG_ARC64) || defined(CONFIG_MAPPED_KERNEL)
> /* We get launched at a XKPHYS address but the kernel is linked
> * to
> run at a KSEG0 address, so jump there. */
> PTR_LA t0, \@f
> jr t0
> \@:
> #endif
> .endm
>
>
> Enabling this for (CONFIG_SGI_IP22 && CONFIG_64BIT) fixes the boot problem.
> It's not big deal to add this, but I'm wondering why we not just always
> use this macro ? What platforms do it break with it ?
I don't think any will break - it's just one of those "optimizations".
Ralf
|