diff options
author | Tim Shen <timshen91@gmail.com> | 2017-02-14 02:05:47 +0000 |
---|---|---|
committer | Tim Shen <timshen91@gmail.com> | 2017-02-14 02:05:47 +0000 |
commit | 79f4c392f64c85230ece1db3d25e3e0b19fdab3c (patch) | |
tree | 94002a0d296e7c70fad41b1be0798eccfb26e273 /lib/xray/xray_powerpc64.inc | |
parent | c57f0f5eb0d862ba58aebf682a32502a2706cbba (diff) |
Re-commit r294826 and r294781, with a fix on the cmake file to only
compile on powerpc64le.
I cannot locally reproduce this test failure:
http://lab.llvm.org:8011/builders/sanitizer-ppc64le-linux/builds/1363/steps/test%20standalone%20compiler-rt/logs/stdio
Let's see how the buildbot goes.
Differential Revision: https://reviews.llvm.org/D29742
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@295017 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..c1a1bac1a --- /dev/null +++ b/lib/xray/xray_powerpc64.inc @@ -0,0 +1,37 @@ +//===-- xray_powerpc64.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 |