[kvm-unit-tests v3 10/13] powerpc: Add support for more interrupts including HV interrupts
Joel Stanley
joel at jms.id.au
Thu Apr 6 09:45:27 AEST 2023
Hi Nick,
On Mon, 27 Mar 2023 at 12:55, Nicholas Piggin <npiggin at gmail.com> wrote:
>
> Interrupt vectors were not being populated for all architected
> interrupt types, which could lead to crashes rather than a message for
> unhandled interrupts.
>
> 0x20 sized vectors require some reworking of the code to fit. This
> also adds support for HV / HSRR type interrupts which will be used in
> a later change.
>
> Signed-off-by: Nicholas Piggin <npiggin at gmail.com>
> ---
> powerpc/cstart64.S | 79 ++++++++++++++++++++++++++++++++++++++--------
> 1 file changed, 65 insertions(+), 14 deletions(-)
>
> diff --git a/powerpc/cstart64.S b/powerpc/cstart64.S
> +handler_trampoline:
> + mfctr r0
> + std r0,_CTR(r1)
> +
> + ld r0, P_HANDLER(0)
> + mtctr r0
> +
> + /* nip and msr */
> + mfsrr0 r0
I tried building the tests on a power8 box with binutils 2.34 and gas complains:
powerpc/cstart64.S: Assembler messages:
powerpc/cstart64.S:337: Error: unrecognized opcode: `mfhsrr0'
powerpc/cstart64.S:340: Error: unrecognized opcode: `mfhsrr1'
It appears this mnemonic is only supported for power10 (and were only
added in binutils 2.36):
$ git grep -i mfhsrr
opcodes/ppc-opc.c:{"mfhsrr0", XSPR(31,339,314), XSPR_MASK, POWER10,
EXT, {RS}},
opcodes/ppc-opc.c:{"mfhsrr1", XSPR(31,339,315), XSPR_MASK, POWER10,
EXT, {RS}},
I replaced it with mfspr and the tests ran fine:
@@ -334,10 +338,10 @@ handler_htrampoline:
mtctr r0
/* nip and msr */
- mfhsrr0 r0
+ mfspr r0, SPRN_HSRR0
std r0, _NIP(r1)
- mfhsrr1 r0
+ mfspr r0, SPRN_HSRR1
std r0, _MSR(r1)
Cheers,
Joel
More information about the Linuxppc-dev
mailing list