[PATCH 00/18] powerpc/64s/exception: cleanup and gas macroify, round 2

Nicholas Piggin npiggin at gmail.com
Tue Jul 30 00:12:29 AEST 2019


This series goes on top of the unmerged machine check handler
changes

https://patchwork.ozlabs.org/project/linuxppc-dev/list/?series=118814

This carries on with the goal of unwinding macros and consolidating
code. This gets most of the way there, but we have traded that
improvement for another problem, which is the argument list for code
generation macros is unwieldy.

  INT_HANDLER system_reset, 0x100, 0, 0, 0, EXC_STD, PACA_EXNMI, 0, 0, 0, 0, 1

There are two possible ways I see to solve this. One is to come up
with new sets of constants for each argument.

  INT_HANDLER system_reset, 0x100, INLINE, FULL, REAL, EXC_STD, PACA_EXNMI, CLEAR_RI, NO_DAR, NO_DSISR, NO_MASK, KVM

I don't really like that, my preferred way is we can set symbols to 
configure the behaviour of the code generation macro.

  INT_DEFINE_BEGIN(system_reset)
          IVEC=0x100
          IHSRR=0
          IAREA=PACA_EXNMI
          ISET_RI=0
          IKVM_REAL=1
  INT_DEFINE_END(data_access)

  INT_HANDLER system_reset

Any other suggestions?

Thanks,
Nick

Nicholas Piggin (18):
  powerpc/64s/exception: Fix DAR load for handle_page_fault error case
  powerpc/64s/exception: move head-64.h exception code to
    exception-64s.S
  powerpc/64s/exception: Add EXC_HV_OR_STD, for HSRR if HV=1 else SRR
  powerpc/64s/exception: Fix performance monitor virt handler
  powerpc/64s/exception: remove 0xb00 handler
  powerpc/64s/exception: Replace PROLOG macros and EXC helpers with a
    gas macro
  powerpc/64s/exception: remove EXCEPTION_PROLOG_0/1, rename _2
  powerpc/64s/exception: Add the virt variant of the denorm interrupt
    handler
  powerpc/64s/exception: INT_HANDLER support HDAR/HDSISR and use it in
    HDSI
  powerpc/64s/exception: Add INT_KVM_HANDLER gas macro
  powerpc/64s/exception: KVM_HANDLER reorder arguments to match other
    macros
  powerpc/64s/exception: Merge EXCEPTION_PROLOG_COMMON_2/3
  powerpc/64s/exception: Add INT_COMMON gas macro to generate common
    exception code
  powerpc/64s/exception: Expand EXCEPTION_COMMON macro into caller
  powerpc/64s/exception: Expand EXCEPTION_PROLOG_COMMON_1 and 2 into
    caller
  powerpc/64s/exception: INT_COMMON add DIR, DSISR, reconcile options
  powerpc/64s/exception: move interrupt entry code above the common
    handler
  powerpc/64s/exception: program check handler do not branch into a
    macro

 arch/powerpc/include/asm/head-64.h   |   41 -
 arch/powerpc/kernel/exceptions-64s.S | 1264 +++++++++++++-------------
 2 files changed, 623 insertions(+), 682 deletions(-)

-- 
2.22.0



More information about the Linuxppc-dev mailing list