Module Name: src
Committed By: jmcneill
Date: Sun Feb 6 23:16:05 UTC 2011
Modified Files:
src/sys/arch/i386/stand/boot: boot2.c version
src/sys/arch/i386/stand/lib: bootmod.h exec.c libi386.h
Log Message:
add support for passing image files to the kernel with the 'splash' keyword:
vesa on;splash /netbsd.jpg;boot -z
To generate a diff of this commit:
cvs rdiff -u -r1.51 -r1.52 src/sys/arch/i386/stand/boot/boot2.c
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/i386/stand/boot/version
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/i386/stand/lib/bootmod.h
cvs rdiff -u -r1.45 -r1.46 src/sys/arch/i386/stand/lib/exec.c
cvs rdiff -u -r1.33 -r1.34 src/sys/arch/i386/stand/lib/libi386.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/boot/boot2.c
diff -u src/sys/arch/i386/stand/boot/boot2.c:1.51 src/sys/arch/i386/stand/boot/boot2.c:1.52
--- src/sys/arch/i386/stand/boot/boot2.c:1.51 Wed Jan 5 23:13:01 2011
+++ src/sys/arch/i386/stand/boot/boot2.c Sun Feb 6 23:16:05 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: boot2.c,v 1.51 2011/01/05 23:13:01 jakllsch Exp $ */
+/* $NetBSD: boot2.c,v 1.52 2011/02/06 23:16:05 jmcneill Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -135,6 +135,7 @@
{ "load", module_add },
{ "multiboot", command_multiboot },
{ "vesa", command_vesa },
+ { "splash", splash_add },
{ NULL, NULL },
};
Index: src/sys/arch/i386/stand/boot/version
diff -u src/sys/arch/i386/stand/boot/version:1.13 src/sys/arch/i386/stand/boot/version:1.14
--- src/sys/arch/i386/stand/boot/version:1.13 Wed Jan 5 23:13:01 2011
+++ src/sys/arch/i386/stand/boot/version Sun Feb 6 23:16:05 2011
@@ -1,4 +1,4 @@
-$NetBSD: version,v 1.13 2011/01/05 23:13:01 jakllsch Exp $
+$NetBSD: version,v 1.14 2011/02/06 23:16:05 jmcneill Exp $
NOTE ANY CHANGES YOU MAKE TO THE BOOTBLOCKS HERE. The format of this
file is important - make sure the entries are appended on end, last item
@@ -45,3 +45,4 @@
5.5: Adjust stack and heap areas to not overlap.
5.6: GUID Partition Table support.
5.7: Recognize 64-bit LBA from bootxx.
+5.8: Support for splash images.
Index: src/sys/arch/i386/stand/lib/bootmod.h
diff -u src/sys/arch/i386/stand/lib/bootmod.h:1.3 src/sys/arch/i386/stand/lib/bootmod.h:1.4
--- src/sys/arch/i386/stand/lib/bootmod.h:1.3 Mon May 5 00:12:49 2008
+++ src/sys/arch/i386/stand/lib/bootmod.h Sun Feb 6 23:16:05 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: bootmod.h,v 1.3 2008/05/05 00:12:49 jmcneill Exp $ */
+/* $NetBSD: bootmod.h,v 1.4 2011/02/06 23:16:05 jmcneill Exp $ */
/*-
* Copyright (c) 2008 Jared D. McNeill <[email protected]>
@@ -32,6 +32,9 @@
typedef struct boot_module {
char *bm_path;
ssize_t bm_len;
+ uint8_t bm_type;
+#define BM_TYPE_KMOD 0x00
+#define BM_TYPE_IMAGE 0x01
struct boot_module *bm_next;
} boot_module_t;
Index: src/sys/arch/i386/stand/lib/exec.c
diff -u src/sys/arch/i386/stand/lib/exec.c:1.45 src/sys/arch/i386/stand/lib/exec.c:1.46
--- src/sys/arch/i386/stand/lib/exec.c:1.45 Sat Oct 30 08:12:43 2010
+++ src/sys/arch/i386/stand/lib/exec.c Sun Feb 6 23:16:05 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: exec.c,v 1.45 2010/10/30 08:12:43 jnemeth Exp $ */
+/* $NetBSD: exec.c,v 1.46 2011/02/06 23:16:05 jmcneill Exp $ */
/*-
* Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -135,6 +135,7 @@
static int howto;
static void module_init(const char *);
+static void module_add_common(char *, uint8_t);
void
framebuffer_configure(struct btinfo_framebuffer *fb)
@@ -150,6 +151,18 @@
void
module_add(char *name)
{
+ return module_add_common(name, BM_TYPE_KMOD);
+}
+
+void
+splash_add(char *name)
+{
+ return module_add_common(name, BM_TYPE_IMAGE);
+}
+
+static void
+module_add_common(char *name, uint8_t type)
+{
boot_module_t *bm, *bmp;
size_t len;
char *str;
@@ -167,6 +180,7 @@
memcpy(str, name, len);
bm->bm_path = str;
bm->bm_next = NULL;
+ bm->bm_type = type;
if (boot_modules == NULL)
boot_modules = bm;
else {
@@ -509,7 +523,8 @@
strncpy(bi->path, bm->bm_path, sizeof(bi->path) - 1);
bi->base = image_end;
bi->len = len;
- bi->type = BI_MODULE_ELF;
+ bi->type = bm->bm_type == BM_TYPE_KMOD ?
+ BI_MODULE_ELF : BI_MODULE_IMAGE;
if ((howto & AB_SILENT) == 0)
printf(" \n");
}
Index: src/sys/arch/i386/stand/lib/libi386.h
diff -u src/sys/arch/i386/stand/lib/libi386.h:1.33 src/sys/arch/i386/stand/lib/libi386.h:1.34
--- src/sys/arch/i386/stand/lib/libi386.h:1.33 Fri Jun 25 15:35:08 2010
+++ src/sys/arch/i386/stand/lib/libi386.h Sun Feb 6 23:16:05 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: libi386.h,v 1.33 2010/06/25 15:35:08 tsutsui Exp $ */
+/* $NetBSD: libi386.h,v 1.34 2011/02/06 23:16:05 jmcneill Exp $ */
/*
* Copyright (c) 1996
@@ -137,6 +137,7 @@
extern int doserrno; /* in dos_file.S */
void module_add(char *);
+void splash_add(char *);
struct btinfo_framebuffer;
void framebuffer_configure(struct btinfo_framebuffer *);