Module Name:    src
Committed By:   maxv
Date:           Fri Nov 10 08:05:38 UTC 2017

Modified Files:
        src/sys/arch/amd64/stand/prekern: locore.S prekern.h

Log Message:
Add cpuid and rdseed.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/amd64/stand/prekern/locore.S
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/amd64/stand/prekern/prekern.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/amd64/stand/prekern/locore.S
diff -u src/sys/arch/amd64/stand/prekern/locore.S:1.3 src/sys/arch/amd64/stand/prekern/locore.S:1.4
--- src/sys/arch/amd64/stand/prekern/locore.S:1.3	Sun Oct 29 11:28:30 2017
+++ src/sys/arch/amd64/stand/prekern/locore.S	Fri Nov 10 08:05:38 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.S,v 1.3 2017/10/29 11:28:30 maxv Exp $	*/
+/*	$NetBSD: locore.S,v 1.4 2017/11/10 08:05:38 maxv Exp $	*/
 
 /*
  * Copyright (c) 1998, 2000, 2007, 2008, 2016, 2017 The NetBSD Foundation, Inc.
@@ -583,9 +583,24 @@ END(start)
 
 /* -------------------------------------------------------------------------- */
 
+ENTRY(cpuid)
+	movq	%rbx,%r8
+	movq	%rdi,%rax
+	movq	%rsi,%rcx
+	movq	%rdx,%rsi
+	cpuid
+	movl	%eax,0(%rsi)
+	movl	%ebx,4(%rsi)
+	movl	%ecx,8(%rsi)
+	movl	%edx,12(%rsi)
+	movq	%r8,%rbx
+	ret
+END(cpuid)
+
 ENTRY(lidt)
 	lidt	(%rdi)
 	ret
+END(lidt)
 
 ENTRY(rdtsc)
 	xorq	%rax,%rax
@@ -593,9 +608,21 @@ ENTRY(rdtsc)
 	shlq	$32,%rdx
 	orq	%rdx,%rax
 	ret
+END(rdtsc)
+
+ENTRY(rdseed)
+	rdseed	%rax
+	jc	.Lsuccess
+	movq	$(-1),%rax
+	ret
+.Lsuccess:
+	movq	%rax,(%rdi)
+	xorq	%rax,%rax
+	ret
+END(rdseed)
 
 ENTRY(jump_kernel)
 	movq	_C_LABEL(stkva),%rsp
 	movq	$exec_kernel,%rax
 	jmpq	*%rax
-
+END(jump_kernel)

Index: src/sys/arch/amd64/stand/prekern/prekern.h
diff -u src/sys/arch/amd64/stand/prekern/prekern.h:1.6 src/sys/arch/amd64/stand/prekern/prekern.h:1.7
--- src/sys/arch/amd64/stand/prekern/prekern.h:1.6	Thu Nov  9 15:56:56 2017
+++ src/sys/arch/amd64/stand/prekern/prekern.h	Fri Nov 10 08:05:38 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: prekern.h,v 1.6 2017/11/09 15:56:56 maxv Exp $	*/
+/*	$NetBSD: prekern.h,v 1.7 2017/11/10 08:05:38 maxv Exp $	*/
 
 /*
  * Copyright (c) 2017 The NetBSD Foundation, Inc. All rights reserved.
@@ -144,8 +144,10 @@ void elf_build_boot(vaddr_t, paddr_t);
 vaddr_t elf_kernel_reloc();
 
 /* locore.S */
+void cpuid(uint32_t, uint32_t, uint32_t *);
 void lidt(void *);
 uint64_t rdtsc();
+int rdseed(uint64_t *);
 void jump_kernel();
 
 /* mm.c */

Reply via email to