1317021Sdim//===-- xray_powerpc64.inc --------------------------------------*- C++ -*-===// 2317021Sdim// 3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4353358Sdim// See https://llvm.org/LICENSE.txt for license information. 5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6317021Sdim// 7317021Sdim//===----------------------------------------------------------------------===// 8317021Sdim// 9317021Sdim// This file is a part of XRay, a dynamic runtime instrumentation system. 10317021Sdim// 11317021Sdim//===----------------------------------------------------------------------===// 12317021Sdim 13317021Sdim#include <cstdint> 14317021Sdim#include <mutex> 15317021Sdim#include <sys/platform/ppc.h> 16317021Sdim 17317021Sdim#include "xray_defs.h" 18317021Sdim 19317021Sdimnamespace __xray { 20317021Sdim 21317021SdimALWAYS_INLINE uint64_t readTSC(uint8_t &CPU) XRAY_NEVER_INSTRUMENT { 22317021Sdim CPU = 0; 23317021Sdim return __ppc_get_timebase(); 24317021Sdim} 25317021Sdim 26317021Sdiminline uint64_t getTSCFrequency() XRAY_NEVER_INSTRUMENT { 27317021Sdim static std::mutex M; 28317021Sdim std::lock_guard<std::mutex> Guard(M); 29317021Sdim return __ppc_get_timebase_freq(); 30317021Sdim} 31317021Sdim 32317021Sdiminline bool probeRequiredCPUFeatures() XRAY_NEVER_INSTRUMENT { 33317021Sdim return true; 34317021Sdim} 35317021Sdim 36317021Sdim} // namespace __xray 37