 89fe808ae7
			
		
	
	
	89fe808ae7
	
	
	
		
			
			Standardize all the feature flags based on the HAVE_{FEATURE}_SUPPORT naming convention:
		HAVE_ARCH_X86_64_SUPPORT
		HAVE_BACKTRACE_SUPPORT
		HAVE_CPLUS_DEMANGLE_SUPPORT
		HAVE_DWARF_SUPPORT
		HAVE_ELF_GETPHDRNUM_SUPPORT
		HAVE_GTK2_SUPPORT
		HAVE_GTK_INFO_BAR_SUPPORT
		HAVE_LIBAUDIT_SUPPORT
		HAVE_LIBELF_MMAP_SUPPORT
		HAVE_LIBELF_SUPPORT
		HAVE_LIBNUMA_SUPPORT
		HAVE_LIBUNWIND_SUPPORT
		HAVE_ON_EXIT_SUPPORT
		HAVE_PERF_REGS_SUPPORT
		HAVE_SLANG_SUPPORT
		HAVE_STRLCPY_SUPPORT
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Link: http://lkml.kernel.org/n/tip-u3zvqejddfZhtrbYbfhi3spa@git.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
		
	
			
		
			
				
	
	
		
			111 lines
		
	
	
	
		
			1.9 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
	
		
			1.9 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| 
 | |
| #include <errno.h>
 | |
| #include <libunwind.h>
 | |
| #include "perf_regs.h"
 | |
| #include "../../util/unwind.h"
 | |
| 
 | |
| #ifdef HAVE_ARCH_X86_64_SUPPORT
 | |
| int unwind__arch_reg_id(int regnum)
 | |
| {
 | |
| 	int id;
 | |
| 
 | |
| 	switch (regnum) {
 | |
| 	case UNW_X86_64_RAX:
 | |
| 		id = PERF_REG_X86_AX;
 | |
| 		break;
 | |
| 	case UNW_X86_64_RDX:
 | |
| 		id = PERF_REG_X86_DX;
 | |
| 		break;
 | |
| 	case UNW_X86_64_RCX:
 | |
| 		id = PERF_REG_X86_CX;
 | |
| 		break;
 | |
| 	case UNW_X86_64_RBX:
 | |
| 		id = PERF_REG_X86_BX;
 | |
| 		break;
 | |
| 	case UNW_X86_64_RSI:
 | |
| 		id = PERF_REG_X86_SI;
 | |
| 		break;
 | |
| 	case UNW_X86_64_RDI:
 | |
| 		id = PERF_REG_X86_DI;
 | |
| 		break;
 | |
| 	case UNW_X86_64_RBP:
 | |
| 		id = PERF_REG_X86_BP;
 | |
| 		break;
 | |
| 	case UNW_X86_64_RSP:
 | |
| 		id = PERF_REG_X86_SP;
 | |
| 		break;
 | |
| 	case UNW_X86_64_R8:
 | |
| 		id = PERF_REG_X86_R8;
 | |
| 		break;
 | |
| 	case UNW_X86_64_R9:
 | |
| 		id = PERF_REG_X86_R9;
 | |
| 		break;
 | |
| 	case UNW_X86_64_R10:
 | |
| 		id = PERF_REG_X86_R10;
 | |
| 		break;
 | |
| 	case UNW_X86_64_R11:
 | |
| 		id = PERF_REG_X86_R11;
 | |
| 		break;
 | |
| 	case UNW_X86_64_R12:
 | |
| 		id = PERF_REG_X86_R12;
 | |
| 		break;
 | |
| 	case UNW_X86_64_R13:
 | |
| 		id = PERF_REG_X86_R13;
 | |
| 		break;
 | |
| 	case UNW_X86_64_R14:
 | |
| 		id = PERF_REG_X86_R14;
 | |
| 		break;
 | |
| 	case UNW_X86_64_R15:
 | |
| 		id = PERF_REG_X86_R15;
 | |
| 		break;
 | |
| 	case UNW_X86_64_RIP:
 | |
| 		id = PERF_REG_X86_IP;
 | |
| 		break;
 | |
| 	default:
 | |
| 		pr_err("unwind: invalid reg id %d\n", regnum);
 | |
| 		return -EINVAL;
 | |
| 	}
 | |
| 
 | |
| 	return id;
 | |
| }
 | |
| #else
 | |
| int unwind__arch_reg_id(int regnum)
 | |
| {
 | |
| 	int id;
 | |
| 
 | |
| 	switch (regnum) {
 | |
| 	case UNW_X86_EAX:
 | |
| 		id = PERF_REG_X86_AX;
 | |
| 		break;
 | |
| 	case UNW_X86_EDX:
 | |
| 		id = PERF_REG_X86_DX;
 | |
| 		break;
 | |
| 	case UNW_X86_ECX:
 | |
| 		id = PERF_REG_X86_CX;
 | |
| 		break;
 | |
| 	case UNW_X86_EBX:
 | |
| 		id = PERF_REG_X86_BX;
 | |
| 		break;
 | |
| 	case UNW_X86_ESI:
 | |
| 		id = PERF_REG_X86_SI;
 | |
| 		break;
 | |
| 	case UNW_X86_EDI:
 | |
| 		id = PERF_REG_X86_DI;
 | |
| 		break;
 | |
| 	case UNW_X86_EBP:
 | |
| 		id = PERF_REG_X86_BP;
 | |
| 		break;
 | |
| 	case UNW_X86_ESP:
 | |
| 		id = PERF_REG_X86_SP;
 | |
| 		break;
 | |
| 	case UNW_X86_EIP:
 | |
| 		id = PERF_REG_X86_IP;
 | |
| 		break;
 | |
| 	default:
 | |
| 		pr_err("unwind: invalid reg id %d\n", regnum);
 | |
| 		return -EINVAL;
 | |
| 	}
 | |
| 
 | |
| 	return id;
 | |
| }
 | |
| #endif /* HAVE_ARCH_X86_64_SUPPORT */
 |