1d9c52522SMasahiro Yamada /* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ 2e2c0cdfbSPalmer Dabbelt /* 3e2c0cdfbSPalmer Dabbelt * Copyright (C) 2012 ARM Ltd. 4e2c0cdfbSPalmer Dabbelt * Copyright (C) 2017 SiFive, Inc. 5e2c0cdfbSPalmer Dabbelt * 6e2c0cdfbSPalmer Dabbelt * This file was copied from arch/arm64/include/uapi/asm/ucontext.h 7e2c0cdfbSPalmer Dabbelt */ 86b57ba8eSZong Li #ifndef _UAPI_ASM_RISCV_UCONTEXT_H 96b57ba8eSZong Li #define _UAPI_ASM_RISCV_UCONTEXT_H 10e2c0cdfbSPalmer Dabbelt 11e2c0cdfbSPalmer Dabbelt #include <linux/types.h> 12e2c0cdfbSPalmer Dabbelt 13e2c0cdfbSPalmer Dabbelt struct ucontext { 14e2c0cdfbSPalmer Dabbelt unsigned long uc_flags; 15e2c0cdfbSPalmer Dabbelt struct ucontext *uc_link; 16e2c0cdfbSPalmer Dabbelt stack_t uc_stack; 17e2c0cdfbSPalmer Dabbelt sigset_t uc_sigmask; 18*3558927fSCleo John /* 19*3558927fSCleo John * There's some padding here to allow sigset_t to be expanded in the 20e2c0cdfbSPalmer Dabbelt * future. Though this is unlikely, other architectures put uc_sigmask 21e2c0cdfbSPalmer Dabbelt * at the end of this structure and explicitly state it can be 22*3558927fSCleo John * expanded, so we didn't want to box ourselves in here. 23*3558927fSCleo John */ 24e2c0cdfbSPalmer Dabbelt __u8 __unused[1024 / 8 - sizeof(sigset_t)]; 25*3558927fSCleo John /* 26*3558927fSCleo John * We can't put uc_sigmask at the end of this structure because we need 27e2c0cdfbSPalmer Dabbelt * to be able to expand sigcontext in the future. For example, the 28e2c0cdfbSPalmer Dabbelt * vector ISA extension will almost certainly add ISA state. We want 29e2c0cdfbSPalmer Dabbelt * to ensure all user-visible ISA state can be saved and restored via a 30e2c0cdfbSPalmer Dabbelt * ucontext, so we're putting this at the end in order to allow for 31e2c0cdfbSPalmer Dabbelt * infinite extensibility. Since we know this will be extended and we 32e2c0cdfbSPalmer Dabbelt * assume sigset_t won't be extended an extreme amount, we're 33*3558927fSCleo John * prioritizing this. 34*3558927fSCleo John */ 35e2c0cdfbSPalmer Dabbelt struct sigcontext uc_mcontext; 36e2c0cdfbSPalmer Dabbelt }; 37e2c0cdfbSPalmer Dabbelt 386b57ba8eSZong Li #endif /* _UAPI_ASM_RISCV_UCONTEXT_H */ 39