49 lines
		
	
	
	
		
			966 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			49 lines
		
	
	
	
		
			966 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
|   | 
 | ||
|  | #include <errno.h>
 | ||
|  | #include <libunwind.h>
 | ||
|  | #include "perf_regs.h"
 | ||
|  | #include "../../util/unwind.h"
 | ||
|  | 
 | ||
|  | int unwind__arch_reg_id(int regnum) | ||
|  | { | ||
|  | 	switch (regnum) { | ||
|  | 	case UNW_ARM_R0: | ||
|  | 		return PERF_REG_ARM_R0; | ||
|  | 	case UNW_ARM_R1: | ||
|  | 		return PERF_REG_ARM_R1; | ||
|  | 	case UNW_ARM_R2: | ||
|  | 		return PERF_REG_ARM_R2; | ||
|  | 	case UNW_ARM_R3: | ||
|  | 		return PERF_REG_ARM_R3; | ||
|  | 	case UNW_ARM_R4: | ||
|  | 		return PERF_REG_ARM_R4; | ||
|  | 	case UNW_ARM_R5: | ||
|  | 		return PERF_REG_ARM_R5; | ||
|  | 	case UNW_ARM_R6: | ||
|  | 		return PERF_REG_ARM_R6; | ||
|  | 	case UNW_ARM_R7: | ||
|  | 		return PERF_REG_ARM_R7; | ||
|  | 	case UNW_ARM_R8: | ||
|  | 		return PERF_REG_ARM_R8; | ||
|  | 	case UNW_ARM_R9: | ||
|  | 		return PERF_REG_ARM_R9; | ||
|  | 	case UNW_ARM_R10: | ||
|  | 		return PERF_REG_ARM_R10; | ||
|  | 	case UNW_ARM_R11: | ||
|  | 		return PERF_REG_ARM_FP; | ||
|  | 	case UNW_ARM_R12: | ||
|  | 		return PERF_REG_ARM_IP; | ||
|  | 	case UNW_ARM_R13: | ||
|  | 		return PERF_REG_ARM_SP; | ||
|  | 	case UNW_ARM_R14: | ||
|  | 		return PERF_REG_ARM_LR; | ||
|  | 	case UNW_ARM_R15: | ||
|  | 		return PERF_REG_ARM_PC; | ||
|  | 	default: | ||
|  | 		pr_err("unwind: invalid reg id %d\n", regnum); | ||
|  | 		return -EINVAL; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	return -EINVAL; | ||
|  | } |