From ba7c2996d55a18b849361f9aaefd8058d8fc70da Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Wed, 26 Oct 2022 22:45:09 -0400 Subject: [PATCH] Add MSR_EFER and rdmsr() --- src/hulk/cpu.d | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/hulk/cpu.d b/src/hulk/cpu.d index 023adda..fa4d27c 100644 --- a/src/hulk/cpu.d +++ b/src/hulk/cpu.d @@ -5,6 +5,8 @@ module hulk.cpu; import ldc.llvmasm; +enum uint MSR_EFER = 0xC000_0080u; + void cli() { __asm("cli", ""); @@ -45,6 +47,14 @@ ulong read_cr4() return __asm!ulong("mov %cr4, %rax", "={rax}"); } +ulong rdmsr(uint msr) +{ + return __asm!ulong(` + rdmsr + shl $$32, %rdx + or %rdx, %rax`, "={rax},{ecx},~{rdx}", msr); +} + ubyte in8(ushort ioaddr) { return __asm!ubyte("inb %dx, %al", "={al},{dx}", ioaddr);