summaryrefslogtreecommitdiff
path: root/kernel/arch/i386
diff options
context:
space:
mode:
authorAnton Kling <anton@kling.gg>2024-07-03 18:30:51 +0200
committerAnton Kling <anton@kling.gg>2024-07-03 18:30:51 +0200
commit4e7918753175dbd8fc38bc7c5b176517e1dbef2f (patch)
tree723b3b3503d7502f3ce5338aeb6964cb5fa4c246 /kernel/arch/i386
parent658c4e9645bf46268ed13bf5ef76d0ba60a347b9 (diff)
Kernel/Time: Improve time keeping
This makes use of TSC and now provides a file system interface for userland programs to change the system time.
Diffstat (limited to 'kernel/arch/i386')
-rw-r--r--kernel/arch/i386/asm_tsc.s8
-rw-r--r--kernel/arch/i386/tsc.h6
2 files changed, 8 insertions, 6 deletions
diff --git a/kernel/arch/i386/asm_tsc.s b/kernel/arch/i386/asm_tsc.s
index 963687e..5f9d858 100644
--- a/kernel/arch/i386/asm_tsc.s
+++ b/kernel/arch/i386/asm_tsc.s
@@ -1,17 +1,17 @@
.intel_syntax noprefix
-.global get_tsc
-.global get_hz
+.global tsc_get
+.global tsc_get_hz
# 1.193182 MHz
# So 0xFFFF is roughly 0.05492 seconds
# So take the result times 18 and you got your Hz
-get_tsc:
+tsc_get:
rdtsc
ret
-get_hz:
+tsc_get_hz:
cli
# Disable the gate for channel 2 so the clock can be set.
# This should only matter if the channel already has count
diff --git a/kernel/arch/i386/tsc.h b/kernel/arch/i386/tsc.h
index 2e29cf3..1a9e317 100644
--- a/kernel/arch/i386/tsc.h
+++ b/kernel/arch/i386/tsc.h
@@ -1,4 +1,6 @@
#include <typedefs.h>
-u64 get_tsc();
-u64 get_hz();
+void tsc_init(void);
+u64 tsc_get(void);
+u64 tsc_get_mhz(void);
+u64 tsc_calculate_ms(u64 tsc);