aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2021-10-20 22:42:05 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2021-10-22 23:31:16 +0000
commit362c6d8dec6dfbedc5717e45769042279a1dd3df (patch)
tree27250845f9ecd04be053f0f220f3d813d831ca8a
parent5fff2859ec5de6ed4bcf0c4df1ceabcf14ff72dd (diff)
downloadsrc-362c6d8dec6dfbedc5717e45769042279a1dd3df.tar.gz
src-362c6d8dec6dfbedc5717e45769042279a1dd3df.zip
nehemiah: manually assemble xstore(-rng)
It seems that clang IAS erronously adds repz prefix which should not be there. Cpu would try to store around %ecx bytes of random, while we only expect a word. PR: 259218 Reported and tested by: Dennis Clarke <dclarke@blastwave.org> Sponsored by: The FreeBSD Foundation MFC after: 1 week
-rw-r--r--sys/dev/random/nehemiah.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/dev/random/nehemiah.c b/sys/dev/random/nehemiah.c
index ba0dfb200ba0..3ad18005c935 100644
--- a/sys/dev/random/nehemiah.c
+++ b/sys/dev/random/nehemiah.c
@@ -68,7 +68,7 @@ VIA_RNG_store(void *buf)
#ifdef __GNUCLIKE_ASM
__asm __volatile(
"movl $0,%%edx\n\t"
- "xstore"
+ ".byte 0x0f, 0xa7, 0xc0"
: "=a" (retval), "+d" (rate), "+D" (buf)
:
: "memory"