aboutsummaryrefslogtreecommitdiff
path: root/tests/tcg/s390x/lpsw.S
blob: b37dec59b7340302919e9962990b88c2c980d29f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/*
 * Test the LPSW instruction.
 *
 * SPDX-License-Identifier: GPL-2.0-or-later
 */
    .org 0x140
svc_old_psw:
    .org 0x1c0                         /* supervisor call new PSW */
    .quad 0x80000000,svc               /* 31-bit mode */
    .org 0x200                         /* lowcore padding */

    .globl _start
_start:
    lpsw short_psw
lpsw_target:
    svc 0
expected_pswa:
    j failure

svc:
    clc svc_old_psw(16),expected_psw   /* correct full PSW? */
    jne failure
    lpswe success_psw
failure:
    lpswe failure_psw

    .align 8
short_psw:
    .long 0x90001,0x80000000+lpsw_target         /* problem state,
                                                    64-bit mode */
expected_psw:
    .quad 0x1000180000000,expected_pswa          /* corresponds to short_psw */
success_psw:
    .quad 0x2000000000000,0xfff        /* see is_special_wait_psw() */
failure_psw:
    .quad 0x2000000000000,0            /* disabled wait */