f431855714
target/arm/sme: Rebuild hflags in aarch64_set_svcr()
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Fabiano Rosas <farosas@suse.de >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-id: 20230112102436.1913-7-philmd@linaro.org
Message-Id: <20230112004322.161330-1-richard.henderson@linaro.org >
[PMD: Split patch in multiple tiny steps]
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2023-01-23 13:32:38 +00:00
7f2a01e736
target/arm/sme: Reset SVE state in aarch64_set_svcr()
...
Move arm_reset_sve_state() calls to aarch64_set_svcr().
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Fabiano Rosas <farosas@suse.de >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-id: 20230112102436.1913-5-philmd@linaro.org
Message-Id: <20230112004322.161330-1-richard.henderson@linaro.org >
[PMD: Split patch in multiple tiny steps]
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2023-01-23 13:32:38 +00:00
2a8af38259
target/arm/sme: Introduce aarch64_set_svcr()
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Fabiano Rosas <farosas@suse.de >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-id: 20230112102436.1913-4-philmd@linaro.org
Message-Id: <20230112004322.161330-1-richard.henderson@linaro.org >
[PMD: Split patch in multiple tiny steps]
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2023-01-23 13:32:38 +00:00
78fd56ba13
linux-user/aarch64: Implement SME signal handling
...
Set the SM bit in the SVE record on signal delivery, create the ZA record.
Restore SM and ZA state according to the records present on return.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20220708151540.18136-41-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2022-07-11 13:43:52 +01:00
d3b4f7170f
linux-user/aarch64: Move sve record checks into restore
...
Move the checks out of the parsing loop and into the
restore function. This more closely mirrors the code
structure in the kernel, and is slightly clearer.
Reject rather than silently skip incorrect VL and SVE record sizes,
bringing our checks in to line with those the kernel does.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20220708151540.18136-40-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2022-07-11 13:43:51 +01:00
8e5e19ee41
linux-user/aarch64: Verify extra record lock succeeded
...
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20220708151540.18136-39-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2022-07-11 13:43:51 +01:00
affb1a50b9
linux-user/aarch64: Do not allow duplicate or short sve records
...
In parse_user_sigframe, the kernel rejects duplicate sve records,
or records that are smaller than the header. We were silently
allowing these cases to pass, dropping the record.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20220708151540.18136-38-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2022-07-11 13:43:51 +01:00
5726597c3b
linux-user/aarch64: Tidy target_restore_sigframe error return
...
Fold the return value setting into the goto, so each
point of failure need not do both.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20220708151540.18136-37-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2022-07-11 13:43:51 +01:00
4a29c36316
linux-user/aarch64: Add SM bit to SVE signal context
...
Make sure to zero the currently reserved fields.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20220708151540.18136-36-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2022-07-11 13:43:51 +01:00
8b599e5c02
linux-user/aarch64: Introduce sve_vq
...
Add an interface function to extract the digested vector length
rather than the raw zcr_el[1] value. This fixes an incorrect
return from do_prctl_set_vl where we didn't take into account
the set of vector lengths supported by the cpu.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20220607203306.657998-3-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2022-06-08 19:38:55 +01:00
ee3eb3a7ce
Replace TARGET_WORDS_BIGENDIAN
...
Convert the TARGET_WORDS_BIGENDIAN macro, similarly to what was done
with HOST_BIG_ENDIAN. The new TARGET_BIG_ENDIAN macro is either 0 or 1,
and thus should always be defined to prevent misuse.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Suggested-by: Halil Pasic <pasic@linux.ibm.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220323155743.1585078-8-marcandre.lureau@redhat.com >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2022-04-06 10:50:37 +02:00
57a0c9384c
linux-user: Rename TARGET_QEMU_ESIGRETURN to QEMU_ESIGRETURN
...
This value is fully internal to qemu, and so is not a TARGET define.
Reviewed-by: Warner Losh <imp@bsdimp.com >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-12-19 20:47:33 -08:00
c70887a382
linux-user/aarch64: Implement setup_sigtramp
...
Create and record the rt signal trampoline.
Use it when the guest does not use SA_RESTORER.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210929130553.121567-3-richard.henderson@linaro.org >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-10-01 12:03:48 +02:00
3b249d2661
linux-user: Split linux-user internals out of qemu.h
...
qemu.h is included in various non-linux-user files (which
mostly want the TaskState struct and the functions for
doing usermode access to guest addresses like lock_user(),
unlock_user(), get_user*(), etc).
Split out the parts that are only used in linux-user itself
into a new user-internals.h. This leaves qemu.h with basically
three things:
* the definition of the TaskState struct
* the user-access functions and macros
* do_brk()
all of which are needed by code outside linux-user that
includes qemu.h.
The addition of all the extra #include lines was done with
sed -i '/include.*qemu\.h/a #include "user-internals.h"' $(git grep -l 'include.*qemu\.h' linux-user)
(and then undoing the change to fpa11.h).
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210908154405.15417-8-peter.maydell@linaro.org >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-09-13 20:35:45 +02:00
ddc3e74d9c
linux-user: Pass CPUArchState to target_restore_altstack
...
In most cases we were already passing get_sp_from_cpustate
directly to the function. In other cases, we were passing
a local variable which already contained the same value.
In the rest of the cases, we were passing the stack pointer
out of env directly.
Reviewed by: Warner Losh <imp@bsdimp.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210426025334.1168495-5-richard.henderson@linaro.org >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-15 21:43:23 +02:00
56384cf3ad
linux-user: Use target_restore_altstack in all sigreturn
...
Note that target_restore_altstack uses the host memory
pointer that we have already verified, so TARGET_EFAULT
is not a possible return value.
Note that using -EFAULT was a bug.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210426025334.1168495-3-richard.henderson@linaro.org >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-15 21:43:23 +02:00
0b6a03c044
linux-user/aarch64: Reset btype for signals
...
The kernel sets btype for the signal handler as if for a call.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20201021173749.111103-2-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2020-10-27 10:44:02 +00:00
6f9ff551a4
linux-user/: fix some comment spelling errors
...
I found that there are many spelling errors in the comments of qemu,
so I used the spellcheck tool to check the spelling errors
and finally found some spelling errors in the linux-user folder.
Signed-off-by: zhaolichang <zhaolichang@huawei.com >
Reviewed-by: Alex Bennee <alex.bennee@linaro.org >
Message-Id: <20200917075029.313-7-zhaolichang@huawei.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2020-09-17 20:39:22 +02:00
2fc0cc0e1e
target/arm: Use env_cpu, env_archcpu
...
Cleanup in the boilerplate that each target must define.
Replace arm_env_get_cpu with env_archcpu. The combination
CPU(arm_env_get_cpu) should have used ENV_GET_CPU to begin;
use env_cpu now.
Reviewed-by: Alistair Francis <alistair.francis@wdc.com >
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2019-06-10 07:03:34 -07:00
cd208a1c39
target/arm: Convert sve from feature bit to aa64pfr0 test
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20181016223115.24100-8-richard.henderson@linaro.org
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2018-10-24 07:51:29 +01:00
9850f9f63a
linux-user: move get_sp_from_cpustate() to target_cpu.h
...
Remove useless includes
Fix HPPA include guard.
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
Acked-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20180529194207.31503-9-laurent@vivier.eu >
2018-06-04 01:30:44 +02:00
465e237bf7
linux-user: introduce target_sigsp() and target_save_altstack()
...
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20180411192347.30228-1-laurent@vivier.eu >
2018-05-03 18:29:15 +02:00
f0352f13fe
linux-user: move aarch64 signal.c parts to aarch64 directory
...
No code change, only move code from signal.c to
aarch64/signal.c, except adding includes and
exporting setup_frame() and setup_rt_frame().
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20180424192635.6027-3-laurent@vivier.eu >
2018-04-30 09:47:47 +02:00
befb7447a0
linux-user: create a dummy per arch signal.c
...
Create a signal-common.h for future use by these new files
and use it in the existing signal.c
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20180424192635.6027-2-laurent@vivier.eu >
2018-04-30 09:47:47 +02:00