From owner-svn-src-all@freebsd.org  Tue Apr 10 17:32:28 2018
Return-Path: <owner-svn-src-all@freebsd.org>
Delivered-To: svn-src-all@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id E97C7F89B16;
 Tue, 10 Apr 2018 17:32:27 +0000 (UTC)
 (envelope-from jhibbits@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 9DA258787B;
 Tue, 10 Apr 2018 17:32:27 +0000 (UTC)
 (envelope-from jhibbits@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 98B5810AD6;
 Tue, 10 Apr 2018 17:32:27 +0000 (UTC)
 (envelope-from jhibbits@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3AHWRSe071985;
 Tue, 10 Apr 2018 17:32:27 GMT (envelope-from jhibbits@FreeBSD.org)
Received: (from jhibbits@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3AHWRER071984;
 Tue, 10 Apr 2018 17:32:27 GMT (envelope-from jhibbits@FreeBSD.org)
Message-Id: <201804101732.w3AHWRER071984@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: jhibbits set sender to
 jhibbits@FreeBSD.org using -f
From: Justin Hibbits <jhibbits@FreeBSD.org>
Date: Tue, 10 Apr 2018 17:32:27 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-head@freebsd.org
Subject: svn commit: r332383 - head/sys/powerpc/booke
X-SVN-Group: head
X-SVN-Commit-Author: jhibbits
X-SVN-Commit-Paths: head/sys/powerpc/booke
X-SVN-Commit-Revision: 332383
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-all@freebsd.org
X-Mailman-Version: 2.1.25
Precedence: list
List-Id: "SVN commit messages for the entire src tree \(except for &quot;
 user&quot; and &quot; projects&quot; \)" <svn-src-all.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-all>,
 <mailto:svn-src-all-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-all/>
List-Post: <mailto:svn-src-all@freebsd.org>
List-Help: <mailto:svn-src-all-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-all>,
 <mailto:svn-src-all-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Apr 2018 17:32:28 -0000

Author: jhibbits
Date: Tue Apr 10 17:32:27 2018
New Revision: 332383
URL: https://svnweb.freebsd.org/changeset/base/332383

Log:
  Call through powerpc_interrupt for all Book-E interrupts
  
  Make int_external_input, int_decrementer, and int_performance_counter all
  now use trap_common, just like on AIM.  The effects of this are:
  
  * All traps are now properly displayed in ddb.  Previously traps from
    external input, decrementer, and performance counters, would display as
    just basic stack traces.  Now the frame is displayed.
  
  * External interrupts are now handled with interrupts enabled, so handling
    can be preempted.  This seems to fix a hang found post-r329882.

Modified:
  head/sys/powerpc/booke/trap_subr.S

Modified: head/sys/powerpc/booke/trap_subr.S
==============================================================================
--- head/sys/powerpc/booke/trap_subr.S	Tue Apr 10 17:00:37 2018	(r332382)
+++ head/sys/powerpc/booke/trap_subr.S	Tue Apr 10 17:32:27 2018	(r332383)
@@ -563,11 +563,7 @@ INTERRUPT(int_instr_storage)
 INTERRUPT(int_external_input)
 	STANDARD_PROLOG(SPR_SPRG1, PC_TEMPSAVE, SPR_SRR0, SPR_SRR1)
 	FRAME_SETUP(SPR_SPRG1, PC_TEMPSAVE, EXC_EXI)
-	GET_TOCBASE(%r2)
-	addi	%r3, %r1, CALLSIZE
-	bl	CNAME(powerpc_interrupt)
-	TOC_RESTORE
-	b	trapexit
+	b	trap_common
 
 
 INTERRUPT(int_alignment)
@@ -603,11 +599,7 @@ INTERRUPT(int_syscall)
 INTERRUPT(int_decrementer)
 	STANDARD_PROLOG(SPR_SPRG1, PC_TEMPSAVE, SPR_SRR0, SPR_SRR1)
 	FRAME_SETUP(SPR_SPRG1, PC_TEMPSAVE, EXC_DECR)
-	GET_TOCBASE(%r2)
-	addi	%r3, %r1, CALLSIZE
-	bl	CNAME(powerpc_interrupt)
-	TOC_RESTORE
-	b	trapexit
+	b	trap_common
 
 
 /*****************************************************************************
@@ -653,11 +645,7 @@ INTERRUPT(int_vecast)
 INTERRUPT(int_performance_counter)
 	STANDARD_PROLOG(SPR_SPRG3, PC_TEMPSAVE, SPR_SRR0, SPR_SRR1)
 	FRAME_SETUP(SPR_SPRG3, PC_TEMPSAVE, EXC_PERF)
-	GET_TOCBASE(%r2)
-	addi	%r3, %r1, CALLSIZE
-	bl	CNAME(powerpc_interrupt)
-	TOC_RESTORE
-	b	trapexit
+	b	trap_common
 #endif
 
 
@@ -1002,7 +990,7 @@ trap_common:
 	/* Call C trap dispatcher */
 	GET_TOCBASE(%r2)
 	addi	%r3, %r1, CALLSIZE
-	bl	CNAME(trap)
+	bl	CNAME(powerpc_interrupt)
 	TOC_RESTORE
 
 	.globl	CNAME(trapexit)		/* exported for db_backtrace use */