From b717387adb0c9197c70cd361e1d08a83e426f478 Mon Sep 17 00:00:00 2001 From: kamkow1 Date: Sat, 11 Oct 2025 21:36:33 +0200 Subject: [PATCH] Implement random number generation with x86 rdrand --- kernel/hal/hal.h | 1 + kernel/hal/x86_64/randnum.S | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 kernel/hal/x86_64/randnum.S diff --git a/kernel/hal/hal.h b/kernel/hal/hal.h index a4de5af..dd74a89 100644 --- a/kernel/hal/hal.h +++ b/kernel/hal/hal.h @@ -19,6 +19,7 @@ size_t hal_strspn(const char *s, const char *accept); char *hal_strcpy(char *dest, const char *src); char *hal_strchr(const char *s, int c); void hal_wait(uint32_t ms); +int32_t hal_randnum(void); #define HAL_PAGE_SIZE 0x1000 #include "x86_64/vmm.h" diff --git a/kernel/hal/x86_64/randnum.S b/kernel/hal/x86_64/randnum.S new file mode 100644 index 0000000..6f74c1d --- /dev/null +++ b/kernel/hal/x86_64/randnum.S @@ -0,0 +1,13 @@ +.global hal_randnum +hal_randnum: + mov $100, %ecx + xor %eax, %eax + +.retry: + rdrand %eax + jc .done + loop .retry +.fail: + mov $-1, %eax +.done: + ret