1 // SPDX-License-Identifier: LGPL-2.1
3 * trace/beauty/x86_msr.c
5 * Copyright (C) 2019, Red Hat Inc, Arnaldo Carvalho de Melo <acme@redhat.com>
8 #include "trace/beauty/beauty.h"
10 #include "trace/beauty/generated/x86_arch_MSRs_array.c"
12 static DEFINE_STRARRAY(x86_MSRs
, "MSR_");
13 static DEFINE_STRARRAY_OFFSET(x86_64_specific_MSRs
, "MSR_", x86_64_specific_MSRs_offset
);
14 static DEFINE_STRARRAY_OFFSET(x86_AMD_V_KVM_MSRs
, "MSR_", x86_AMD_V_KVM_MSRs_offset
);
16 static struct strarray
*x86_MSRs_tables
[] = {
18 &strarray__x86_64_specific_MSRs
,
19 &strarray__x86_AMD_V_KVM_MSRs
,
22 static DEFINE_STRARRAYS(x86_MSRs_tables
);
24 static size_t x86_MSR__scnprintf(unsigned long msr
, char *bf
, size_t size
, bool show_prefix
)
26 return strarrays__scnprintf(&strarrays__x86_MSRs_tables
, bf
, size
, "%#x", show_prefix
, msr
);
29 size_t syscall_arg__scnprintf_x86_MSR(char *bf
, size_t size
, struct syscall_arg
*arg
)
31 unsigned long flags
= arg
->val
;
33 return x86_MSR__scnprintf(flags
, bf
, size
, arg
->show_string_prefix
);
36 bool syscall_arg__strtoul_x86_MSR(char *bf
, size_t size
, struct syscall_arg
*arg __maybe_unused
, u64
*ret
)
38 return strarrays__strtoul(&strarrays__x86_MSRs_tables
, bf
, size
, ret
);