On Tue, 2025-10-14 at 18:05 +0200, Ilya Leoshkevich wrote:
> Add a small test to prevent regressions.
> 
> Signed-off-by: Ilya Leoshkevich <[email protected]>
> ---
>  tests/tcg/s390x/Makefile.softmmu-target |  1 +
>  tests/tcg/s390x/sckc.S                  | 53
> +++++++++++++++++++++++++
>  2 files changed, 54 insertions(+)
>  create mode 100644 tests/tcg/s390x/sckc.S

[...]

> diff --git a/tests/tcg/s390x/sckc.S b/tests/tcg/s390x/sckc.S
> new file mode 100644
> index 00000000000..0fadec0dd65
> --- /dev/null
> +++ b/tests/tcg/s390x/sckc.S
> @@ -0,0 +1,53 @@
> +/*
> + * Test clock comparator.
> + *
> + * SPDX-License-Identifier: GPL-2.0-or-later
> + */
> +    .org 0x130
> +ext_old_psw:
> +    .org 0x1b0
> +ext_new_psw:
> +    .quad 0x180000000, _ext            /* 64-bit mode */
> +    .org 0x200                         /* lowcore padding */
> +
> +    .globl _start
> +_start:
> +    lpswe start31_psw
> +_start31:
> +    stctg %c0,%c0,c0
> +    oi c0+6,8                          /* set clock-comparator
> subclass mask */
> +    lctlg %c0,%c0,c0
> +0:
> +    cghsi ext_counter,0x1000
> +    jnz 0b

It's better to move this check to the interrupt handler, otherwise
there is a risk we get two interrupts and the counter moves from
0xfff to 0x1001, causing an infinite loop. I will fix this in v2.

> +    lpswe success_psw
> +
> +_ext:
> +    stg %r0,ext_saved_r0
> +
> +    lg %r0,ext_counter
> +    aghi %r0,1
> +    stg %r0,ext_counter

[...]

Reply via email to