summaryrefslogtreecommitdiff
path: root/kernel/src/drivers/tsc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/src/drivers/tsc.cpp')
-rw-r--r--kernel/src/drivers/tsc.cpp46
1 files changed, 0 insertions, 46 deletions
diff --git a/kernel/src/drivers/tsc.cpp b/kernel/src/drivers/tsc.cpp
deleted file mode 100644
index 0490ccd..0000000
--- a/kernel/src/drivers/tsc.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-
-#include <drivers/tsc.hpp>
-#include <drivers/hpet.hpp>
-#include <cstdint>
-
-#include <generic/time.hpp>
-
-#include <arch/x86_64/cpu/data.hpp>
-
-#include <etc/logging.hpp>
-
-#include <etc/assembly.hpp>
-
-using namespace drivers;
-
-std::uint64_t freq;
-
-void tsc::init() {
- std::uint64_t start = __rdtsc();
- time::sleep(100);
- std::uint64_t end = __rdtsc();
- std::uint64_t d = end - start;
- arch::x86_64::cpu::data()->tsc.freq = (d * 1000000ULL) / (100 * 1000ULL);
-}
-
-
-void tsc::sleep(std::uint64_t us) {
-
- if(arch::x86_64::cpu::data()->tsc.freq == 0) {
- drivers::hpet::sleep(us);
- return;
- }
-
- std::uint64_t current = currentnano();
- std::uint64_t end = us * 1000;
- while((currentnano() - current) < end);
- __nop();
-}
-
-std::uint64_t tsc::currentnano() {
- return (__rdtsc() * 1000000ULL) / arch::x86_64::cpu::data()->tsc.freq;
-}
-
-std::uint64_t tsc::currentus() {
- return currentnano() / 1000;
-} \ No newline at end of file