xref: /linux/tools/perf/util/perf-regs-arch/perf_regs_x86.c (revision a23e1966932464e1c5226cb9ac4ce1d5fc10ba22)
15000e7f6SLeo Yan // SPDX-License-Identifier: GPL-2.0
25000e7f6SLeo Yan 
35000e7f6SLeo Yan #include "../perf_regs.h"
45000e7f6SLeo Yan #include "../../../arch/x86/include/uapi/asm/perf_regs.h"
55000e7f6SLeo Yan 
__perf_reg_name_x86(int id)65000e7f6SLeo Yan const char *__perf_reg_name_x86(int id)
75000e7f6SLeo Yan {
85000e7f6SLeo Yan 	switch (id) {
95000e7f6SLeo Yan 	case PERF_REG_X86_AX:
105000e7f6SLeo Yan 		return "AX";
115000e7f6SLeo Yan 	case PERF_REG_X86_BX:
125000e7f6SLeo Yan 		return "BX";
135000e7f6SLeo Yan 	case PERF_REG_X86_CX:
145000e7f6SLeo Yan 		return "CX";
155000e7f6SLeo Yan 	case PERF_REG_X86_DX:
165000e7f6SLeo Yan 		return "DX";
175000e7f6SLeo Yan 	case PERF_REG_X86_SI:
185000e7f6SLeo Yan 		return "SI";
195000e7f6SLeo Yan 	case PERF_REG_X86_DI:
205000e7f6SLeo Yan 		return "DI";
215000e7f6SLeo Yan 	case PERF_REG_X86_BP:
225000e7f6SLeo Yan 		return "BP";
235000e7f6SLeo Yan 	case PERF_REG_X86_SP:
245000e7f6SLeo Yan 		return "SP";
255000e7f6SLeo Yan 	case PERF_REG_X86_IP:
265000e7f6SLeo Yan 		return "IP";
275000e7f6SLeo Yan 	case PERF_REG_X86_FLAGS:
285000e7f6SLeo Yan 		return "FLAGS";
295000e7f6SLeo Yan 	case PERF_REG_X86_CS:
305000e7f6SLeo Yan 		return "CS";
315000e7f6SLeo Yan 	case PERF_REG_X86_SS:
325000e7f6SLeo Yan 		return "SS";
335000e7f6SLeo Yan 	case PERF_REG_X86_DS:
345000e7f6SLeo Yan 		return "DS";
355000e7f6SLeo Yan 	case PERF_REG_X86_ES:
365000e7f6SLeo Yan 		return "ES";
375000e7f6SLeo Yan 	case PERF_REG_X86_FS:
385000e7f6SLeo Yan 		return "FS";
395000e7f6SLeo Yan 	case PERF_REG_X86_GS:
405000e7f6SLeo Yan 		return "GS";
415000e7f6SLeo Yan 	case PERF_REG_X86_R8:
425000e7f6SLeo Yan 		return "R8";
435000e7f6SLeo Yan 	case PERF_REG_X86_R9:
445000e7f6SLeo Yan 		return "R9";
455000e7f6SLeo Yan 	case PERF_REG_X86_R10:
465000e7f6SLeo Yan 		return "R10";
475000e7f6SLeo Yan 	case PERF_REG_X86_R11:
485000e7f6SLeo Yan 		return "R11";
495000e7f6SLeo Yan 	case PERF_REG_X86_R12:
505000e7f6SLeo Yan 		return "R12";
515000e7f6SLeo Yan 	case PERF_REG_X86_R13:
525000e7f6SLeo Yan 		return "R13";
535000e7f6SLeo Yan 	case PERF_REG_X86_R14:
545000e7f6SLeo Yan 		return "R14";
555000e7f6SLeo Yan 	case PERF_REG_X86_R15:
565000e7f6SLeo Yan 		return "R15";
575000e7f6SLeo Yan 
585000e7f6SLeo Yan #define XMM(x) \
595000e7f6SLeo Yan 	case PERF_REG_X86_XMM ## x:	\
605000e7f6SLeo Yan 	case PERF_REG_X86_XMM ## x + 1:	\
615000e7f6SLeo Yan 		return "XMM" #x;
625000e7f6SLeo Yan 	XMM(0)
635000e7f6SLeo Yan 	XMM(1)
645000e7f6SLeo Yan 	XMM(2)
655000e7f6SLeo Yan 	XMM(3)
665000e7f6SLeo Yan 	XMM(4)
675000e7f6SLeo Yan 	XMM(5)
685000e7f6SLeo Yan 	XMM(6)
695000e7f6SLeo Yan 	XMM(7)
705000e7f6SLeo Yan 	XMM(8)
715000e7f6SLeo Yan 	XMM(9)
725000e7f6SLeo Yan 	XMM(10)
735000e7f6SLeo Yan 	XMM(11)
745000e7f6SLeo Yan 	XMM(12)
755000e7f6SLeo Yan 	XMM(13)
765000e7f6SLeo Yan 	XMM(14)
775000e7f6SLeo Yan 	XMM(15)
785000e7f6SLeo Yan #undef XMM
795000e7f6SLeo Yan 	default:
805000e7f6SLeo Yan 		return NULL;
815000e7f6SLeo Yan 	}
825000e7f6SLeo Yan 
835000e7f6SLeo Yan 	return NULL;
845000e7f6SLeo Yan }
855000e7f6SLeo Yan 
__perf_reg_ip_x86(void)8634af56afSLeo Yan uint64_t __perf_reg_ip_x86(void)
8734af56afSLeo Yan {
8834af56afSLeo Yan 	return PERF_REG_X86_IP;
8934af56afSLeo Yan }
9034af56afSLeo Yan 
__perf_reg_sp_x86(void)9134af56afSLeo Yan uint64_t __perf_reg_sp_x86(void)
9234af56afSLeo Yan {
9334af56afSLeo Yan 	return PERF_REG_X86_SP;
9434af56afSLeo Yan }
95