• V
    ARC: [arcompact] entry.S: Elide extra check/branch in exception ret path · 9fabcc63
    Vineet Gupta 提交于
    This is done by improving the laddering logic !
    
    Before:
    
       if Exception
          goto excep_or_pure_k_ret
    
       if !Interrupt(L2)
          goto l1_chk
       else
          INTERRUPT_EPILOGUE 2
    
     l1_chk:
       if !Interrupt(L1)  (i.e. pure kernel mode)
          goto excep_or_pure_k_ret
       else
          INTERRUPT_EPILOGUE 1
    
     excep_or_pure_k_ret:
       EXCEPTION_EPILOGUE
    
    Now:
    
       if !Interrupt(L1 or L2) (i.e. exception or pure kernel mode)
          goto excep_or_pure_k_ret
    
      ; guaranteed to be an interrupt
       if !Interrupt(L2)
          goto l1_ret
       else
          INTERRUPT_EPILOGUE 2
    
     ; by virtue of above, no need to chk for L1 active
     l1_ret:
        INTERRUPT_EPILOGUE 1
    
     excep_or_pure_k_ret:
        EXCEPTION_EPILOGUE
    Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
    9fabcc63
entry-compact.S 11.6 KB