122851890Sopenharmony_ci/**************************************************************************** 222851890Sopenharmony_ci **************************************************************************** 322851890Sopenharmony_ci *** 422851890Sopenharmony_ci *** This header was automatically generated from a Linux kernel header 522851890Sopenharmony_ci *** of the same name, to make information necessary for userspace to 622851890Sopenharmony_ci *** call into the kernel available to libc. It contains only constants, 722851890Sopenharmony_ci *** structures, and macros generated from the original header, and thus, 822851890Sopenharmony_ci *** contains no copyrightable information. 922851890Sopenharmony_ci *** 1022851890Sopenharmony_ci *** To edit the content of this header, modify the corresponding 1122851890Sopenharmony_ci *** source file (e.g. under external/kernel-headers/original/) then 1222851890Sopenharmony_ci *** run bionic/libc/kernel/tools/update_all.py 1322851890Sopenharmony_ci *** 1422851890Sopenharmony_ci *** Any manual change here will be lost the next time this script will 1522851890Sopenharmony_ci *** be run. You've been warned! 1622851890Sopenharmony_ci *** 1722851890Sopenharmony_ci **************************************************************************** 1822851890Sopenharmony_ci ****************************************************************************/ 1922851890Sopenharmony_ci#ifndef _UAPI__ASM_PTRACE_H 2022851890Sopenharmony_ci#define _UAPI__ASM_PTRACE_H 2122851890Sopenharmony_ci#include <linux/types.h> 2222851890Sopenharmony_ci#include <asm/hwcap.h> 2322851890Sopenharmony_ci#include <asm/sve_context.h> 2422851890Sopenharmony_ci#define PSR_MODE_EL0t 0x00000000 2522851890Sopenharmony_ci#define PSR_MODE_EL1t 0x00000004 2622851890Sopenharmony_ci#define PSR_MODE_EL1h 0x00000005 2722851890Sopenharmony_ci#define PSR_MODE_EL2t 0x00000008 2822851890Sopenharmony_ci#define PSR_MODE_EL2h 0x00000009 2922851890Sopenharmony_ci#define PSR_MODE_EL3t 0x0000000c 3022851890Sopenharmony_ci#define PSR_MODE_EL3h 0x0000000d 3122851890Sopenharmony_ci#define PSR_MODE_MASK 0x0000000f 3222851890Sopenharmony_ci#define PSR_MODE32_BIT 0x00000010 3322851890Sopenharmony_ci#define PSR_F_BIT 0x00000040 3422851890Sopenharmony_ci#define PSR_I_BIT 0x00000080 3522851890Sopenharmony_ci#define PSR_A_BIT 0x00000100 3622851890Sopenharmony_ci#define PSR_D_BIT 0x00000200 3722851890Sopenharmony_ci#define PSR_BTYPE_MASK 0x00000c00 3822851890Sopenharmony_ci#define PSR_SSBS_BIT 0x00001000 3922851890Sopenharmony_ci#define PSR_PAN_BIT 0x00400000 4022851890Sopenharmony_ci#define PSR_UAO_BIT 0x00800000 4122851890Sopenharmony_ci#define PSR_DIT_BIT 0x01000000 4222851890Sopenharmony_ci#define PSR_TCO_BIT 0x02000000 4322851890Sopenharmony_ci#define PSR_V_BIT 0x10000000 4422851890Sopenharmony_ci#define PSR_C_BIT 0x20000000 4522851890Sopenharmony_ci#define PSR_Z_BIT 0x40000000 4622851890Sopenharmony_ci#define PSR_N_BIT 0x80000000 4722851890Sopenharmony_ci#define PSR_BTYPE_SHIFT 10 4822851890Sopenharmony_ci#define PSR_f 0xff000000 4922851890Sopenharmony_ci#define PSR_s 0x00ff0000 5022851890Sopenharmony_ci#define PSR_x 0x0000ff00 5122851890Sopenharmony_ci#define PSR_c 0x000000ff 5222851890Sopenharmony_ci#define PSR_BTYPE_NONE (0b00 << PSR_BTYPE_SHIFT) 5322851890Sopenharmony_ci#define PSR_BTYPE_JC (0b01 << PSR_BTYPE_SHIFT) 5422851890Sopenharmony_ci#define PSR_BTYPE_C (0b10 << PSR_BTYPE_SHIFT) 5522851890Sopenharmony_ci#define PSR_BTYPE_J (0b11 << PSR_BTYPE_SHIFT) 5622851890Sopenharmony_ci#define PTRACE_SYSEMU 31 5722851890Sopenharmony_ci#define PTRACE_SYSEMU_SINGLESTEP 32 5822851890Sopenharmony_ci#define PTRACE_PEEKMTETAGS 33 5922851890Sopenharmony_ci#define PTRACE_POKEMTETAGS 34 6022851890Sopenharmony_ci#ifndef __ASSEMBLY__ 6122851890Sopenharmony_cistruct user_pt_regs { 6222851890Sopenharmony_ci __u64 regs[31]; 6322851890Sopenharmony_ci __u64 sp; 6422851890Sopenharmony_ci __u64 pc; 6522851890Sopenharmony_ci __u64 pstate; 6622851890Sopenharmony_ci}; 6722851890Sopenharmony_cistruct user_fpsimd_state { 6822851890Sopenharmony_ci __uint128_t vregs[32]; 6922851890Sopenharmony_ci __u32 fpsr; 7022851890Sopenharmony_ci __u32 fpcr; 7122851890Sopenharmony_ci __u32 __reserved[2]; 7222851890Sopenharmony_ci}; 7322851890Sopenharmony_cistruct user_hwdebug_state { 7422851890Sopenharmony_ci __u32 dbg_info; 7522851890Sopenharmony_ci __u32 pad; 7622851890Sopenharmony_ci struct { 7722851890Sopenharmony_ci __u64 addr; 7822851890Sopenharmony_ci __u32 ctrl; 7922851890Sopenharmony_ci __u32 pad; 8022851890Sopenharmony_ci } dbg_regs[16]; 8122851890Sopenharmony_ci}; 8222851890Sopenharmony_cistruct user_sve_header { 8322851890Sopenharmony_ci __u32 size; 8422851890Sopenharmony_ci __u32 max_size; 8522851890Sopenharmony_ci __u16 vl; 8622851890Sopenharmony_ci __u16 max_vl; 8722851890Sopenharmony_ci __u16 flags; 8822851890Sopenharmony_ci __u16 __reserved; 8922851890Sopenharmony_ci}; 9022851890Sopenharmony_ci#define SVE_PT_REGS_MASK (1 << 0) 9122851890Sopenharmony_ci#define SVE_PT_REGS_FPSIMD 0 9222851890Sopenharmony_ci#define SVE_PT_REGS_SVE SVE_PT_REGS_MASK 9322851890Sopenharmony_ci#define SVE_PT_VL_INHERIT ((1 << 17) >> 16) 9422851890Sopenharmony_ci#define SVE_PT_VL_ONEXEC ((1 << 18) >> 16) 9522851890Sopenharmony_ci#define SVE_PT_REGS_OFFSET ((sizeof(struct user_sve_header) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES) 9622851890Sopenharmony_ci#define SVE_PT_FPSIMD_OFFSET SVE_PT_REGS_OFFSET 9722851890Sopenharmony_ci#define SVE_PT_FPSIMD_SIZE(vq,flags) (sizeof(struct user_fpsimd_state)) 9822851890Sopenharmony_ci#define SVE_PT_SVE_ZREG_SIZE(vq) __SVE_ZREG_SIZE(vq) 9922851890Sopenharmony_ci#define SVE_PT_SVE_PREG_SIZE(vq) __SVE_PREG_SIZE(vq) 10022851890Sopenharmony_ci#define SVE_PT_SVE_FFR_SIZE(vq) __SVE_FFR_SIZE(vq) 10122851890Sopenharmony_ci#define SVE_PT_SVE_FPSR_SIZE sizeof(__u32) 10222851890Sopenharmony_ci#define SVE_PT_SVE_FPCR_SIZE sizeof(__u32) 10322851890Sopenharmony_ci#define SVE_PT_SVE_OFFSET SVE_PT_REGS_OFFSET 10422851890Sopenharmony_ci#define SVE_PT_SVE_ZREGS_OFFSET (SVE_PT_REGS_OFFSET + __SVE_ZREGS_OFFSET) 10522851890Sopenharmony_ci#define SVE_PT_SVE_ZREG_OFFSET(vq,n) (SVE_PT_REGS_OFFSET + __SVE_ZREG_OFFSET(vq, n)) 10622851890Sopenharmony_ci#define SVE_PT_SVE_ZREGS_SIZE(vq) (SVE_PT_SVE_ZREG_OFFSET(vq, __SVE_NUM_ZREGS) - SVE_PT_SVE_ZREGS_OFFSET) 10722851890Sopenharmony_ci#define SVE_PT_SVE_PREGS_OFFSET(vq) (SVE_PT_REGS_OFFSET + __SVE_PREGS_OFFSET(vq)) 10822851890Sopenharmony_ci#define SVE_PT_SVE_PREG_OFFSET(vq,n) (SVE_PT_REGS_OFFSET + __SVE_PREG_OFFSET(vq, n)) 10922851890Sopenharmony_ci#define SVE_PT_SVE_PREGS_SIZE(vq) (SVE_PT_SVE_PREG_OFFSET(vq, __SVE_NUM_PREGS) - SVE_PT_SVE_PREGS_OFFSET(vq)) 11022851890Sopenharmony_ci#define SVE_PT_SVE_FFR_OFFSET(vq) (SVE_PT_REGS_OFFSET + __SVE_FFR_OFFSET(vq)) 11122851890Sopenharmony_ci#define SVE_PT_SVE_FPSR_OFFSET(vq) ((SVE_PT_SVE_FFR_OFFSET(vq) + SVE_PT_SVE_FFR_SIZE(vq) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES) 11222851890Sopenharmony_ci#define SVE_PT_SVE_FPCR_OFFSET(vq) (SVE_PT_SVE_FPSR_OFFSET(vq) + SVE_PT_SVE_FPSR_SIZE) 11322851890Sopenharmony_ci#define SVE_PT_SVE_SIZE(vq,flags) ((SVE_PT_SVE_FPCR_OFFSET(vq) + SVE_PT_SVE_FPCR_SIZE - SVE_PT_SVE_OFFSET + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES) 11422851890Sopenharmony_ci#define SVE_PT_SIZE(vq,flags) (((flags) & SVE_PT_REGS_MASK) == SVE_PT_REGS_SVE ? SVE_PT_SVE_OFFSET + SVE_PT_SVE_SIZE(vq, flags) : SVE_PT_FPSIMD_OFFSET + SVE_PT_FPSIMD_SIZE(vq, flags)) 11522851890Sopenharmony_cistruct user_pac_mask { 11622851890Sopenharmony_ci __u64 data_mask; 11722851890Sopenharmony_ci __u64 insn_mask; 11822851890Sopenharmony_ci}; 11922851890Sopenharmony_cistruct user_pac_address_keys { 12022851890Sopenharmony_ci __uint128_t apiakey; 12122851890Sopenharmony_ci __uint128_t apibkey; 12222851890Sopenharmony_ci __uint128_t apdakey; 12322851890Sopenharmony_ci __uint128_t apdbkey; 12422851890Sopenharmony_ci}; 12522851890Sopenharmony_cistruct user_pac_generic_keys { 12622851890Sopenharmony_ci __uint128_t apgakey; 12722851890Sopenharmony_ci}; 12822851890Sopenharmony_ci#endif 12922851890Sopenharmony_ci#endif 130