Browse Source
KVM vector support for RISC-V requires the linux-header ptrace.h. Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Acked-by: Alistair Francis <alistair.francis@wdc.com> Message-ID: <20231218204321.75757-3-dbarboza@ventanamicro.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>coverity
committed by
Alistair Francis
2 changed files with 135 additions and 0 deletions
@ -0,0 +1,132 @@ |
|||
/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ |
|||
/*
|
|||
* Copyright (C) 2012 Regents of the University of California |
|||
*/ |
|||
|
|||
#ifndef _ASM_RISCV_PTRACE_H |
|||
#define _ASM_RISCV_PTRACE_H |
|||
|
|||
#ifndef __ASSEMBLY__ |
|||
|
|||
#include <linux/types.h> |
|||
|
|||
#define PTRACE_GETFDPIC 33 |
|||
|
|||
#define PTRACE_GETFDPIC_EXEC 0 |
|||
#define PTRACE_GETFDPIC_INTERP 1 |
|||
|
|||
/*
|
|||
* User-mode register state for core dumps, ptrace, sigcontext |
|||
* |
|||
* This decouples struct pt_regs from the userspace ABI. |
|||
* struct user_regs_struct must form a prefix of struct pt_regs. |
|||
*/ |
|||
struct user_regs_struct { |
|||
unsigned long pc; |
|||
unsigned long ra; |
|||
unsigned long sp; |
|||
unsigned long gp; |
|||
unsigned long tp; |
|||
unsigned long t0; |
|||
unsigned long t1; |
|||
unsigned long t2; |
|||
unsigned long s0; |
|||
unsigned long s1; |
|||
unsigned long a0; |
|||
unsigned long a1; |
|||
unsigned long a2; |
|||
unsigned long a3; |
|||
unsigned long a4; |
|||
unsigned long a5; |
|||
unsigned long a6; |
|||
unsigned long a7; |
|||
unsigned long s2; |
|||
unsigned long s3; |
|||
unsigned long s4; |
|||
unsigned long s5; |
|||
unsigned long s6; |
|||
unsigned long s7; |
|||
unsigned long s8; |
|||
unsigned long s9; |
|||
unsigned long s10; |
|||
unsigned long s11; |
|||
unsigned long t3; |
|||
unsigned long t4; |
|||
unsigned long t5; |
|||
unsigned long t6; |
|||
}; |
|||
|
|||
struct __riscv_f_ext_state { |
|||
__u32 f[32]; |
|||
__u32 fcsr; |
|||
}; |
|||
|
|||
struct __riscv_d_ext_state { |
|||
__u64 f[32]; |
|||
__u32 fcsr; |
|||
}; |
|||
|
|||
struct __riscv_q_ext_state { |
|||
__u64 f[64] __attribute__((aligned(16))); |
|||
__u32 fcsr; |
|||
/*
|
|||
* Reserved for expansion of sigcontext structure. Currently zeroed |
|||
* upon signal, and must be zero upon sigreturn. |
|||
*/ |
|||
__u32 reserved[3]; |
|||
}; |
|||
|
|||
struct __riscv_ctx_hdr { |
|||
__u32 magic; |
|||
__u32 size; |
|||
}; |
|||
|
|||
struct __riscv_extra_ext_header { |
|||
__u32 __padding[129] __attribute__((aligned(16))); |
|||
/*
|
|||
* Reserved for expansion of sigcontext structure. Currently zeroed |
|||
* upon signal, and must be zero upon sigreturn. |
|||
*/ |
|||
__u32 reserved; |
|||
struct __riscv_ctx_hdr hdr; |
|||
}; |
|||
|
|||
union __riscv_fp_state { |
|||
struct __riscv_f_ext_state f; |
|||
struct __riscv_d_ext_state d; |
|||
struct __riscv_q_ext_state q; |
|||
}; |
|||
|
|||
struct __riscv_v_ext_state { |
|||
unsigned long vstart; |
|||
unsigned long vl; |
|||
unsigned long vtype; |
|||
unsigned long vcsr; |
|||
unsigned long vlenb; |
|||
void *datap; |
|||
/*
|
|||
* In signal handler, datap will be set a correct user stack offset |
|||
* and vector registers will be copied to the address of datap |
|||
* pointer. |
|||
*/ |
|||
}; |
|||
|
|||
struct __riscv_v_regset_state { |
|||
unsigned long vstart; |
|||
unsigned long vl; |
|||
unsigned long vtype; |
|||
unsigned long vcsr; |
|||
unsigned long vlenb; |
|||
char vreg[]; |
|||
}; |
|||
|
|||
/*
|
|||
* According to spec: The number of bits in a single vector register, |
|||
* VLEN >= ELEN, which must be a power of 2, and must be no greater than |
|||
* 2^16 = 65536bits = 8192bytes |
|||
*/ |
|||
#define RISCV_MAX_VLENB (8192) |
|||
|
|||
#endif /* __ASSEMBLY__ */ |
|||
|
|||
#endif /* _ASM_RISCV_PTRACE_H */ |
|||
Loading…
Reference in new issue