162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Author: Hanlu Li <lihanlu@loongson.cn> 462306a36Sopenharmony_ci * Huacai Chen <chenhuacai@loongson.cn> 562306a36Sopenharmony_ci * 662306a36Sopenharmony_ci * Copyright (C) 2020-2022 Loongson Technology Corporation Limited 762306a36Sopenharmony_ci */ 862306a36Sopenharmony_ci#ifndef _UAPI_ASM_PTRACE_H 962306a36Sopenharmony_ci#define _UAPI_ASM_PTRACE_H 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#include <linux/types.h> 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci#ifndef __KERNEL__ 1462306a36Sopenharmony_ci#include <stdint.h> 1562306a36Sopenharmony_ci#endif 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci/* 1862306a36Sopenharmony_ci * For PTRACE_{POKE,PEEK}USR. 0 - 31 are GPRs, 1962306a36Sopenharmony_ci * 32 is syscall's original ARG0, 33 is PC, 34 is BADVADDR. 2062306a36Sopenharmony_ci */ 2162306a36Sopenharmony_ci#define GPR_BASE 0 2262306a36Sopenharmony_ci#define GPR_NUM 32 2362306a36Sopenharmony_ci#define GPR_END (GPR_BASE + GPR_NUM - 1) 2462306a36Sopenharmony_ci#define ARG0 (GPR_END + 1) 2562306a36Sopenharmony_ci#define PC (GPR_END + 2) 2662306a36Sopenharmony_ci#define BADVADDR (GPR_END + 3) 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci#define NUM_FPU_REGS 32 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_cistruct user_pt_regs { 3162306a36Sopenharmony_ci /* Main processor registers. */ 3262306a36Sopenharmony_ci unsigned long regs[32]; 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci /* Original syscall arg0. */ 3562306a36Sopenharmony_ci unsigned long orig_a0; 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci /* Special CSR registers. */ 3862306a36Sopenharmony_ci unsigned long csr_era; 3962306a36Sopenharmony_ci unsigned long csr_badv; 4062306a36Sopenharmony_ci unsigned long reserved[10]; 4162306a36Sopenharmony_ci} __attribute__((aligned(8))); 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_cistruct user_fp_state { 4462306a36Sopenharmony_ci uint64_t fpr[32]; 4562306a36Sopenharmony_ci uint64_t fcc; 4662306a36Sopenharmony_ci uint32_t fcsr; 4762306a36Sopenharmony_ci}; 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_cistruct user_lsx_state { 5062306a36Sopenharmony_ci /* 32 registers, 128 bits width per register. */ 5162306a36Sopenharmony_ci uint64_t vregs[32*2]; 5262306a36Sopenharmony_ci}; 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_cistruct user_lasx_state { 5562306a36Sopenharmony_ci /* 32 registers, 256 bits width per register. */ 5662306a36Sopenharmony_ci uint64_t vregs[32*4]; 5762306a36Sopenharmony_ci}; 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_cistruct user_lbt_state { 6062306a36Sopenharmony_ci uint64_t scr[4]; 6162306a36Sopenharmony_ci uint32_t eflags; 6262306a36Sopenharmony_ci uint32_t ftop; 6362306a36Sopenharmony_ci}; 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_cistruct user_watch_state { 6662306a36Sopenharmony_ci uint64_t dbg_info; 6762306a36Sopenharmony_ci struct { 6862306a36Sopenharmony_ci uint64_t addr; 6962306a36Sopenharmony_ci uint64_t mask; 7062306a36Sopenharmony_ci uint32_t ctrl; 7162306a36Sopenharmony_ci uint32_t pad; 7262306a36Sopenharmony_ci } dbg_regs[8]; 7362306a36Sopenharmony_ci}; 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_ci#define PTRACE_SYSEMU 0x1f 7662306a36Sopenharmony_ci#define PTRACE_SYSEMU_SINGLESTEP 0x20 7762306a36Sopenharmony_ci 7862306a36Sopenharmony_ci#endif /* _UAPI_ASM_PTRACE_H */ 79