diff mbox series

[01/12] linux-user: elfload: Add more initial s390x PSW bits

Message ID 20230703155801.179167-2-iii@linux.ibm.com (mailing list archive)
State New, archived
Headers show
Series target/s390x: Miscellaneous TCG fixes | expand

Commit Message

Ilya Leoshkevich July 3, 2023, 3:50 p.m. UTC
Make the PSW look more similar to the real s390x userspace PSW.
Except for being there, the newly added bits should not affect the
userspace code execution.

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
---
 linux-user/elfload.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

David Hildenbrand July 4, 2023, 7:32 a.m. UTC | #1
On 03.07.23 17:50, Ilya Leoshkevich wrote:
> Make the PSW look more similar to the real s390x userspace PSW.
> Except for being there, the newly added bits should not affect the
> userspace code execution.

What's the purpose of this then? Required for follow-up patches?

> 
> Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
> ---
>   linux-user/elfload.c | 4 +++-
>   1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/linux-user/elfload.c b/linux-user/elfload.c
> index 6900974c373..7935110bff4 100644
> --- a/linux-user/elfload.c
> +++ b/linux-user/elfload.c
> @@ -1635,7 +1635,9 @@ const char *elf_hwcap_str(uint32_t bit)
>   static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop)
>   {
>       regs->psw.addr = infop->entry;
> -    regs->psw.mask = PSW_MASK_64 | PSW_MASK_32;
> +    regs->psw.mask = PSW_MASK_DAT | PSW_MASK_IO | PSW_MASK_EXT | \
> +                     PSW_MASK_MCHECK | PSW_MASK_PSTATE | PSW_MASK_64 | \
> +                     PSW_MASK_32;
>       regs->gprs[15] = infop->start_stack;
>   }
>
Ilya Leoshkevich July 4, 2023, 7:40 a.m. UTC | #2
On Tue, 2023-07-04 at 09:32 +0200, David Hildenbrand wrote:
> On 03.07.23 17:50, Ilya Leoshkevich wrote:
> > Make the PSW look more similar to the real s390x userspace PSW.
> > Except for being there, the newly added bits should not affect the
> > userspace code execution.
> 
> What's the purpose of this then? Required for follow-up patches?

That's required for the EPSW test.
I could, of course, mask out the bits that are not emulated in the
test, but I thought it was better to make the emulation closer to
reality, if only for cosmetic purposes.

[...]
David Hildenbrand July 4, 2023, 7:48 a.m. UTC | #3
On 04.07.23 09:40, Ilya Leoshkevich wrote:
> On Tue, 2023-07-04 at 09:32 +0200, David Hildenbrand wrote:
>> On 03.07.23 17:50, Ilya Leoshkevich wrote:
>>> Make the PSW look more similar to the real s390x userspace PSW.
>>> Except for being there, the newly added bits should not affect the
>>> userspace code execution.
>>
>> What's the purpose of this then? Required for follow-up patches?
> 
> That's required for the EPSW test.
> I could, of course, mask out the bits that are not emulated in the
> test, but I thought it was better to make the emulation closer to
> reality, if only for cosmetic purposes.

Thanks

Reviewed-by: David Hildenbrand <david@redhat.com>
diff mbox series

Patch

diff --git a/linux-user/elfload.c b/linux-user/elfload.c
index 6900974c373..7935110bff4 100644
--- a/linux-user/elfload.c
+++ b/linux-user/elfload.c
@@ -1635,7 +1635,9 @@  const char *elf_hwcap_str(uint32_t bit)
 static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop)
 {
     regs->psw.addr = infop->entry;
-    regs->psw.mask = PSW_MASK_64 | PSW_MASK_32;
+    regs->psw.mask = PSW_MASK_DAT | PSW_MASK_IO | PSW_MASK_EXT | \
+                     PSW_MASK_MCHECK | PSW_MASK_PSTATE | PSW_MASK_64 | \
+                     PSW_MASK_32;
     regs->gprs[15] = infop->start_stack;
 }