[kvm-unit-tests PATCH 6/8] lib: s390x: Add PSW_MASK_64

Janosch Frank
2021-08-13T07:37:42Z

Let's replace the magic 0x0000000180000000ULL numeric constants with
PSW_MASK_64 as it's used more often since the introduction of smp and
sie.

Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
---
lib/s390x/asm/arch_def.h | 3 +++
lib/s390x/smp.c | 2 +-
s390x/mvpg-sie.c | 2 +-
s390x/sie.c | 2 +-
s390x/skrf.c | 6 +++---
5 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/lib/s390x/asm/arch_def.h b/lib/s390x/asm/arch_def.h
index 39c5ba99..245453c3 100644
--- a/lib/s390x/asm/arch_def.h
+++ b/lib/s390x/asm/arch_def.h
@@ -50,6 +50,9 @@ struct psw {
#define PSW_MASK_DAT 0x0400000000000000UL
#define PSW_MASK_WAIT 0x0002000000000000UL
#define PSW_MASK_PSTATE 0x0001000000000000UL
+#define PSW_MASK_EA 0x0000000100000000UL
+#define PSW_MASK_BA 0x0000000080000000UL
+#define PSW_MASK_64 PSW_MASK_BA | PSW_MASK_EA;

#define CR0_EXTM_SCLP 0x0000000000000200UL
#define CR0_EXTM_EXTC 0x0000000000002000UL
diff --git a/lib/s390x/smp.c b/lib/s390x/smp.c
index ee68d676..228fe667 100644
--- a/lib/s390x/smp.c
+++ b/lib/s390x/smp.c
@@ -202,7 +202,7 @@ int smp_cpu_setup(uint16_t addr, struct psw psw)
cpu->lowcore->sw_int_psw.addr = psw.addr;
cpu->lowcore->sw_int_grs[14] = psw.addr;
cpu->lowcore->sw_int_grs[15] = (uint64_t)cpu->stack + (PAGE_SIZE * 4);
- lc->restart_new_psw.mask = 0x0000000180000000UL;
+ lc->restart_new_psw.mask = PSW_MASK_64;
lc->restart_new_psw.addr = (uint64_t)smp_cpu_setup_state;
lc->sw_int_crs[0] = 0x0000000000040000UL;

diff --git a/s390x/mvpg-sie.c b/s390x/mvpg-sie.c
index 70d2fcfa..ccc273b4 100644
--- a/s390x/mvpg-sie.c
+++ b/s390x/mvpg-sie.c
@@ -100,7 +100,7 @@ static void setup_guest(void)
sie_guest_create(&vm, (uint64_t)guest, HPAGE_SIZE);

vm.sblk->gpsw.addr = PAGE_SIZE * 4;
- vm.sblk->gpsw.mask = 0x0000000180000000ULL;
+ vm.sblk->gpsw.mask = PSW_MASK_64;
vm.sblk->ictl = ICTL_OPEREXC | ICTL_PINT;
/* Enable MVPG interpretation as we want to test KVM and not ourselves */
vm.sblk->eca = ECA_MVPGI;
diff --git a/s390x/sie.c b/s390x/sie.c
index ed2c3263..87575b29 100644
--- a/s390x/sie.c
+++ b/s390x/sie.c
@@ -27,7 +27,7 @@ static struct vm vm;
static void test_diag(u32 instr)
{
vm.sblk->gpsw.addr = PAGE_SIZE * 2;
- vm.sblk->gpsw.mask = 0x0000000180000000ULL;
+ vm.sblk->gpsw.mask = PSW_MASK_64;

memset(guest_instr, 0, PAGE_SIZE);
memcpy(guest_instr, &instr, 4);
diff --git a/s390x/skrf.c b/s390x/skrf.c
index 94e906a6..9488c32b 100644
--- a/s390x/skrf.c
+++ b/s390x/skrf.c
@@ -125,15 +125,15 @@ static void ecall_cleanup(void)
{
struct lowcore *lc = (void *)0x0;

- lc->ext_new_psw.mask = 0x0000000180000000UL;
lc->sw_int_crs[0] = 0x0000000000040000;
+ lc->ext_new_psw.mask = PSW_MASK_64;

/*
* PGM old contains the ext new PSW, we need to clean it up,
* so we don't get a special operation exception on the lpswe
* of pgm old.
*/
- lc->pgm_old_psw.mask = 0x0000000180000000UL;
+ lc->pgm_old_psw.mask = PSW_MASK_64;

check_pgm_int_code(PGM_INT_CODE_SPECIFICATION);
set_flag(1);
@@ -148,7 +148,7 @@ static void ecall_setup(void)
register_pgm_cleanup_func(ecall_cleanup);
expect_pgm_int();
/* Put a skey into the ext new psw */
- lc->ext_new_psw.mask = 0x00F0000180000000UL;
+ lc->ext_new_psw.mask = 0x00F0000000000000UL | PSW_MASK_64;
/* Open up ext masks */
ctl_set_bit(0, CTL0_EXTERNAL_CALL);
mask = extract_psw_mask();
--
2.30.2