diff options
author | Yabin Cui <yabinc@google.com> | 2015-08-13 20:30:20 -0700 |
---|---|---|
committer | Yabin Cui <yabinc@google.com> | 2015-09-23 19:44:05 -0700 |
commit | 3c8c21345478816dd0c70c096090b564c91bd9d2 (patch) | |
tree | 541b439ad845e2fa2d08681de96ce3501f5a694d /simpleperf/perf_regs.h | |
parent | 260e7e2c07b1738581c7f0620be6e674ec1a66d1 (diff) | |
download | extras-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.h | 25 |
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_ |