163
163
164
164
struct pt_regs___s390 {
165
165
unsigned long orig_gpr2 ;
166
- };
166
+ } __attribute__(( preserve_access_index )) ;
167
167
168
168
/* s390 provides user_pt_regs instead of struct pt_regs to userspace */
169
169
#define __PT_REGS_CAST (x ) ((const user_pt_regs *)(x))
@@ -179,7 +179,7 @@ struct pt_regs___s390 {
179
179
#define __PT_PARM4_SYSCALL_REG __PT_PARM4_REG
180
180
#define __PT_PARM5_SYSCALL_REG __PT_PARM5_REG
181
181
#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 )
183
183
#define PT_REGS_PARM1_CORE_SYSCALL (x ) \
184
184
BPF_CORE_READ((const struct pt_regs___s390 *)(x), __PT_PARM1_SYSCALL_REG)
185
185
@@ -222,7 +222,7 @@ struct pt_regs___s390 {
222
222
223
223
struct pt_regs___arm64 {
224
224
unsigned long orig_x0 ;
225
- };
225
+ } __attribute__(( preserve_access_index )) ;
226
226
227
227
/* arm64 provides struct user_pt_regs instead of struct pt_regs to userspace */
228
228
#define __PT_REGS_CAST (x ) ((const struct user_pt_regs *)(x))
@@ -241,7 +241,7 @@ struct pt_regs___arm64 {
241
241
#define __PT_PARM4_SYSCALL_REG __PT_PARM4_REG
242
242
#define __PT_PARM5_SYSCALL_REG __PT_PARM5_REG
243
243
#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 )
245
245
#define PT_REGS_PARM1_CORE_SYSCALL (x ) \
246
246
BPF_CORE_READ((const struct pt_regs___arm64 *)(x), __PT_PARM1_SYSCALL_REG)
247
247
@@ -351,6 +351,10 @@ struct pt_regs___arm64 {
351
351
* https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/master/riscv-cc.adoc#risc-v-calling-conventions
352
352
*/
353
353
354
+ struct pt_regs___riscv {
355
+ unsigned long orig_a0 ;
356
+ } __attribute__((preserve_access_index ));
357
+
354
358
/* riscv provides struct user_regs_struct instead of struct pt_regs to userspace */
355
359
#define __PT_REGS_CAST (x ) ((const struct user_regs_struct *)(x))
356
360
#define __PT_PARM1_REG a0
@@ -362,12 +366,15 @@ struct pt_regs___arm64 {
362
366
#define __PT_PARM7_REG a6
363
367
#define __PT_PARM8_REG a7
364
368
365
- #define __PT_PARM1_SYSCALL_REG __PT_PARM1_REG
369
+ #define __PT_PARM1_SYSCALL_REG orig_a0
366
370
#define __PT_PARM2_SYSCALL_REG __PT_PARM2_REG
367
371
#define __PT_PARM3_SYSCALL_REG __PT_PARM3_REG
368
372
#define __PT_PARM4_SYSCALL_REG __PT_PARM4_REG
369
373
#define __PT_PARM5_SYSCALL_REG __PT_PARM5_REG
370
374
#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)
371
378
372
379
#define __PT_RET_REG ra
373
380
#define __PT_FP_REG s0
0 commit comments