From 2fb3f208bd2e739a8968afb23d22e13b6660ca22 Mon Sep 17 00:00:00 2001 From: Ada Christine Date: Fri, 31 Jan 2025 00:48:54 +0000 Subject: spread around defs, x86 asm and bits libs --- lib/asm/x86_64/msr.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 lib/asm/x86_64/msr.c (limited to 'lib/asm') diff --git a/lib/asm/x86_64/msr.c b/lib/asm/x86_64/msr.c new file mode 100644 index 0000000..2dfdc44 --- /dev/null +++ b/lib/asm/x86_64/msr.c @@ -0,0 +1,30 @@ +#include + +void msr_write(uint32_t index, uint64_t value) +{ + uint32_t low = value & 0xffffffff; + uint32_t high = value >> 32; + + __asm__ volatile + ( + "wrmsr\n\t" + : + : "a"(low), "d"(high), "c"(index) + ); +} + +uint64_t msr_read(uint32_t index) +{ + uint32_t low; + uint32_t high; + + __asm__ volatile + ( + "rdmsr\n\t" + : "=a"(low), "=d"(high) + : "c"(index) + ); + + return ((uint64_t)high << 32)|low; +} + -- cgit v1.3.1-1-g115d