Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 10 Mar 2013 02:38:35 +0000 (UTC)
From:      Andrew Turner <andrew@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r248123 - head/sys/arm/arm
Message-ID:  <201303100238.r2A2cZqZ011287@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: andrew
Date: Sun Mar 10 02:38:35 2013
New Revision: 248123
URL: http://svnweb.freebsd.org/changeset/base/248123

Log:
  Tell the unwinder we can't unwind swi_entry. This fixes an infinite loop
  when the kernel attempts to unwind through this function.
  
  The .fnstart and .fnend in this function should be moved to macros but we
  are currently missing an END macro on ARM.

Modified:
  head/sys/arm/arm/exception.S

Modified: head/sys/arm/arm/exception.S
==============================================================================
--- head/sys/arm/arm/exception.S	Sun Mar 10 00:47:19 2013	(r248122)
+++ head/sys/arm/arm/exception.S	Sun Mar 10 02:38:35 2013	(r248123)
@@ -77,6 +77,9 @@ Lreset_panicmsg:
  *	Handler for the Software Interrupt exception.
  */
 ASENTRY_NP(swi_entry)
+	.fnstart
+	.cantunwind			/* Don't unwind past here */
+
 	PUSHFRAME
 
 	mov	r0, sp			/* Pass the frame to any function */
@@ -88,6 +91,7 @@ ASENTRY_NP(swi_entry)
 	DO_AST
 	PULLFRAME
 	movs	pc, lr			/* Exit */
+	.fnend
 
 /*
  * prefetch_abort_entry:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201303100238.r2A2cZqZ011287>