SMP on 5.2-20040531-SNAP-ia64

Arun Sharma arun.sharma at intel.com
Fri Jul 2 16:08:07 PDT 2004


On 6/18/2004 5:02 AM, Dietmar Hahn wrote:

> result = ia64_sal_entry(SAL_SET_VECTORS,
>                             SAL_OS_BOOT_RENDEZ,
>                             ia64_tpa(FDESC_FUNC(os_boot_rendez)),
>                             ia64_tpa(FDESC_GP(os_boot_rendez)),
>                             0, 0, 0, 0);

This expands to:

	tpa	r62 = r62

And I found that the value of r62 was 0x000004248200800a, which causes the machine to reset.
I suspect that the compiler allocates a temporary structure and statically intializes it. If  the kernel linker didn't relocate it properly, it might result in bogus values such as the above.

I did verify that the above value of r62 is infact a part of the kernel binary (so it's not due to register corruption).

struct ia64_fdesc {
        u_int64_t       func;
        u_int64_t       gp;
};

e000000004058100 0a800082 24040000 00600000 00000400  ....$....`......

Sorry, I need to leave for a vacation now, but this looks like a linker/relocation issue to me.

	-Arun



More information about the freebsd-ia64 mailing list