SMP on 5.2-20040531-SNAP-ia64
Arun Sharma
arun.sharma at intel.com
Thu Jul 15 15:35:25 PDT 2004
On 7/2/2004 4:08 PM, Arun Sharma wrote:
> 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);
>
>
[...]
> Sorry, I need to leave for a vacation now, but this looks like a
> linker/relocation issue to me.
>
Turned out to be a compiler bug.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16559
The attached work around works for me and takes it all the way to /sbin/init.
-Arun
Index: sal.c
===================================================================
RCS file: /ncvs/src/sys/ia64/ia64/sal.c,v
retrieving revision 1.12
diff -u -r1.12 sal.c
--- sal.c 1 Feb 2003 22:50:09 -0000 1.12
+++ sal.c 15 Jul 2004 22:11:31 -0000
@@ -152,12 +152,16 @@
ipi_vector[IPI_AP_WAKEUP] = dp->sale_vector;
setup_ipi_vectors(dp->sale_vector & 0xf0);
-#ifdef SMP
- 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);
+#ifdef SMP
+ {
+ struct ia64_fdesc *f =
+ (struct ia64_fdesc *) os_boot_rendez;
+ result = ia64_sal_entry(SAL_SET_VECTORS,
+ SAL_OS_BOOT_RENDEZ,
+ ia64_tpa(f->func),
+ ia64_tpa(f->gp),
+ 0, 0, 0, 0);
+ }
#endif
break;
More information about the freebsd-ia64
mailing list