svn commit: r259421 - head/sys/powerpc/aim

Justin Hibbits jhibbits at FreeBSD.org
Sun Dec 15 18:07:25 UTC 2013


Author: jhibbits
Date: Sun Dec 15 18:07:25 2013
New Revision: 259421
URL: http://svnweb.freebsd.org/changeset/base/259421

Log:
  Save r3 before using it for the trap check, else we end up saving the new r3,
  containing the trap instruction encoding (0x7c810808), and restoring it back
  with the frame on return.  This caused it to panic on my ppc32 machine, but
  somehow my ppc64 machine overlooked it, because I was using such a simple
  dtrace probe.
  
  X-MFC-with:	r259245
  MFC after:	2 weeks

Modified:
  head/sys/powerpc/aim/trap_subr32.S
  head/sys/powerpc/aim/trap_subr64.S

Modified: head/sys/powerpc/aim/trap_subr32.S
==============================================================================
--- head/sys/powerpc/aim/trap_subr32.S	Sun Dec 15 18:05:04 2013	(r259420)
+++ head/sys/powerpc/aim/trap_subr32.S	Sun Dec 15 18:07:25 2013	(r259421)
@@ -897,11 +897,13 @@ CNAME(dblow):
 #ifdef KDTRACE_HOOKS
 	/* Privileged, so drop to KDB */
 	mfsrr0	%r1
-	lwz	%r4,0(%r1)
+	mtsprg3	%r3
+	lwz	%r1,0(%r1)
 	/* Check if it's a DTrace trap. */
 	li	%r3,0x0808
 	addis	%r3,%r3,0x7c81
-	cmplw	%cr0,%r3,%r4
+	cmplw	%cr0,%r3,%r1
+	mfsprg3	%r3
 	beq	%cr0,1b
 #endif
 	/* Privileged, so drop to KDB */

Modified: head/sys/powerpc/aim/trap_subr64.S
==============================================================================
--- head/sys/powerpc/aim/trap_subr64.S	Sun Dec 15 18:05:04 2013	(r259420)
+++ head/sys/powerpc/aim/trap_subr64.S	Sun Dec 15 18:07:25 2013	(r259421)
@@ -804,11 +804,13 @@ CNAME(dblow):
 #ifdef KDTRACE_HOOKS
 	/* Privileged, so drop to KDB */
 	mfsrr0	%r1
-	lwz	%r4,0(%r1)
+	mtsprg3	%r3
+	lwz	%r1,0(%r1)
 	/* Check if it's a DTrace trap. */
 	li	%r3,0x0808
 	addis	%r3,%r3,0x7c81
-	cmplw	%cr0,%r3,%r4
+	cmplw	%cr0,%r3,%r1
+	mfsprg3	%r3
 	beq	%cr0,1b
 #endif
 	GET_CPUINFO(%r1)


More information about the svn-src-all mailing list