diff options
author | Tim Shen <timshen91@gmail.com> | 2017-02-10 21:03:24 +0000 |
---|---|---|
committer | Tim Shen <timshen91@gmail.com> | 2017-02-10 21:03:24 +0000 |
commit | dcd2129395a26798874235314e60cafa1f14b3d2 (patch) | |
tree | eb086d6d5d7a62bf2e4200bd05d0859c193297b3 /lib/xray/xray_powerpc64.inc | |
parent | 324a908382143d80dae617cab136e3f303614ecb (diff) |
[XRay] Implement powerpc64le xray.
Summary:
powerpc64 big-endian is not supported, but I believe that most logic can
be shared, except for xray_powerpc64.cc.
Also add a function InvalidateInstructionCache to xray_util.h, which is
copied from llvm/Support/Memory.cpp. I'm not sure if I need to add a unittest,
and I don't know how.
Reviewers: dberris, echristo, iteratee, kbarton, hfinkel
Subscribers: mehdi_amini, nemanjai, mgorny, llvm-commits
Differential Revision: https://reviews.llvm.org/D29742
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@294781 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/xray/xray_powerpc64.inc')
-rw-r--r-- | lib/xray/xray_powerpc64.inc | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/xray/xray_powerpc64.inc b/lib/xray/xray_powerpc64.inc new file mode 100644 index 000000000..0ab382585 --- /dev/null +++ b/lib/xray/xray_powerpc64.inc @@ -0,0 +1,37 @@ +//===-- xray_x86_64.inc -----------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file is a part of XRay, a dynamic runtime instrumentation system. +// +//===----------------------------------------------------------------------===// + +#include <cstdint> +#include <mutex> +#include <sys/platform/ppc.h> + +#include "xray_defs.h" + +namespace __xray { + +ALWAYS_INLINE uint64_t readTSC(uint8_t &CPU) XRAY_NEVER_INSTRUMENT { + CPU = 0; + return __ppc_get_timebase(); +} + +inline uint64_t getTSCFrequency() XRAY_NEVER_INSTRUMENT { + static std::mutex M; + std::lock_guard<std::mutex> Guard(M); + return __ppc_get_timebase_freq(); +} + +inline bool probeRequiredCPUFeatures() XRAY_NEVER_INSTRUMENT { + return true; +} + +} // namespace __xray |