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 */
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to