git subrepo clone --branch=develop https://github.com/m4xw/emummc emummc
subrepo: subdir: "emummc" merged: "a9d569594" upstream: origin: "https://github.com/m4xw/emummc" branch: "develop" commit: "a9d569594" git-subrepo: version: "0.4.1" origin: "???" commit: "???"
This commit is contained in:
46
emummc/source/nx/counter.h
vendored
Normal file
46
emummc/source/nx/counter.h
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
/**
|
||||
* @file counter.h
|
||||
* @brief AArch64 system counter-timer.
|
||||
* @author fincs
|
||||
* @copyright libnx Authors
|
||||
*/
|
||||
#pragma once
|
||||
#include "../utils/types.h"
|
||||
|
||||
/**
|
||||
* @brief Gets the current system tick.
|
||||
* @return The current system tick.
|
||||
*/
|
||||
static inline u64 armGetSystemTick(void) {
|
||||
u64 ret;
|
||||
__asm__ __volatile__ ("mrs %x[data], cntpct_el0" : [data] "=r" (ret));
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Gets the system counter-timer frequency
|
||||
* @return The system counter-timer frequency, in Hz.
|
||||
*/
|
||||
static inline u64 armGetSystemTickFreq(void) {
|
||||
u64 ret;
|
||||
__asm__ ("mrs %x[data], cntfrq_el0" : [data] "=r" (ret));
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Converts from nanoseconds to CPU ticks unit.
|
||||
* @param ns Time in nanoseconds.
|
||||
* @return Time in CPU ticks.
|
||||
*/
|
||||
static inline u64 armNsToTicks(u64 ns) {
|
||||
return (ns * 12) / 625;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Converts from CPU ticks unit to nanoseconds.
|
||||
* @param tick Time in ticks.
|
||||
* @return Time in nanoseconds.
|
||||
*/
|
||||
static inline u64 armTicksToNs(u64 tick) {
|
||||
return (tick * 625) / 12;
|
||||
}
|
||||
Reference in New Issue
Block a user