Module Name: src
Committed By: nonaka
Date: Sat Apr 29 00:05:36 UTC 2017
Modified Files:
src/sys/arch/i386/stand/efiboot: Makefile.efiboot
src/sys/arch/i386/stand/efiboot/bootia32: efibootia32.c start.S
src/sys/arch/i386/stand/efiboot/bootx64: efibootx64.c start.S
src/sys/sys: bootblock.h
Log Message:
efiboot: Boot parameters can be set via installboot(8).
To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/i386/stand/efiboot/Makefile.efiboot
cvs rdiff -u -r1.2 -r1.3 \
src/sys/arch/i386/stand/efiboot/bootia32/efibootia32.c
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/i386/stand/efiboot/bootia32/start.S
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/i386/stand/efiboot/bootx64/efibootx64.c
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/i386/stand/efiboot/bootx64/start.S
cvs rdiff -u -r1.57 -r1.58 src/sys/sys/bootblock.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/i386/stand/efiboot/Makefile.efiboot
diff -u src/sys/arch/i386/stand/efiboot/Makefile.efiboot:1.8 src/sys/arch/i386/stand/efiboot/Makefile.efiboot:1.9
--- src/sys/arch/i386/stand/efiboot/Makefile.efiboot:1.8 Sat Apr 8 19:53:21 2017
+++ src/sys/arch/i386/stand/efiboot/Makefile.efiboot Sat Apr 29 00:05:35 2017
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.efiboot,v 1.8 2017/04/08 19:53:21 christos Exp $
+# $NetBSD: Makefile.efiboot,v 1.9 2017/04/29 00:05:35 nonaka Exp $
S= ${.CURDIR}/../../../../..
@@ -10,7 +10,7 @@ AFLAGS.start.S= ${${ACTIVE_CC} == "clang
SOURCES?= start.S conf.c devopen.c efiboot.c self_reloc.c
LIBI386SRCS= boot.c biosdisk.c bootinfo.c bootinfo_biosgeom.c
-LIBI386SRCS+= bootmenu.c boot_params.S diskbuf.c exec.c menuutils.c
+LIBI386SRCS+= bootmenu.c diskbuf.c exec.c menuutils.c
LIBI386SRCS+= panic.c parseutils.c pread.c
LIBI386SRCS+= eficons.c efidelay.c efidisk.c efidisk_ll.c efigetsecs.c
LIBI386SRCS+= efimemory.c
Index: src/sys/arch/i386/stand/efiboot/bootia32/efibootia32.c
diff -u src/sys/arch/i386/stand/efiboot/bootia32/efibootia32.c:1.2 src/sys/arch/i386/stand/efiboot/bootia32/efibootia32.c:1.3
--- src/sys/arch/i386/stand/efiboot/bootia32/efibootia32.c:1.2 Tue Feb 21 10:53:37 2017
+++ src/sys/arch/i386/stand/efiboot/bootia32/efibootia32.c Sat Apr 29 00:05:35 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: efibootia32.c,v 1.2 2017/02/21 10:53:37 nonaka Exp $ */
+/* $NetBSD: efibootia32.c,v 1.3 2017/04/29 00:05:35 nonaka Exp $ */
/*-
* Copyright (c) 2016 Kimihiro Nonaka <[email protected]>
@@ -30,8 +30,6 @@
#include <sys/bootblock.h>
-struct x86_boot_params boot_params;
-
void startprog32_start(physaddr_t, uint32_t, uint32_t *, physaddr_t,
physaddr_t, physaddr_t, u_long, void *);
extern void (*startprog32)(physaddr_t, uint32_t, uint32_t *, physaddr_t,
Index: src/sys/arch/i386/stand/efiboot/bootia32/start.S
diff -u src/sys/arch/i386/stand/efiboot/bootia32/start.S:1.1 src/sys/arch/i386/stand/efiboot/bootia32/start.S:1.2
--- src/sys/arch/i386/stand/efiboot/bootia32/start.S:1.1 Tue Jan 24 11:09:14 2017
+++ src/sys/arch/i386/stand/efiboot/bootia32/start.S Sat Apr 29 00:05:35 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: start.S,v 1.1 2017/01/24 11:09:14 nonaka Exp $ */
+/* $NetBSD: start.S,v 1.2 2017/04/29 00:05:35 nonaka Exp $ */
/*-
* Copyright (c) 2008-2010 Rui Paulo <[email protected]>
@@ -29,6 +29,7 @@
*/
#include <machine/asm.h>
+#include <sys/bootblock.h>
.text
.align 16
@@ -72,3 +73,18 @@ END(_start)
.long 0
.long 10
.word 0
+
+ /* boot parameters */
+ .text
+ .code16
+ .align 512
+.Lfake_bootxx:
+ jmp 1f
+ .balign 4
+ .long X86_BOOT_MAGIC_EFI /* checked by installboot */
+ .globl _C_LABEL(boot_params)
+_C_LABEL(boot_params): /* space for patchable variables */
+ .long 1f - boot_params /* length of this data area */
+#include <boot_params.S>
+ . = .Lfake_bootxx + 0x80 /* Space for patching unknown params */
+1:
Index: src/sys/arch/i386/stand/efiboot/bootx64/efibootx64.c
diff -u src/sys/arch/i386/stand/efiboot/bootx64/efibootx64.c:1.2 src/sys/arch/i386/stand/efiboot/bootx64/efibootx64.c:1.3
--- src/sys/arch/i386/stand/efiboot/bootx64/efibootx64.c:1.2 Sat Feb 11 10:23:39 2017
+++ src/sys/arch/i386/stand/efiboot/bootx64/efibootx64.c Sat Apr 29 00:05:35 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: efibootx64.c,v 1.2 2017/02/11 10:23:39 nonaka Exp $ */
+/* $NetBSD: efibootx64.c,v 1.3 2017/04/29 00:05:35 nonaka Exp $ */
/*-
* Copyright (c) 2016 Kimihiro Nonaka <[email protected]>
@@ -30,8 +30,6 @@
#include <sys/bootblock.h>
-struct x86_boot_params boot_params;
-
void startprog64_start(physaddr_t, physaddr_t, physaddr_t, u_long,
void *, physaddr_t);
extern void (*startprog64)(physaddr_t, physaddr_t, physaddr_t, u_long,
Index: src/sys/arch/i386/stand/efiboot/bootx64/start.S
diff -u src/sys/arch/i386/stand/efiboot/bootx64/start.S:1.1 src/sys/arch/i386/stand/efiboot/bootx64/start.S:1.2
--- src/sys/arch/i386/stand/efiboot/bootx64/start.S:1.1 Tue Jan 24 11:09:14 2017
+++ src/sys/arch/i386/stand/efiboot/bootx64/start.S Sat Apr 29 00:05:35 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: start.S,v 1.1 2017/01/24 11:09:14 nonaka Exp $ */
+/* $NetBSD: start.S,v 1.2 2017/04/29 00:05:35 nonaka Exp $ */
/*-
* Copyright (C) 1999 Hewlett-Packard Co.
@@ -39,6 +39,7 @@
*/
#include <machine/asm.h>
+#include <sys/bootblock.h>
.text
.align 16
@@ -77,3 +78,18 @@ _start:
.long 0
.long 10
.word 0
+
+ /* boot parameters */
+ .text
+ .code16
+ .align 512
+.Lfake_bootxx:
+ jmp 1f
+ .balign 4
+ .long X86_BOOT_MAGIC_EFI /* checked by installboot */
+ .globl _C_LABEL(boot_params)
+_C_LABEL(boot_params): /* space for patchable variables */
+ .long 1f - boot_params /* length of this data area */
+#include <boot_params.S>
+ . = .Lfake_bootxx + 0x80 /* Space for patching unknown params */
+1:
Index: src/sys/sys/bootblock.h
diff -u src/sys/sys/bootblock.h:1.57 src/sys/sys/bootblock.h:1.58
--- src/sys/sys/bootblock.h:1.57 Sun Sep 14 17:39:06 2014
+++ src/sys/sys/bootblock.h Sat Apr 29 00:05:35 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: bootblock.h,v 1.57 2014/09/14 17:39:06 nonaka Exp $ */
+/* $NetBSD: bootblock.h,v 1.58 2017/04/29 00:05:35 nonaka Exp $ */
/*-
* Copyright (c) 2002-2004 The NetBSD Foundation, Inc.
@@ -1089,6 +1089,7 @@ struct x86_boot_params {
#define X86_BOOT_MAGIC_2 X86_BOOT_MAGIC(2) /* bootxx.S */
#define X86_BOOT_MAGIC_PXE X86_BOOT_MAGIC(3) /* start_pxe.S */
#define X86_BOOT_MAGIC_FAT X86_BOOT_MAGIC(4) /* fatboot.S */
+#define X86_BOOT_MAGIC_EFI X86_BOOT_MAGIC(5) /* efiboot/start.S */
#define X86_MBR_GPT_MAGIC 0xedb88320 /* gpt.S */
/* values for bp_flags */