summaryrefslogtreecommitdiff
path: root/simpleperf/perf_regs.h
diff options
context:
space:
mode:
authorYabin Cui <yabinc@google.com>2015-08-13 20:30:20 -0700
committerYabin Cui <yabinc@google.com>2015-09-23 19:44:05 -0700
commit3c8c21345478816dd0c70c096090b564c91bd9d2 (patch)
tree541b439ad845e2fa2d08681de96ce3501f5a694d /simpleperf/perf_regs.h
parent260e7e2c07b1738581c7f0620be6e674ec1a66d1 (diff)
downloadextras-3c8c21345478816dd0c70c096090b564c91bd9d2.tar.gz
Simpleperf: support dwarf callgraph in report command.
Use libbacktrace for stack unwinding. Bug: 22229391 Change-Id: Iab35cdb52936c65c4728e23423ded83050f1db76
Diffstat (limited to 'simpleperf/perf_regs.h')
-rw-r--r--simpleperf/perf_regs.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/simpleperf/perf_regs.h b/simpleperf/perf_regs.h
index 97e230fe..3834806f 100644
--- a/simpleperf/perf_regs.h
+++ b/simpleperf/perf_regs.h
@@ -31,6 +31,7 @@
#include <stdint.h>
#include <string>
+#include <vector>
enum ArchType {
ARCH_X86_32,
@@ -40,6 +41,20 @@ enum ArchType {
ARCH_UNSUPPORTED,
};
+constexpr ArchType GetBuildArch() {
+#if defined(__i386__)
+ return ARCH_X86_32;
+#elif defined(__x86_64__)
+ return ARCH_X86_64;
+#elif defined(__aarch64__)
+ return ARCH_ARM64;
+#elif defined(__arm__)
+ return ARCH_ARM;
+#else
+ return ARCH_UNSUPPORTED;
+#endif
+}
+
ArchType GetCurrentArch();
bool SetCurrentArch(const std::string& arch);
@@ -47,4 +62,14 @@ uint64_t GetSupportedRegMask();
std::string GetRegName(size_t reg);
+struct RegSet {
+ uint64_t valid_mask;
+ uint64_t data[64];
+};
+
+RegSet CreateRegSet(uint64_t valid_mask, const std::vector<uint64_t>& valid_regs);
+
+bool GetRegValue(const RegSet& regs, size_t regno, uint64_t* value);
+bool GetSpRegValue(const RegSet& regs, uint64_t* value);
+
#endif // SIMPLE_PERF_PERF_REGS_H_