This is another revision of the previous series rebased to upstream, fixes, additions, and more testing.
Code changes were tested mostly with ppc64le_defconfig config, diffing head_64.o from each build. Most patches cause no changes to generated code, though a few at the end make significant changes. The bad_stack change in particular is quite significant, it helps enable future series which goes further in rewriting interrupt handler code, so I include it here, would be nice to get out of the way. Results are best judged by looking at the final result. There is still some way to go, but at least now almost everything required to explain exception code generation is contained in one file, and usually only a couple of layers of macro deep. Thanks, Nick Nicholas Piggin (28): powerpc/64s/exception: fix line wrap and semicolon inconsistencies in macros powerpc/64s/exception: remove H concatenation for EXC_HV variants powerpc/64s/exception: consolidate EXCEPTION_PROLOG_2 with _NORI variant powerpc/64s/exception: move and tidy EXCEPTION_PROLOG_2 variants powerpc/64s/exception: fix sreset KVM test code powerpc/64s/exception: remove the "extra" macro parameter powerpc/64s/exception: consolidate maskable and non-maskable prologs powerpc/64s/exception: merge KVM handler and skip variants powerpc/64s/exception: KVM handler can set the HSRR trap bit powerpc/64s/exception: Make EXCEPTION_PROLOG_0 a gas macro for consistency with others powerpc/64s/exception: Move EXCEPTION_COMMON handler and return branches into callers powerpc/64s/exception: Move EXCEPTION_COMMON additions into callers powerpc/64s/exception: unwind exception-64s.h macros powerpc/64s/exception: improve 0x500 handler code powerpc/64s/exception: move EXCEPTION_PROLOG_2* to a more logical place powerpc/64s/exception: remove STD_EXCEPTION_COMMON variants powerpc/64s/exception: move KVM related code together powerpc/64s/exception: move exception-64s.h code to exception-64s.S where it is used powerpc/64s/exception: move head-64.h code to exception-64s.S where it is used powerpc/64s/exception: remove __BRANCH_TO_KVM powerpc/64s/exception: use a gas macro for system call handler code powerpc/64s/exception: fix indenting irregularities powerpc/64s/exception: generate regs clear instructions using .rept powerpc/64s/exception: remove bad stack branch powerpc/64s/exception: remove pointless EXCEPTION_PROLOG macro indirection powerpc/64s/exception: move paca save area offsets into exception-64s.S powerpc/64s/exception: clean up system call entry powerpc/64s/exception: avoid SPR RAW scoreboard stall in real mode entry arch/powerpc/include/asm/exception-64s.h | 609 +---------- arch/powerpc/include/asm/head-64.h | 204 +--- arch/powerpc/include/asm/paca.h | 2 + arch/powerpc/kernel/asm-offsets.c | 2 + arch/powerpc/kernel/exceptions-64s.S | 1253 ++++++++++++++++------ arch/powerpc/xmon/xmon.c | 2 + 6 files changed, 955 insertions(+), 1117 deletions(-) -- 2.20.1