Re: [kvm-unit-tests PATCH v2 1/3] lib: s390x: add functions to set and clear PSW bits

Janosch Frank
2022-06-27T08:35:21Z

On 6/24/22 16:45, Claudio Imbrenda wrote:
> Add some functions to set and/or clear bits in the PSW.
> This should improve code readability.
>

Also we introduce PSW_MASK_KEY and re-order the PSW_MASK_* constants so
they are descending in value.

> Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
> ---
> lib/s390x/asm/arch_def.h | 58 +++++++++++++++++++++++++++++++++++-----
> lib/s390x/asm/pgtable.h | 2 --
> lib/s390x/mmu.c | 14 +---------
> lib/s390x/sclp.c | 7 +----
> s390x/diag288.c | 6 ++---
> s390x/selftest.c | 4 +--
> s390x/skrf.c | 12 +++------
> s390x/smp.c | 18 +++----------
> 8 files changed, 63 insertions(+), 58 deletions(-)
>
> diff --git a/lib/s390x/asm/arch_def.h b/lib/s390x/asm/arch_def.h
> index 78b257b7..b0052848 100644
> --- a/lib/s390x/asm/arch_def.h
> +++ b/lib/s390x/asm/arch_def.h
> @@ -46,9 +46,10 @@ struct psw {
> #define AS_SECN 2
> #define AS_HOME 3
>
> -#define PSW_MASK_EXT 0x0100000000000000UL
> -#define PSW_MASK_IO 0x0200000000000000UL
> #define PSW_MASK_DAT 0x0400000000000000UL
> +#define PSW_MASK_IO 0x0200000000000000UL
> +#define PSW_MASK_EXT 0x0100000000000000UL
> +#define PSW_MASK_KEY 0x00F0000000000000UL
> #define PSW_MASK_WAIT 0x0002000000000000UL
> #define PSW_MASK_PSTATE 0x0001000000000000UL
> #define PSW_MASK_EA 0x0000000100000000UL
> @@ -313,6 +314,53 @@ static inline void load_psw_mask(uint64_t mask)
> : "+r" (tmp) : "a" (&psw) : "memory", "cc" );
> }
>
> +/**
> + * psw_mask_set_clear_bits - sets and clears bits from the current PSW mask
> + * @clear: bitmask of bits that will be cleared
> + * @set: bitmask of bits that will be set
> + *
> + * Bits will be cleared first, and then set, so if (@clear & @set != 0) then
> + * the bits in the intersection will be set.
> + */
> +static inline void psw_mask_set_clear_bits(uint64_t clear, uint64_t set)

This function isn't used at all, no?