svn commit: r332383 - head/sys/powerpc/booke
Justin Hibbits
jhibbits at FreeBSD.org
Tue Apr 10 17:32:28 UTC 2018
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 */
More information about the svn-src-head
mailing list