163163
164164struct pt_regs___s390 {
165165 unsigned long orig_gpr2 ;
166- };
166+ } __attribute__(( preserve_access_index )) ;
167167
168168/* s390 provides user_pt_regs instead of struct pt_regs to userspace */
169169#define __PT_REGS_CAST (x ) ((const user_pt_regs *)(x))
@@ -179,7 +179,7 @@ struct pt_regs___s390 {
179179#define __PT_PARM4_SYSCALL_REG __PT_PARM4_REG
180180#define __PT_PARM5_SYSCALL_REG __PT_PARM5_REG
181181#define __PT_PARM6_SYSCALL_REG gprs[7]
182- #define PT_REGS_PARM1_SYSCALL (x ) PT_REGS_PARM1_CORE_SYSCALL(x )
182+ #define PT_REGS_PARM1_SYSCALL (x ) (((const struct pt_regs___s390 *)(x))->__PT_PARM1_SYSCALL_REG )
183183#define PT_REGS_PARM1_CORE_SYSCALL (x ) \
184184 BPF_CORE_READ((const struct pt_regs___s390 *)(x), __PT_PARM1_SYSCALL_REG)
185185
@@ -222,7 +222,7 @@ struct pt_regs___s390 {
222222
223223struct pt_regs___arm64 {
224224 unsigned long orig_x0 ;
225- };
225+ } __attribute__(( preserve_access_index )) ;
226226
227227/* arm64 provides struct user_pt_regs instead of struct pt_regs to userspace */
228228#define __PT_REGS_CAST (x ) ((const struct user_pt_regs *)(x))
@@ -241,7 +241,7 @@ struct pt_regs___arm64 {
241241#define __PT_PARM4_SYSCALL_REG __PT_PARM4_REG
242242#define __PT_PARM5_SYSCALL_REG __PT_PARM5_REG
243243#define __PT_PARM6_SYSCALL_REG __PT_PARM6_REG
244- #define PT_REGS_PARM1_SYSCALL (x ) PT_REGS_PARM1_CORE_SYSCALL(x )
244+ #define PT_REGS_PARM1_SYSCALL (x ) (((const struct pt_regs___arm64 *)(x))->__PT_PARM1_SYSCALL_REG )
245245#define PT_REGS_PARM1_CORE_SYSCALL (x ) \
246246 BPF_CORE_READ((const struct pt_regs___arm64 *)(x), __PT_PARM1_SYSCALL_REG)
247247
@@ -351,6 +351,10 @@ struct pt_regs___arm64 {
351351 * https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/master/riscv-cc.adoc#risc-v-calling-conventions
352352 */
353353
354+ struct pt_regs___riscv {
355+ unsigned long orig_a0 ;
356+ } __attribute__((preserve_access_index ));
357+
354358/* riscv provides struct user_regs_struct instead of struct pt_regs to userspace */
355359#define __PT_REGS_CAST (x ) ((const struct user_regs_struct *)(x))
356360#define __PT_PARM1_REG a0
@@ -362,12 +366,15 @@ struct pt_regs___arm64 {
362366#define __PT_PARM7_REG a6
363367#define __PT_PARM8_REG a7
364368
365- #define __PT_PARM1_SYSCALL_REG __PT_PARM1_REG
369+ #define __PT_PARM1_SYSCALL_REG orig_a0
366370#define __PT_PARM2_SYSCALL_REG __PT_PARM2_REG
367371#define __PT_PARM3_SYSCALL_REG __PT_PARM3_REG
368372#define __PT_PARM4_SYSCALL_REG __PT_PARM4_REG
369373#define __PT_PARM5_SYSCALL_REG __PT_PARM5_REG
370374#define __PT_PARM6_SYSCALL_REG __PT_PARM6_REG
375+ #define PT_REGS_PARM1_SYSCALL (x ) (((const struct pt_regs___riscv *)(x))->__PT_PARM1_SYSCALL_REG)
376+ #define PT_REGS_PARM1_CORE_SYSCALL (x ) \
377+ BPF_CORE_READ((const struct pt_regs___riscv *)(x), __PT_PARM1_SYSCALL_REG)
371378
372379#define __PT_RET_REG ra
373380#define __PT_FP_REG s0
0 commit comments