mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	riscv, libbpf: Add RISC-V (RV64) support to bpf_tracing.h
Add macros for 64-bit RISC-V PT_REGS to bpf_tracing.h. Signed-off-by: Björn Töpel <bjorn@kernel.org> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Link: https://lore.kernel.org/bpf/20211028161057.520552-4-bjorn@kernel.org
This commit is contained in:
		
							parent
							
								
									b390d69831
								
							
						
					
					
						commit
						589fed479b
					
				
					 1 changed files with 32 additions and 0 deletions
				
			
		| 
						 | 
					@ -24,6 +24,9 @@
 | 
				
			||||||
#elif defined(__TARGET_ARCH_sparc)
 | 
					#elif defined(__TARGET_ARCH_sparc)
 | 
				
			||||||
	#define bpf_target_sparc
 | 
						#define bpf_target_sparc
 | 
				
			||||||
	#define bpf_target_defined
 | 
						#define bpf_target_defined
 | 
				
			||||||
 | 
					#elif defined(__TARGET_ARCH_riscv)
 | 
				
			||||||
 | 
						#define bpf_target_riscv
 | 
				
			||||||
 | 
						#define bpf_target_defined
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Fall back to what the compiler says */
 | 
					/* Fall back to what the compiler says */
 | 
				
			||||||
| 
						 | 
					@ -48,6 +51,9 @@
 | 
				
			||||||
#elif defined(__sparc__)
 | 
					#elif defined(__sparc__)
 | 
				
			||||||
	#define bpf_target_sparc
 | 
						#define bpf_target_sparc
 | 
				
			||||||
	#define bpf_target_defined
 | 
						#define bpf_target_defined
 | 
				
			||||||
 | 
					#elif defined(__riscv) && __riscv_xlen == 64
 | 
				
			||||||
 | 
						#define bpf_target_riscv
 | 
				
			||||||
 | 
						#define bpf_target_defined
 | 
				
			||||||
#endif /* no compiler target */
 | 
					#endif /* no compiler target */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -288,6 +294,32 @@ struct pt_regs;
 | 
				
			||||||
#define PT_REGS_IP_CORE(x) BPF_CORE_READ((x), pc)
 | 
					#define PT_REGS_IP_CORE(x) BPF_CORE_READ((x), pc)
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#elif defined(bpf_target_riscv)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct pt_regs;
 | 
				
			||||||
 | 
					#define PT_REGS_RV const volatile struct user_regs_struct
 | 
				
			||||||
 | 
					#define PT_REGS_PARM1(x) (((PT_REGS_RV *)(x))->a0)
 | 
				
			||||||
 | 
					#define PT_REGS_PARM2(x) (((PT_REGS_RV *)(x))->a1)
 | 
				
			||||||
 | 
					#define PT_REGS_PARM3(x) (((PT_REGS_RV *)(x))->a2)
 | 
				
			||||||
 | 
					#define PT_REGS_PARM4(x) (((PT_REGS_RV *)(x))->a3)
 | 
				
			||||||
 | 
					#define PT_REGS_PARM5(x) (((PT_REGS_RV *)(x))->a4)
 | 
				
			||||||
 | 
					#define PT_REGS_RET(x) (((PT_REGS_RV *)(x))->ra)
 | 
				
			||||||
 | 
					#define PT_REGS_FP(x) (((PT_REGS_RV *)(x))->s5)
 | 
				
			||||||
 | 
					#define PT_REGS_RC(x) (((PT_REGS_RV *)(x))->a5)
 | 
				
			||||||
 | 
					#define PT_REGS_SP(x) (((PT_REGS_RV *)(x))->sp)
 | 
				
			||||||
 | 
					#define PT_REGS_IP(x) (((PT_REGS_RV *)(x))->epc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PT_REGS_PARM1_CORE(x) BPF_CORE_READ((PT_REGS_RV *)(x), a0)
 | 
				
			||||||
 | 
					#define PT_REGS_PARM2_CORE(x) BPF_CORE_READ((PT_REGS_RV *)(x), a1)
 | 
				
			||||||
 | 
					#define PT_REGS_PARM3_CORE(x) BPF_CORE_READ((PT_REGS_RV *)(x), a2)
 | 
				
			||||||
 | 
					#define PT_REGS_PARM4_CORE(x) BPF_CORE_READ((PT_REGS_RV *)(x), a3)
 | 
				
			||||||
 | 
					#define PT_REGS_PARM5_CORE(x) BPF_CORE_READ((PT_REGS_RV *)(x), a4)
 | 
				
			||||||
 | 
					#define PT_REGS_RET_CORE(x) BPF_CORE_READ((PT_REGS_RV *)(x), ra)
 | 
				
			||||||
 | 
					#define PT_REGS_FP_CORE(x) BPF_CORE_READ((PT_REGS_RV *)(x), fp)
 | 
				
			||||||
 | 
					#define PT_REGS_RC_CORE(x) BPF_CORE_READ((PT_REGS_RV *)(x), a5)
 | 
				
			||||||
 | 
					#define PT_REGS_SP_CORE(x) BPF_CORE_READ((PT_REGS_RV *)(x), sp)
 | 
				
			||||||
 | 
					#define PT_REGS_IP_CORE(x) BPF_CORE_READ((PT_REGS_RV *)(x), epc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(bpf_target_powerpc)
 | 
					#if defined(bpf_target_powerpc)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue