Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src Add x68k stuff.
details: https://anonhg.NetBSD.org/src/rev/2ff34cfd51b2
branches: trunk
changeset: 532195:2ff34cfd51b2
user: isaki <isaki%NetBSD.org@localhost>
date: Sun Jun 02 10:44:30 2002 +0000
description:
Add x68k stuff.
diffstat:
sys/sys/bootblock.h | 13 ++-
usr.sbin/installboot/Makefile | 4 +-
usr.sbin/installboot/arch/x68k.c | 182 +++++++++++++++++++++++++++++++++++++
usr.sbin/installboot/installboot.8 | 5 +-
usr.sbin/installboot/installboot.h | 4 +-
usr.sbin/installboot/machines.c | 3 +-
6 files changed, 204 insertions(+), 7 deletions(-)
diffs (281 lines):
diff -r f2537b911c8f -r 2ff34cfd51b2 sys/sys/bootblock.h
--- a/sys/sys/bootblock.h Sun Jun 02 02:44:27 2002 +0000
+++ b/sys/sys/bootblock.h Sun Jun 02 10:44:30 2002 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: bootblock.h,v 1.9 2002/05/21 00:19:17 lukem Exp $ */
+/* $NetBSD: bootblock.h,v 1.10 2002/06/02 10:44:30 isaki Exp $ */
/*-
* Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -387,4 +387,15 @@
#define VAX_BOOT_BLOCK_OFFSET 0
#define VAX_BOOT_BLOCK_BLOCKSIZE 512
+
+/* ------------------------------------------
+ * x68k
+ */
+
+#define X68K_BOOT_BLOCK_OFFSET 0
+#define X68K_BOOT_BLOCK_BLOCKSIZE 512
+#define X68K_BOOT_BLOCK_MAX_SIZE (512 * 16)
+ /* Magic string -- 32 bytes long (including the NUL) */
+#define X68K_BBINFO_MAGIC "NetBSD/x68k bootxx 20020601"
+
#endif /* !_SYS_BOOTBLOCK_H */
diff -r f2537b911c8f -r 2ff34cfd51b2 usr.sbin/installboot/Makefile
--- a/usr.sbin/installboot/Makefile Sun Jun 02 02:44:27 2002 +0000
+++ b/usr.sbin/installboot/Makefile Sun Jun 02 10:44:30 2002 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.20 2002/05/20 16:05:26 lukem Exp $
+# $NetBSD: Makefile,v 1.21 2002/06/02 10:44:57 isaki Exp $
#
.include <bsd.own.mk>
@@ -6,7 +6,7 @@
PROG= installboot
SRCS= installboot.c sum.c machines.c fstypes.c \
ffs.c ffs_bswap.c bbinfo.c \
- alpha.c macppc.c news.c pmax.c sparc.c sparc64.c sun68k.c vax.c
+ alpha.c macppc.c news.c pmax.c sparc.c sparc64.c sun68k.c vax.c x68k.c
MAN= installboot.8
WARNS?= 3
diff -r f2537b911c8f -r 2ff34cfd51b2 usr.sbin/installboot/arch/x68k.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usr.sbin/installboot/arch/x68k.c Sun Jun 02 10:44:30 2002 +0000
@@ -0,0 +1,182 @@
+/* $NetBSD: x68k.c,v 1.1 2002/06/02 10:44:58 isaki Exp $ */
+
+/*-
+ * Copyright (c) 2002 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Luke Mewburn of Wasabi Systems.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the NetBSD
+ * Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+#if defined(__RCSID) && !defined(__lint)
+__RCSID("$NetBSD: x68k.c,v 1.1 2002/06/02 10:44:58 isaki Exp $");
+#endif /* !__lint */
+
+#if HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <sys/param.h>
+#include <sys/stat.h>
+
+#include <assert.h>
+#include <err.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "installboot.h"
+
+#define X68K_LABELOFFSET 64
+#define X68K_LABELSIZE 404 /* reserve 16 partitions */
+
+static int x68k_clearheader(ib_params *, struct bbinfo_params *, uint8_t *);
+
+
+static struct bbinfo_params bbparams = {
+ X68K_BBINFO_MAGIC,
+ X68K_BOOT_BLOCK_OFFSET,
+ X68K_BOOT_BLOCK_BLOCKSIZE,
+ X68K_BOOT_BLOCK_MAX_SIZE,
+ X68K_LABELOFFSET + X68K_LABELSIZE, /* XXX */
+ BBINFO_BIG_ENDIAN,
+};
+
+int
+x68k_clearboot(ib_params *params)
+{
+
+ assert(params != NULL);
+
+ if (params->flags & IB_STAGE1START) {
+ warnx("`-b bno' is not supported for %s",
+ params->machine->name);
+ return 0;
+ }
+ return shared_bbinfo_clearboot(params, &bbparams, x68k_clearheader);
+}
+
+static int
+x68k_clearheader(ib_params *params, struct bbinfo_params *bb_params,
+ uint8_t *bb)
+{
+
+ assert(params != NULL);
+ assert(bb_params != NULL);
+ assert(bb != NULL);
+
+ memset(bb, 0, X68K_LABELOFFSET);
+ return 1;
+}
+
+int
+x68k_setboot(ib_params *params)
+{
+ struct stat bootstrapsb;
+ char bb[X68K_BOOT_BLOCK_MAX_SIZE];
+ char label[X68K_LABELSIZE];
+ uint32_t s1start;
+ int retval;
+ ssize_t rv;
+
+ assert(params != NULL);
+ assert(params->fsfd != -1);
+ assert(params->filesystem != NULL);
+ assert(params->s1fd != -1);
+ assert(params->stage1 != NULL);
+
+ retval = 0;
+
+ if (params->flags & IB_STAGE1START)
+ s1start = params->s1start;
+ else
+ s1start = X68K_BOOT_BLOCK_OFFSET /
+ X68K_BOOT_BLOCK_BLOCKSIZE;
+
+ /* read disklabel on the target disk */
+ rv = pread(params->fsfd, label, sizeof label,
+ s1start * X68K_BOOT_BLOCK_BLOCKSIZE + X68K_LABELOFFSET);
+ if (rv == -1) {
+ warn("Reading `%s'", params->filesystem);
+ goto done;
+ } else if (rv != sizeof label) {
+ warnx("Reading `%s': short read", params->filesystem);
+ goto done;
+ }
+
+ if (fstat(params->s1fd, &bootstrapsb) == -1) {
+ warn("Examining `%s'", params->stage1);
+ goto done;
+ }
+ if (!S_ISREG(bootstrapsb.st_mode)) {
+ warnx("`%s' must be a regular file", params->stage1);
+ goto done;
+ }
+
+ /* read boot loader */
+ memset(&bb, 0, sizeof bb);
+ rv = read(params->s1fd, &bb, sizeof bb);
+ if (rv == -1) {
+ warn("Reading `%s'", params->stage1);
+ goto done;
+ }
+ /* then, overwrite disklabel */
+ memcpy(&bb[X68K_LABELOFFSET], &label, sizeof label);
+
+ if (params->flags & IB_VERBOSE) {
+ printf("Bootstrap start sector: %#x\n", s1start);
+ printf("Bootstrap byte count: %#x\n", (unsigned)rv);
+ printf("%sriting bootstrap\n",
+ (params->flags & IB_NOWRITE) ? "Not w" : "W");
+ }
+ if (params->flags & IB_NOWRITE) {
+ retval = 1;
+ goto done;
+ }
+
+ /* write boot loader and disklabel into the target disk */
+ rv = pwrite(params->fsfd, &bb, X68K_BOOT_BLOCK_MAX_SIZE,
+ s1start * X68K_BOOT_BLOCK_BLOCKSIZE);
+ if (rv == -1) {
+ warn("Writing `%s'", params->filesystem);
+ goto done;
+ } else if (rv != X68K_BOOT_BLOCK_MAX_SIZE) {
+ warnx("Writing `%s': short write", params->filesystem);
+ goto done;
+ } else
+ retval = 1;
+
+ done:
+ return (retval);
+}
diff -r f2537b911c8f -r 2ff34cfd51b2 usr.sbin/installboot/installboot.8
--- a/usr.sbin/installboot/installboot.8 Sun Jun 02 02:44:27 2002 +0000
+++ b/usr.sbin/installboot/installboot.8 Sun Jun 02 10:44:30 2002 +0000
@@ -1,4 +1,4 @@
-.\" $NetBSD: installboot.8,v 1.18 2002/05/20 20:24:49 wiz Exp $
+.\" $NetBSD: installboot.8,v 1.19 2002/06/02 10:44:57 isaki Exp $
.\"
.\" Copyright (c) 2002 The NetBSD Foundation, Inc.
.\" All rights reserved.
@@ -223,7 +223,8 @@
.Sy sparc64 ,
.Sy sun2 ,
.Sy sun3 ,
-.Sy vax
+.Sy vax ,
+.Sy x68k
.Ed
.
.
diff -r f2537b911c8f -r 2ff34cfd51b2 usr.sbin/installboot/installboot.h
--- a/usr.sbin/installboot/installboot.h Sun Jun 02 02:44:27 2002 +0000
+++ b/usr.sbin/installboot/installboot.h Sun Jun 02 10:44:30 2002 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: installboot.h,v 1.13 2002/05/20 16:05:26 lukem Exp $ */
+/* $NetBSD: installboot.h,v 1.14 2002/06/02 10:44:57 isaki Exp $ */
/*-
* Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -163,5 +163,7 @@
int vax_parseopt(ib_params *, const char *);
int vax_setboot(ib_params *);
int vax_clearboot(ib_params *);
+int x68k_setboot(ib_params *);
+int x68k_clearboot(ib_params *);
#endif /* _INSTALLBOOT_H */
diff -r f2537b911c8f -r 2ff34cfd51b2 usr.sbin/installboot/machines.c
--- a/usr.sbin/installboot/machines.c Sun Jun 02 02:44:27 2002 +0000
+++ b/usr.sbin/installboot/machines.c Sun Jun 02 10:44:30 2002 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: machines.c,v 1.11 2002/05/20 16:05:26 lukem Exp $ */
+/* $NetBSD: machines.c,v 1.12 2002/06/02 10:44:57 isaki Exp $ */
/*-
* Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -52,5 +52,6 @@
{ "sun2", no_parseopt, sun68k_setboot, sun68k_clearboot },
{ "sun3", no_parseopt, sun68k_setboot, sun68k_clearboot },
{ "vax", vax_parseopt, vax_setboot, vax_clearboot },
+ { "x68k", no_parseopt, x68k_setboot, x68k_clearboot },
{ 0, 0, 0, 0 },
};
Home |
Main Index |
Thread Index |
Old Index