Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/amd64 Add a "version" field in the prekern_args str...
details: https://anonhg.NetBSD.org/src/rev/fe93dc492b50
branches: trunk
changeset: 991845:fe93dc492b50
user: maxv <maxv%NetBSD.org@localhost>
date: Thu Aug 02 17:18:00 2018 +0000
description:
Add a "version" field in the prekern_args structure. The kernel checks it,
and if it's not happy it returns back to the prekern.
diffstat:
sys/arch/amd64/amd64/prekern.c | 11 +++++++++--
sys/arch/amd64/stand/prekern/prekern.c | 10 +++++++---
2 files changed, 16 insertions(+), 5 deletions(-)
diffs (78 lines):
diff -r bbe5cb8a4a11 -r fe93dc492b50 sys/arch/amd64/amd64/prekern.c
--- a/sys/arch/amd64/amd64/prekern.c Thu Aug 02 16:58:00 2018 +0000
+++ b/sys/arch/amd64/amd64/prekern.c Thu Aug 02 17:18:00 2018 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: prekern.c,v 1.2 2018/08/02 16:58:00 maxv Exp $ */
+/* $NetBSD: prekern.c,v 1.3 2018/08/02 17:18:00 maxv Exp $ */
/*
* Copyright (c) 2017 The NetBSD Foundation, Inc. All rights reserved.
@@ -46,7 +46,10 @@
#include <dev/isa/isareg.h>
#include <machine/isa_machdep.h>
+#define PREKERN_API_VERSION 1
+
struct prekern_args {
+ int version;
int boothowto;
void *bootinfo;
void *bootspace;
@@ -122,6 +125,10 @@
{
paddr_t first_avail;
+ if (pkargs->version != PREKERN_API_VERSION) {
+ return -1;
+ }
+
prekern_copy_args(pkargs);
first_avail = pkargs->first_avail;
@@ -134,5 +141,5 @@
panic("main returned");
- return -1;
+ return 0;
}
diff -r bbe5cb8a4a11 -r fe93dc492b50 sys/arch/amd64/stand/prekern/prekern.c
--- a/sys/arch/amd64/stand/prekern/prekern.c Thu Aug 02 16:58:00 2018 +0000
+++ b/sys/arch/amd64/stand/prekern/prekern.c Thu Aug 02 17:18:00 2018 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: prekern.c,v 1.8 2018/05/25 15:52:11 maxv Exp $ */
+/* $NetBSD: prekern.c,v 1.9 2018/08/02 17:18:00 maxv Exp $ */
/*
* Copyright (c) 2017 The NetBSD Foundation, Inc. All rights reserved.
@@ -221,7 +221,10 @@
/* -------------------------------------------------------------------------- */
+#define PREKERN_API_VERSION 1
+
struct prekern_args {
+ int version;
int boothowto;
void *bootinfo;
void *bootspace;
@@ -253,6 +256,7 @@
extern paddr_t pa_avail;
memset(&pkargs, 0, sizeof(pkargs));
+ pkargs.version = PREKERN_API_VERSION;
pkargs.boothowto = boothowto;
pkargs.bootinfo = (void *)&bootinfo;
pkargs.bootspace = &bootspace;
@@ -285,9 +289,9 @@
ret = (*jumpfunc)(&pkargs);
if (ret == -1) {
- fatal("kernel returned -1");
+ fatal("kernel returned: wrong API version");
} else {
- fatal("kernel returned unknown value");
+ fatal("kernel returned: unknown value");
}
}
Home |
Main Index |
Thread Index |
Old Index