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 */