PERFORCE change 96814 for review

Kip Macy kmacy at FreeBSD.org
Mon May 8 05:13:41 UTC 2006


http://perforce.freebsd.org/chv.cgi?CH=96814

Change 96814 by kmacy at kmacy_storage:sun4v_rwbuf on 2006/05/08 05:13:01

	make sendsig more consistent with sparc64

Affected files ...

.. //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/machdep.c#22 edit

Differences ...

==== //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/machdep.c#22 (text+ko) ====

@@ -228,8 +228,6 @@
 
 #ifdef notyet
 	cpu_identify(rdpr(ver), tick_freq, PCPU_GET(cpuid));
-#else
-	printf("\tUltraSparc T1\n");
 #endif 
 }
 
@@ -336,6 +334,9 @@
 	cninit();
 	tick_init(clock);
 
+	printf("cpu0: UltraSparc T1 Processor (%d.%02d MHz CPU)\n",
+	    (clock + 4999) / 1000000, ((clock + 4999) / 10000) % 100);
+
 	/*
 	 * Panic is there is no metadata.  Most likely the kernel was booted
 	 * directly, instead of through loader(8).
@@ -521,12 +522,24 @@
 
 	/* Build the argument list for the signal handler. */
 	tf->tf_out[0] = sig;
-	tf->tf_out[1] = (register_t)&sfp->sf_si;
 	tf->tf_out[2] = (register_t)&sfp->sf_uc;
 	tf->tf_out[4] = (register_t)catcher;
+
 	/* Fill siginfo structure. */
 	sf.sf_si = ksi->ksi_info;
 	sf.sf_si.si_addr = (void *)tf->tf_tpc;
+	if (SIGISMEMBER(psp->ps_siginfo, sig)) {
+		/* Signal handler installed with SA_SIGINFO. */
+		tf->tf_out[1] = (register_t)&sfp->sf_si;
+
+		/* Fill in POSIX parts. */
+		sf.sf_si = ksi->ksi_info;
+		sf.sf_si.si_signo = sig; /* maybe a translated signal */
+	} else {
+		/* Old FreeBSD-style arguments. */
+		tf->tf_out[1] = ksi->ksi_code;
+		tf->tf_out[3] = (register_t)ksi->ksi_addr;
+	}
 
 	/* Copy the sigframe out to the user's stack. */
 	if (rwindow_save(td) != 0 || copyout(&sf, sfp, sizeof(*sfp)) != 0 ||


More information about the p4-projects mailing list