122851890Sopenharmony_ci/* 222851890Sopenharmony_ci * This header was generated from the Linux kernel headers by update_headers.py, 322851890Sopenharmony_ci * to provide necessary information from kernel to userspace, such as constants, 422851890Sopenharmony_ci * structures, and macros, and thus, contains no copyrightable information. 522851890Sopenharmony_ci */ 622851890Sopenharmony_ci#ifndef __ASM_PTRACE_H 722851890Sopenharmony_ci#define __ASM_PTRACE_H 822851890Sopenharmony_ci#include <linux/types.h> 922851890Sopenharmony_ci#include <asm/hwcap.h> 1022851890Sopenharmony_ci#include <asm/sigcontext.h> 1122851890Sopenharmony_ci#define PSR_MODE_EL0t 0x00000000 1222851890Sopenharmony_ci#define PSR_MODE_EL1t 0x00000004 1322851890Sopenharmony_ci#define PSR_MODE_EL1h 0x00000005 1422851890Sopenharmony_ci#define PSR_MODE_EL2t 0x00000008 1522851890Sopenharmony_ci#define PSR_MODE_EL2h 0x00000009 1622851890Sopenharmony_ci#define PSR_MODE_EL3t 0x0000000c 1722851890Sopenharmony_ci#define PSR_MODE_EL3h 0x0000000d 1822851890Sopenharmony_ci#define PSR_MODE_MASK 0x0000000f 1922851890Sopenharmony_ci#define PSR_MODE32_BIT 0x00000010 2022851890Sopenharmony_ci#define PSR_F_BIT 0x00000040 2122851890Sopenharmony_ci#define PSR_I_BIT 0x00000080 2222851890Sopenharmony_ci#define PSR_A_BIT 0x00000100 2322851890Sopenharmony_ci#define PSR_D_BIT 0x00000200 2422851890Sopenharmony_ci#define PSR_SSBS_BIT 0x00001000 2522851890Sopenharmony_ci#define PSR_PAN_BIT 0x00400000 2622851890Sopenharmony_ci#define PSR_UAO_BIT 0x00800000 2722851890Sopenharmony_ci#define PSR_DIT_BIT 0x01000000 2822851890Sopenharmony_ci#define PSR_V_BIT 0x10000000 2922851890Sopenharmony_ci#define PSR_C_BIT 0x20000000 3022851890Sopenharmony_ci#define PSR_Z_BIT 0x40000000 3122851890Sopenharmony_ci#define PSR_N_BIT 0x80000000 3222851890Sopenharmony_ci#define PSR_f 0xff000000 3322851890Sopenharmony_ci#define PSR_s 0x00ff0000 3422851890Sopenharmony_ci#define PSR_x 0x0000ff00 3522851890Sopenharmony_ci#define PSR_c 0x000000ff 3622851890Sopenharmony_ci#ifndef __ASSEMBLY__ 3722851890Sopenharmony_cistruct user_pt_regs { 3822851890Sopenharmony_ci __u64 regs[31]; 3922851890Sopenharmony_ci __u64 sp; 4022851890Sopenharmony_ci __u64 pc; 4122851890Sopenharmony_ci __u64 pstate; 4222851890Sopenharmony_ci}; 4322851890Sopenharmony_cistruct user_fpsimd_state { 4422851890Sopenharmony_ci __uint128_t vregs[32]; 4522851890Sopenharmony_ci __u32 fpsr; 4622851890Sopenharmony_ci __u32 fpcr; 4722851890Sopenharmony_ci __u32 __reserved[2]; 4822851890Sopenharmony_ci}; 4922851890Sopenharmony_cistruct user_hwdebug_state { 5022851890Sopenharmony_ci __u32 dbg_info; 5122851890Sopenharmony_ci __u32 pad; 5222851890Sopenharmony_ci struct { 5322851890Sopenharmony_ci __u64 addr; 5422851890Sopenharmony_ci __u32 ctrl; 5522851890Sopenharmony_ci __u32 pad; 5622851890Sopenharmony_ci } dbg_regs[16]; 5722851890Sopenharmony_ci}; 5822851890Sopenharmony_cistruct user_sve_header { 5922851890Sopenharmony_ci __u32 size; 6022851890Sopenharmony_ci __u32 max_size; 6122851890Sopenharmony_ci __u16 vl; 6222851890Sopenharmony_ci __u16 max_vl; 6322851890Sopenharmony_ci __u16 flags; 6422851890Sopenharmony_ci __u16 __reserved; 6522851890Sopenharmony_ci}; 6622851890Sopenharmony_ci#define SVE_PT_REGS_MASK (1 << 0) 6722851890Sopenharmony_ci#define SVE_PT_REGS_FPSIMD 0 6822851890Sopenharmony_ci#define SVE_PT_REGS_SVE SVE_PT_REGS_MASK 6922851890Sopenharmony_ci#define SVE_PT_VL_INHERIT ((1 << 17) >> 16) 7022851890Sopenharmony_ci#define SVE_PT_VL_ONEXEC ((1 << 18) >> 16) 7122851890Sopenharmony_ci#define SVE_PT_REGS_OFFSET \ 7222851890Sopenharmony_ci ((sizeof(struct user_sve_header) + (SVE_VQ_BYTES - 1)) \ 7322851890Sopenharmony_ci / SVE_VQ_BYTES * SVE_VQ_BYTES) 7422851890Sopenharmony_ci#define SVE_PT_FPSIMD_OFFSET SVE_PT_REGS_OFFSET 7522851890Sopenharmony_ci#define SVE_PT_FPSIMD_SIZE(vq, flags) (sizeof(struct user_fpsimd_state)) 7622851890Sopenharmony_ci#define SVE_PT_SVE_ZREG_SIZE(vq) SVE_SIG_ZREG_SIZE(vq) 7722851890Sopenharmony_ci#define SVE_PT_SVE_PREG_SIZE(vq) SVE_SIG_PREG_SIZE(vq) 7822851890Sopenharmony_ci#define SVE_PT_SVE_FFR_SIZE(vq) SVE_SIG_FFR_SIZE(vq) 7922851890Sopenharmony_ci#define SVE_PT_SVE_FPSR_SIZE sizeof(__u32) 8022851890Sopenharmony_ci#define SVE_PT_SVE_FPCR_SIZE sizeof(__u32) 8122851890Sopenharmony_ci#define __SVE_SIG_TO_PT(offset) \ 8222851890Sopenharmony_ci ((offset) - SVE_SIG_REGS_OFFSET + SVE_PT_REGS_OFFSET) 8322851890Sopenharmony_ci#define SVE_PT_SVE_OFFSET SVE_PT_REGS_OFFSET 8422851890Sopenharmony_ci#define SVE_PT_SVE_ZREGS_OFFSET \ 8522851890Sopenharmony_ci __SVE_SIG_TO_PT(SVE_SIG_ZREGS_OFFSET) 8622851890Sopenharmony_ci#define SVE_PT_SVE_ZREG_OFFSET(vq, n) \ 8722851890Sopenharmony_ci __SVE_SIG_TO_PT(SVE_SIG_ZREG_OFFSET(vq, n)) 8822851890Sopenharmony_ci#define SVE_PT_SVE_ZREGS_SIZE(vq) \ 8922851890Sopenharmony_ci (SVE_PT_SVE_ZREG_OFFSET(vq, SVE_NUM_ZREGS) - SVE_PT_SVE_ZREGS_OFFSET) 9022851890Sopenharmony_ci#define SVE_PT_SVE_PREGS_OFFSET(vq) \ 9122851890Sopenharmony_ci __SVE_SIG_TO_PT(SVE_SIG_PREGS_OFFSET(vq)) 9222851890Sopenharmony_ci#define SVE_PT_SVE_PREG_OFFSET(vq, n) \ 9322851890Sopenharmony_ci __SVE_SIG_TO_PT(SVE_SIG_PREG_OFFSET(vq, n)) 9422851890Sopenharmony_ci#define SVE_PT_SVE_PREGS_SIZE(vq) \ 9522851890Sopenharmony_ci (SVE_PT_SVE_PREG_OFFSET(vq, SVE_NUM_PREGS) - \ 9622851890Sopenharmony_ci SVE_PT_SVE_PREGS_OFFSET(vq)) 9722851890Sopenharmony_ci#define SVE_PT_SVE_FFR_OFFSET(vq) \ 9822851890Sopenharmony_ci __SVE_SIG_TO_PT(SVE_SIG_FFR_OFFSET(vq)) 9922851890Sopenharmony_ci#define SVE_PT_SVE_FPSR_OFFSET(vq) \ 10022851890Sopenharmony_ci ((SVE_PT_SVE_FFR_OFFSET(vq) + SVE_PT_SVE_FFR_SIZE(vq) + \ 10122851890Sopenharmony_ci (SVE_VQ_BYTES - 1)) \ 10222851890Sopenharmony_ci / SVE_VQ_BYTES * SVE_VQ_BYTES) 10322851890Sopenharmony_ci#define SVE_PT_SVE_FPCR_OFFSET(vq) \ 10422851890Sopenharmony_ci (SVE_PT_SVE_FPSR_OFFSET(vq) + SVE_PT_SVE_FPSR_SIZE) 10522851890Sopenharmony_ci#define SVE_PT_SVE_SIZE(vq, flags) \ 10622851890Sopenharmony_ci ((SVE_PT_SVE_FPCR_OFFSET(vq) + SVE_PT_SVE_FPCR_SIZE \ 10722851890Sopenharmony_ci - SVE_PT_SVE_OFFSET + (SVE_VQ_BYTES - 1)) \ 10822851890Sopenharmony_ci / SVE_VQ_BYTES * SVE_VQ_BYTES) 10922851890Sopenharmony_ci#define SVE_PT_SIZE(vq, flags) \ 11022851890Sopenharmony_ci (((flags) & SVE_PT_REGS_MASK) == SVE_PT_REGS_SVE ? \ 11122851890Sopenharmony_ci SVE_PT_SVE_OFFSET + SVE_PT_SVE_SIZE(vq, flags) \ 11222851890Sopenharmony_ci : SVE_PT_FPSIMD_OFFSET + SVE_PT_FPSIMD_SIZE(vq, flags)) 11322851890Sopenharmony_ci#endif 11422851890Sopenharmony_ci#endif 115