浏览代码

Kernel: Add helpers for rdrand and rdseed

Idan Horowitz 3 年之前
父节点
当前提交
a9764dabee
共有 1 个文件被更改,包括 22 次插入0 次删除
  1. 22 0
      Kernel/Arch/x86/ASM_wrapper.h

+ 22 - 0
Kernel/Arch/x86/ASM_wrapper.h

@@ -160,6 +160,28 @@ ALWAYS_INLINE u64 read_tsc()
     return ((u64)msw << 32) | lsw;
 }
 
+ALWAYS_INLINE u32 rdrand()
+{
+    u32 value;
+    asm volatile(
+        "1:\n"
+        "rdrand %0\n"
+        "jnc 1b\n"
+        : "=r"(value)::"cc");
+    return value;
+}
+
+ALWAYS_INLINE u32 rdseed()
+{
+    u32 value;
+    asm volatile(
+        "1:\n"
+        "rdseed %0\n"
+        "jnc 1b\n"
+        : "=r"(value)::"cc");
+    return value;
+}
+
 void stac();
 void clac();