Kernel: Don't read CR registers on every exception

This commit is contained in:
2026-06-26 01:39:57 +03:00
parent 59ec05c898
commit 2bb9b9b4b3
8 changed files with 94 additions and 33 deletions

View File

@@ -83,5 +83,6 @@ namespace CPUID
bool has_1gib_pages();
bool has_invariant_tsc();
uint64_t get_tsc_frequency();
bool has_kvm_pvclock();
}

View File

@@ -2,6 +2,7 @@
#include <BAN/UniqPtr.h>
#include <BAN/Vector.h>
#include <kernel/Memory/DMARegion.h>
#include <kernel/Timer/RTC.h>
#include <time.h>
@@ -69,12 +70,14 @@ namespace Kernel
void initialize_timers();
void initialize_invariant_tsc();
void initialize_pvclock();
private:
enum class TSCType
{
None,
Invariant,
PVClock,
};
uint64_t m_boot_time { 0 };
@@ -90,6 +93,7 @@ namespace Kernel
} invariant;
} m_tsc_info;
BAN::UniqPtr<DMARegion> m_tsc_page;
uint64_t m_tsc_update_ns { 0 };
};