summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Murphree <smurph@cvs.openbsd.org>1998-12-15 06:32:36 +0000
committerSteve Murphree <smurph@cvs.openbsd.org>1998-12-15 06:32:36 +0000
commit2b15acd640c31ffe78e62a6f74608d3a5b7f6954 (patch)
tree7937f297944744e67d9c13c31ea238fc450d56e1
parent6d51a3609c2a75795ae9487536608be366f37cca (diff)
This fixed a number of things. A serious bug in bugcrt.c's initial stack
among other things.
-rw-r--r--sys/arch/mvme88k/stand/bootsd/Makefile8
-rw-r--r--sys/arch/mvme88k/stand/bootsd/README2
-rw-r--r--sys/arch/mvme88k/stand/bootsd/boot.c4
-rw-r--r--sys/arch/mvme88k/stand/bootxx/Makefile6
-rw-r--r--sys/arch/mvme88k/stand/bootxx/bootxx.c6
-rw-r--r--sys/arch/mvme88k/stand/installboot/Makefile3
-rw-r--r--sys/arch/mvme88k/stand/installboot/installboot.816
-rw-r--r--sys/arch/mvme88k/stand/installboot/installboot.c101
-rw-r--r--sys/arch/mvme88k/stand/libbug/diskrd.c2
-rw-r--r--sys/arch/mvme88k/stand/libbug/putchar.c13
-rw-r--r--sys/arch/mvme88k/stand/libsa/SRT0.S116
-rw-r--r--sys/arch/mvme88k/stand/libsa/exec_mvme.c14
-rw-r--r--sys/arch/mvme88k/stand/netboot/Makefile21
-rw-r--r--sys/arch/mvme88k/stand/netboot/boot.c4
-rw-r--r--sys/arch/mvme88k/stand/netboot/if_ie.c4
15 files changed, 221 insertions, 99 deletions
diff --git a/sys/arch/mvme88k/stand/bootsd/Makefile b/sys/arch/mvme88k/stand/bootsd/Makefile
index ca7ae74a7c1..a44e8916872 100644
--- a/sys/arch/mvme88k/stand/bootsd/Makefile
+++ b/sys/arch/mvme88k/stand/bootsd/Makefile
@@ -1,7 +1,7 @@
# from: @(#)Makefile 8.1 (Berkeley) 6/10/93
-# $OpenBSD: Makefile,v 1.3 1998/08/22 09:25:06 smurph Exp $
+# $OpenBSD: Makefile,v 1.4 1998/12/15 06:32:33 smurph Exp $
-RELOC=0x3F0000
+RELOC=0xCF0000
S= ${.CURDIR}/../../../..
DEFS=
@@ -18,7 +18,7 @@ CLEANFILES+=bootsd
SRCS= boot.c conf.c version.c
-LIBS= ${LIBSA} ${LIBBUG} ${LIBZ}
+LIBS= ${LIBSA} ${LIBBUG} ${LIBZ} -lgcc -lc -lgcc
OBJS= ${SRCS:N*.h:R:S/$/.o/g}
@@ -29,7 +29,7 @@ all: ${ALL}
bootsd: ${OBJS} ${BUGCRT} ${LIBS}
${LD} ${LDFLAGS} -o $@ \
- ${BUGCRT} ${OBJS} ${LIBS}
+ ${SDCRT} ${OBJS} ${LIBS}
#${SRTOBJ}
install:
install -c -m 555 -g bin -o bin ${BOOTS} ${DESTDIR}${MDEC_DIR}
diff --git a/sys/arch/mvme88k/stand/bootsd/README b/sys/arch/mvme88k/stand/bootsd/README
index 86d2b194056..47a7aab2813 100644
--- a/sys/arch/mvme88k/stand/bootsd/README
+++ b/sys/arch/mvme88k/stand/bootsd/README
@@ -1,7 +1,7 @@
In short:
cd /usr/mdec
cp bootsd /
- ./installboot -v /bootsd ./bootxx /dev/rsd0c
+ ./installboot -v /bootsd ./bootxx /dev/rsd0a
(you will need to be single user to run installboot since it writes
to a raw disk device)
diff --git a/sys/arch/mvme88k/stand/bootsd/boot.c b/sys/arch/mvme88k/stand/bootsd/boot.c
index a50d358b66a..869cf1eb97b 100644
--- a/sys/arch/mvme88k/stand/bootsd/boot.c
+++ b/sys/arch/mvme88k/stand/bootsd/boot.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: boot.c,v 1.2 1998/08/22 07:17:18 smurph Exp $ */
+/* $OpenBSD: boot.c,v 1.3 1998/12/15 06:32:33 smurph Exp $ */
/* $NetBSD: boot.c,v 1.2 1995/09/23 03:42:52 gwr Exp $ */
/*-
@@ -56,7 +56,7 @@ main()
int io, flag, ret;
int ask = 0;
- printf(">> OpenBSD MVME%x bootsd [%s]\n", bugargs.cputyp, version);
+ printf("\n>> OpenBSD MVME%x bootsd [%s]\n", bugargs.cputyp, version);
ret = parse_args(&file, &flag);
diff --git a/sys/arch/mvme88k/stand/bootxx/Makefile b/sys/arch/mvme88k/stand/bootxx/Makefile
index 9d4e72acdf3..d9e3b8891a1 100644
--- a/sys/arch/mvme88k/stand/bootxx/Makefile
+++ b/sys/arch/mvme88k/stand/bootxx/Makefile
@@ -1,7 +1,7 @@
# from: @(#)Makefile 8.1 (Berkeley) 6/10/93
-# $OpenBSD: Makefile,v 1.2 1998/08/22 09:25:08 smurph Exp $
+# $OpenBSD: Makefile,v 1.3 1998/12/15 06:32:34 smurph Exp $
-RELOC=0x3F0000
+RELOC=0xAF0000
S= ${.CURDIR}/../../../..
DEFS=
@@ -17,7 +17,7 @@ CLEANFILES+=bootxx
SRCS= bootxx.c conf.c version.c
-LIBS= ${LIBSA} ${LIBBUG} ${LIBZ}
+LIBS= ${LIBSA} ${LIBBUG} ${LIBZ} -lgcc -lc -lgcc
OBJS= ${SRCS:N*.h:R:S/$/.o/g}
diff --git a/sys/arch/mvme88k/stand/bootxx/bootxx.c b/sys/arch/mvme88k/stand/bootxx/bootxx.c
index 5f488b616ec..d55a99bb711 100644
--- a/sys/arch/mvme88k/stand/bootxx/bootxx.c
+++ b/sys/arch/mvme88k/stand/bootxx/bootxx.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: bootxx.c,v 1.1 1998/08/22 08:27:08 smurph Exp $ */
+/* $OpenBSD: bootxx.c,v 1.2 1998/12/15 06:32:34 smurph Exp $ */
/*
* Copyright (c) 1994 Paul Kranenburg
@@ -51,7 +51,7 @@
/*
* Boot device is derived from ROM provided information.
*/
-#define LOADADDR 0x11000 /* where to load level 2 bootstrap */
+#define LOADADDR 0xCf0000 /* where to load level 2 bootstrap */
/* (l2 must relocate itself) */
/* This determines the largest boot program we can load. */
@@ -90,7 +90,7 @@ main()
error = copyboot(&f, addr);
f.f_dev->dv_close(&f);
if (!error) {
- bugexec((void (*)())addr);
+ bugexec((void (*)())addr + 8);
}
/* copyboot had a problem... */
_rtt();
diff --git a/sys/arch/mvme88k/stand/installboot/Makefile b/sys/arch/mvme88k/stand/installboot/Makefile
index 3dbe8bb1715..d9ba6f51e6a 100644
--- a/sys/arch/mvme88k/stand/installboot/Makefile
+++ b/sys/arch/mvme88k/stand/installboot/Makefile
@@ -3,8 +3,11 @@
PROG= installboot
MAN= installboot.8
BINDIR=/usr/mdec
+DPADD= ${LIBUTIL}
+LDADD= -lutil
# Need this to work in the miniroot
+
LDSTATIC= -static
.include <bsd.prog.mk>
diff --git a/sys/arch/mvme88k/stand/installboot/installboot.8 b/sys/arch/mvme88k/stand/installboot/installboot.8
index a9dcd9c9e1a..b9811645e2a 100644
--- a/sys/arch/mvme88k/stand/installboot/installboot.8
+++ b/sys/arch/mvme88k/stand/installboot/installboot.8
@@ -1,4 +1,4 @@
-.\" $Id: installboot.8,v 1.1 1998/08/22 06:38:35 smurph Exp $
+.\" $Id: installboot.8,v 1.2 1998/12/15 06:32:34 smurph Exp $
.\"
.Dd 31 May 1995
.Dt INSTALLBOOT 8
@@ -10,7 +10,7 @@
.Nm installboot
.Op Fl n
.Op Fl v
-.Ar ufsboot
+.Ar bootsd
.Ar bootxx
.Ar rawdev
.Sh DESCRIPTION
@@ -28,12 +28,12 @@ Do not actually write anything on the disk.
Be verbose, printing out the block numbers that
.Ar bootxx
will use to load
-.Ar ufsboot .
+.Ar bootsd .
.El
.Pp
The arguments are:
-.Bl -tag -width ufsboot
-.It Ar ufsboot
+.Bl -tag -width bootsd
+.It Ar bootsd
the name of the second-stage boot program in the file system
where the first-stage boot program is to be installed.
.It Ar bootxx
@@ -45,6 +45,12 @@ on which the file system containing
.Ar ufsboot
is mounted.
.El
+.Sh EXAMPLE
+.Bd -literal -offset
+cd /usr/mdec
+cp bootsd /
+installboot -v /bootsd ./bootxx /dev/rsd0a
+.Ed
.Sh BUGS
.Nm installboot
requires simultaneous access to the mounted file system and
diff --git a/sys/arch/mvme88k/stand/installboot/installboot.c b/sys/arch/mvme88k/stand/installboot/installboot.c
index 88244cb41ba..74d37b66616 100644
--- a/sys/arch/mvme88k/stand/installboot/installboot.c
+++ b/sys/arch/mvme88k/stand/installboot/installboot.c
@@ -45,9 +45,13 @@
#include <stdio.h>
#include <string.h>
#include <unistd.h>
+#include <util.h>
+#include <machine/disklabel.h>
int verbose, nowrite, hflag;
char *boot, *proto, *dev;
+char cdev[80];
+
struct nlist nl[] = {
#define X_BLOCK_SIZE 0
{"_block_size"},
@@ -69,6 +73,7 @@ int loadblocknums __P((char *, int));
static void devread __P((int, void *, daddr_t, size_t, char *));
static void usage __P((void));
int main __P((int, char *[]));
+static void vid_to_disklabel __P((char *, char*));
static void
@@ -115,13 +120,19 @@ main(argc, argv)
boot = argv[optind];
proto = argv[optind + 1];
dev = argv[optind + 2];
-
+ strcpy(cdev, dev);
+ cdev[strlen(cdev)-1] = 'c';
+
if (verbose) {
printf("boot: %s\n", boot);
printf("proto: %s\n", proto);
printf("device: %s\n", dev);
+ printf("cdevice: %s\n", cdev);
}
-
+
+ /* Insert VID into disklabel */
+ vid_to_disklabel(cdev, proto);
+
/* Load proto blocks into core */
if ((protostore = loadprotoblocks(proto, &protosize)) == NULL)
exit(1);
@@ -147,7 +158,7 @@ main(argc, argv)
if (protosize > SBSIZE - DEV_BSIZE)
errx(1, "proto bootblocks too big");
- if ((devfd = open(dev, O_RDWR, 0)) < 0)
+ if ((devfd = open(cdev, O_RDWR, 0)) < 0)
err(1, "open: %s", dev);
if (lseek(devfd, DEV_BSIZE, SEEK_SET) != DEV_BSIZE)
@@ -375,3 +386,87 @@ int devfd;
return 0;
}
+static void
+vid_to_disklabel(dkname, bootproto)
+char *dkname;
+char *bootproto;
+{
+ char *specname;
+ int exe_file, f;
+ struct cpu_disklabel *pcpul;
+ struct stat stat;
+ unsigned int exe_addr;
+ unsigned short exe_addr_u;
+ unsigned short exe_addr_l;
+
+ pcpul = (struct cpu_disklabel *)malloc(sizeof(struct cpu_disklabel));
+ bzero(pcpul, sizeof(struct cpu_disklabel));
+
+ if (verbose)
+ printf("modifying vid.\n");
+
+ exe_file = open(bootproto, O_RDONLY, 0444);
+ if (exe_file == -1) {
+ perror(bootproto);
+ exit(2);
+ }
+
+ f = opendev(dkname, O_RDWR, OPENDEV_PART, &specname);
+
+ if (lseek(f, 0, SEEK_SET) < 0 ||
+ read(f, pcpul, sizeof(struct cpu_disklabel))
+ < sizeof(struct cpu_disklabel))
+ err(4, "%s", specname);
+
+
+ pcpul->version = 1;
+ strcpy(pcpul->vid_id, "M88K");
+
+ fstat(exe_file, &stat);
+
+ /* size in 256 byte blocks round up after a.out header removed */
+
+ pcpul->vid_oss = 2;
+ pcpul->vid_osl = (((stat.st_size -0x20) +511) / 512) *2;
+
+ lseek(exe_file, 0x14, SEEK_SET);
+ read(exe_file, &exe_addr, 4);
+
+ /* check this, it may not work in both endian. */
+ /* No, it doesn't. Use a big endian machine for now. SPM */
+
+ {
+ union {
+ struct s {
+ unsigned short s1;
+ unsigned short s2;
+ } s;
+ unsigned long l;
+ } a;
+ a.l = exe_addr;
+ pcpul->vid_osa_u = a.s.s1;
+ pcpul->vid_osa_l = a.s.s2;
+
+ }
+ pcpul->vid_cas = 1;
+ pcpul->vid_cal = 1;
+
+ /* do not want to write past end of structure, not null terminated */
+
+ strncpy(pcpul->vid_mot, "MOTOROLA", 8);
+
+ pcpul->cfg_rec = 0x100;
+ pcpul->cfg_psm = 0x200;
+
+ if (!nowrite) {
+ if (lseek(f, 0, SEEK_SET) < 0 ||
+ write(f, pcpul, sizeof(struct cpu_disklabel))
+ < sizeof(struct cpu_disklabel))
+ err(4, "%s", specname);
+ }
+ free(pcpul);
+
+ close(exe_file);
+ close(f);
+
+}
diff --git a/sys/arch/mvme88k/stand/libbug/diskrd.c b/sys/arch/mvme88k/stand/libbug/diskrd.c
index bc69b365501..d38717c3ce6 100644
--- a/sys/arch/mvme88k/stand/libbug/diskrd.c
+++ b/sys/arch/mvme88k/stand/libbug/diskrd.c
@@ -15,5 +15,5 @@ mvmeprom_diskrd(arg)
asm volatile ("or r2,r0,%0": : "r" (arg));
MVMEPROM_CALL(MVMEPROM_DSKRD);
asm volatile ("or %0,r0,r2" : "=r" (ret));
- return (!(ret & 0x4));
+ return ((ret & 0x8));
}
diff --git a/sys/arch/mvme88k/stand/libbug/putchar.c b/sys/arch/mvme88k/stand/libbug/putchar.c
index 564bcb75c15..2193b45c78c 100644
--- a/sys/arch/mvme88k/stand/libbug/putchar.c
+++ b/sys/arch/mvme88k/stand/libbug/putchar.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: putchar.c,v 1.1 1998/08/22 07:39:56 smurph Exp $ */
+/* $OpenBSD: putchar.c,v 1.2 1998/12/15 06:32:34 smurph Exp $ */
/*
* putchar: easier to do this with outstr than to add more macros to
@@ -17,9 +17,10 @@ putchar(c)
int c;
{
- char ca[2];
- if (c == '\n')
- putchar('\r');
- ca[0] = c;
- mvmeprom_outstr(&ca[0], &ca[1]);
+ char ca;
+ ca = (char)c & 0xFF;
+ if (ca == '\n')
+ putchar('\r');
+ asm volatile ("or r2,r0,%0" : : "r" (ca));
+ MVMEPROM_CALL(MVMEPROM_OUTCHR);
}
diff --git a/sys/arch/mvme88k/stand/libsa/SRT0.S b/sys/arch/mvme88k/stand/libsa/SRT0.S
index 7156aa32830..ff7cf90e3c4 100644
--- a/sys/arch/mvme88k/stand/libsa/SRT0.S
+++ b/sys/arch/mvme88k/stand/libsa/SRT0.S
@@ -1,62 +1,62 @@
-| $Id: SRT0.S,v 1.1 1997/03/03 19:30:35 rahnds Exp $
+; $Id: SRT0.S,v 1.2 1998/12/15 06:32:34 smurph Exp $
-| Copyright (c) 1996 Nivas Madhur
-| Copyright (c) 1995 Theo de Raadt
-|
-| 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 under OpenBSD by
-| Theo de Raadt for Willowglen Singapore.
-| 4. The name of the author may not be used to endorse or promote products
-| derived from this software without specific prior written permission.
-|
-| THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
-|
-| Copyright (c) 1995 Gordon W. Ross
-| All rights reserved.
-|
-| 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. The name of the author may not be used to endorse or promote products
-| derived from this software without specific prior written permission.
-| 4. All advertising materials mentioning features or use of this software
-| must display the following acknowledgement:
-| This product includes software developed by Gordon Ross
-|
-| THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+; Copyright (c) 1996 Nivas Madhur
+; Copyright (c) 1995 Theo de Raadt
+;
+; 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 under OpenBSD by
+; Theo de Raadt for Willowglen Singapore.
+; 4. The name of the author may not be used to endorse or promote products
+; derived from this software without specific prior written permission.
+;
+; THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+;
+; Copyright (c) 1995 Gordon W. Ross
+; All rights reserved.
+;
+; 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. The name of the author may not be used to endorse or promote products
+; derived from this software without specific prior written permission.
+; 4. All advertising materials mentioning features or use of this software
+; must display the following acknowledgement:
+; This product includes software developed by Gordon Ross
+;
+; THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
; SRT0.S - Stand-alone Run-Time startup code, part 0
.file "SRT0.S"
diff --git a/sys/arch/mvme88k/stand/libsa/exec_mvme.c b/sys/arch/mvme88k/stand/libsa/exec_mvme.c
index 19a0ca41405..5d4bfd3149e 100644
--- a/sys/arch/mvme88k/stand/libsa/exec_mvme.c
+++ b/sys/arch/mvme88k/stand/libsa/exec_mvme.c
@@ -68,6 +68,7 @@ exec_mvme(file, flag)
void (*entry)();
register char *cp;
register int *ip;
+ int n;
#ifdef DEBUG
printf("exec_mvme: file=%s flag=0x%x\n", file, flag);
@@ -82,6 +83,7 @@ exec_mvme(file, flag)
*/
if (read(io, (char *)&x, sizeof(x)) != sizeof(x))
goto shread;
+
if (N_BADMAG(x)) {
errno = EFTYPE;
goto closeout;
@@ -99,7 +101,14 @@ exec_mvme(file, flag)
* so we must mask that off (has no effect on the other formats
*/
loadaddr = (void *)(x.a_entry & ~sizeof(x));
-
+ n = x.a_text + x.a_data + x.a_bss + x.a_syms + sizeof(int);
+
+ /* debugging stuff for netboot
+ printf("hex load address range 0x%x to 0x%x\n", loadaddr, loadaddr+n);
+ printf("dec load address range %ld to %ld\n", loadaddr, loadaddr+n);
+ bzero((void *)loadaddr, n);
+ */
+
cp = loadaddr;
magic = N_GETMAGIC(x);
if (magic == ZMAGIC)
@@ -189,6 +198,9 @@ exec_mvme(file, flag)
close(io);
printf("Start @ 0x%x ...\n", (int)entry);
+ printf("Controler Address @ %x ...\n", bugargs.ctrl_addr);
+ if (flag & RB_HALT) mvmeprom_return();
+
/* (addr)(flag, 0, kernel.esym, kernel.smini, kernel.emini);*/
(*entry)(flag, bugargs.ctrl_addr, cp, kernel.smini, kernel.emini);
printf("exec: kernel returned!\n");
diff --git a/sys/arch/mvme88k/stand/netboot/Makefile b/sys/arch/mvme88k/stand/netboot/Makefile
index b38a3fb63d2..ee920ad3152 100644
--- a/sys/arch/mvme88k/stand/netboot/Makefile
+++ b/sys/arch/mvme88k/stand/netboot/Makefile
@@ -1,10 +1,13 @@
-# $OpenBSD: Makefile,v 1.4 1998/08/22 09:25:10 smurph Exp $
-RELOC=0x3F0000
+# $OpenBSD: Makefile,v 1.5 1998/12/15 06:32:35 smurph Exp $
+
+RELOC=0xAF0000
SIZE?= size
+STRIP?= strip
S= ${.CURDIR}/../../../..
-DEFS= -DSUN_BOOTPARAMS #-DNETIF_DEBUG
+DEFS= -DSUN_BOOTPARAMS
+#-DNETIF_DEBUG
INCPATH=-I${.CURDIR} -I${.CURDIR}/../libsa -I${.CURDIR}/../libbug \
-I${S} -I${S}/lib/libsa
CFLAGS= -O2 ${DEFS} ${INCPATH} ${COPTS}
@@ -18,19 +21,21 @@ CLEANFILES+=netboot netboot.bin
SRCS= boot.c conf.c version.c devopen.c dev_net.c
SRCS+= if_ie.c if_le.c
OBJS= ${SRCS:S/.c/.o/g}
-LIBS= ${LIBSA} ${LIBBUG} ${LIBZ}
-LDFLAGS+= -nostdlib -s -N -T ${RELOC}
+LIBS= ${LIBSA} ${LIBBUG} ${LIBZ} -lgcc -lc -lgcc
+LDFLAGS+= -s -N -T ${RELOC}
+#LDFLAGS+= -nostdlib -s -N -Ttext ${RELOC}
all: netboot.bin
netboot: ${OBJS} ${BUGCRT} ${LIBS}
- ${LD} ${LDFLAGS} -o $@ \
- ${BUGCRT} ${OBJS} ${LIBS}
- @${SIZE} $@
+ ${LD} ${LDFLAGS} \
+ ${BUGCRT} ${OBJS} ${LIBS} -o $@
+# @${SIZE} $@
netboot.bin: netboot
${STRIP} netboot
dd ibs=32 skip=1 if=netboot of=$@
+# dd ibs=38 skip=1 if=netboot of=$@
chown ${LIBOWN}.${LIBGRP} netboot.bin
chmod ${LIBMODE} netboot.bin
diff --git a/sys/arch/mvme88k/stand/netboot/boot.c b/sys/arch/mvme88k/stand/netboot/boot.c
index bb07754d4ab..6e132bf34d7 100644
--- a/sys/arch/mvme88k/stand/netboot/boot.c
+++ b/sys/arch/mvme88k/stand/netboot/boot.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: boot.c,v 1.2 1998/08/22 08:37:53 smurph Exp $ */
+/* $OpenBSD: boot.c,v 1.3 1998/12/15 06:32:35 smurph Exp $ */
/*-
* Copyright (c) 1995 Theo de Raadt
@@ -90,7 +90,7 @@ main()
bugargs.arg_end = bugargs.nbarg_end;
*bugargs.arg_end = 0; /* ensure */
- printf("\n>> OpenBSD MVME187 netboot [%s]\n", version);
+ printf("\n>> OpenBSD MVME%x netboot [%s]\n", bugargs.cputyp, version);
ret = parse_args(&file, &howto);
diff --git a/sys/arch/mvme88k/stand/netboot/if_ie.c b/sys/arch/mvme88k/stand/netboot/if_ie.c
index c856f8a5f81..d9003693331 100644
--- a/sys/arch/mvme88k/stand/netboot/if_ie.c
+++ b/sys/arch/mvme88k/stand/netboot/if_ie.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_ie.c,v 1.2 1998/08/22 08:38:00 smurph Exp $ */
+/* $OpenBSD: if_ie.c,v 1.3 1998/12/15 06:32:35 smurph Exp $ */
/*
* Copyright (c) 1995 Theo de Raadt
@@ -441,7 +441,7 @@ ie_init(desc, machdep_hint)
bzero(&ie_softc, sizeof(ie_softc));
ie_softc.sc_reg =
(struct iereg *) ie_config[desc->io_netif->nif_unit].phys_addr;
- ie_softc.sc_mem = (struct iemem *) 0x1e0000;
+ ie_softc.sc_mem = (struct iemem *) 0xae0000;
ie_reset(desc->io_netif, desc->myea);
printf("device: %s%d attached to %s\n", nif->nif_driver->netif_bname,
nif->nif_unit, ether_sprintf(desc->myea));