xref: /openbmc/qemu/linux-user/include/host/arm/host-signal.h (revision c8c89a6a30be0e6f24e6a56d4ef181ec0e4dd064)
105a24871SPaolo Bonzini /*
205a24871SPaolo Bonzini  * host-signal.h: signal info dependent on the host architecture
305a24871SPaolo Bonzini  *
405a24871SPaolo Bonzini  * Copyright (c) 2003-2005 Fabrice Bellard
505a24871SPaolo Bonzini  * Copyright (c) 2021 Linaro Limited
605a24871SPaolo Bonzini  *
705a24871SPaolo Bonzini  * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
805a24871SPaolo Bonzini  * See the COPYING file in the top-level directory.
905a24871SPaolo Bonzini  */
1005a24871SPaolo Bonzini 
1105a24871SPaolo Bonzini #ifndef ARM_HOST_SIGNAL_H
1205a24871SPaolo Bonzini #define ARM_HOST_SIGNAL_H
1305a24871SPaolo Bonzini 
1405a24871SPaolo Bonzini static inline uintptr_t host_signal_pc(ucontext_t *uc)
1505a24871SPaolo Bonzini {
1605a24871SPaolo Bonzini     return uc->uc_mcontext.arm_pc;
1705a24871SPaolo Bonzini }
1805a24871SPaolo Bonzini 
1905a24871SPaolo Bonzini static inline void host_signal_set_pc(ucontext_t *uc, uintptr_t pc)
2005a24871SPaolo Bonzini {
2105a24871SPaolo Bonzini     uc->uc_mcontext.arm_pc = pc;
2205a24871SPaolo Bonzini }
2305a24871SPaolo Bonzini 
24*c8c89a6aSRichard Henderson static inline void *host_signal_mask(ucontext_t *uc)
25*c8c89a6aSRichard Henderson {
26*c8c89a6aSRichard Henderson     return &uc->uc_sigmask;
27*c8c89a6aSRichard Henderson }
28*c8c89a6aSRichard Henderson 
2905a24871SPaolo Bonzini static inline bool host_signal_write(siginfo_t *info, ucontext_t *uc)
3005a24871SPaolo Bonzini {
3105a24871SPaolo Bonzini     /*
3205a24871SPaolo Bonzini      * In the FSR, bit 11 is WnR, assuming a v6 or
3305a24871SPaolo Bonzini      * later processor.  On v5 we will always report
3405a24871SPaolo Bonzini      * this as a read, which will fail later.
3505a24871SPaolo Bonzini      */
3605a24871SPaolo Bonzini     uint32_t fsr = uc->uc_mcontext.error_code;
3705a24871SPaolo Bonzini     return extract32(fsr, 11, 1);
3805a24871SPaolo Bonzini }
3905a24871SPaolo Bonzini 
4005a24871SPaolo Bonzini #endif
41