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