summaryrefslogtreecommitdiff
path: root/sys/arch
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arch')
-rw-r--r--sys/arch/amiga/stand/loadbsd/Makefile9
-rw-r--r--sys/arch/amiga/stand/loadbsd/Makefile.bsd-wrapper15
-rw-r--r--sys/arch/amiga/stand/loadbsd/loadbsd.8155
-rw-r--r--sys/arch/amiga/stand/loadbsd/loadbsd.c9
-rw-r--r--sys/arch/amiga/stand/loadbsd/loadbsd.gz.uu247
5 files changed, 428 insertions, 7 deletions
diff --git a/sys/arch/amiga/stand/loadbsd/Makefile b/sys/arch/amiga/stand/loadbsd/Makefile
index dfa5fd6e802..bf93cb95b8c 100644
--- a/sys/arch/amiga/stand/loadbsd/Makefile
+++ b/sys/arch/amiga/stand/loadbsd/Makefile
@@ -1,4 +1,4 @@
-# $OpenBSD: Makefile,v 1.3 1998/08/13 21:08:08 espie Exp $
+# $OpenBSD: Makefile,v 1.4 1999/09/09 21:25:13 espie Exp $
CC = gcc
CFLAGS = -m68030 -Wall -O3 -fomit-frame-pointer -D__progname=program_name -msmall-code -resident
@@ -11,7 +11,7 @@ PROGS=loadbsd loadbsd.ixemul
LIBS =
LDFLAGS=-s
-all: $(PROGS)
+all: $(PROGS) distrib
loadbsd: $(OBJS1)
$(CC) $(CFLAGS) $(LDFLAGS) -noixemul -o loadbsd $(OBJS1) $(LIBS)
@@ -19,5 +19,10 @@ loadbsd: $(OBJS1)
loadbsd.ixemul: $(OBJS2)
$(CC) $(CFLAGS) $(LDFLAGS) -o loadbsd.ixemul $(OBJS2) $(LIBS)
+distrib: loadbsd
+ gzip -c loadbsd >loadbsd.gz
+ echo loadbsd built on `date` with gcc `gcc -dumpversion` >loadbsd.gz.uu
+ uuencode loadbsd.gz loadbsd.gz >>loadbsd.gz.uu
+
clean:
-rm $(OBJS1) $(OBJS2) $(PROGS)
diff --git a/sys/arch/amiga/stand/loadbsd/Makefile.bsd-wrapper b/sys/arch/amiga/stand/loadbsd/Makefile.bsd-wrapper
new file mode 100644
index 00000000000..6782d8d477e
--- /dev/null
+++ b/sys/arch/amiga/stand/loadbsd/Makefile.bsd-wrapper
@@ -0,0 +1,15 @@
+# $OpenBSD: Makefile.bsd-wrapper,v 1.1 1999/09/09 21:25:13 espie Exp $
+
+all: loadbsd
+
+loadbsd: loadbsd.gz
+ zcat ${.ALLSRC} >$@
+
+loadbsd.gz: loadbsd.gz.uu
+ uudecode ${.ALLSRC}
+
+CLEANFILES=loadbsd loadbsd.gz
+
+MAN=loadbsd.8
+
+.include <bsd.prog.mk>
diff --git a/sys/arch/amiga/stand/loadbsd/loadbsd.8 b/sys/arch/amiga/stand/loadbsd/loadbsd.8
new file mode 100644
index 00000000000..19cd2f7acb0
--- /dev/null
+++ b/sys/arch/amiga/stand/loadbsd/loadbsd.8
@@ -0,0 +1,155 @@
+.\" $OpenBSD: loadbsd.8,v 1.1 1999/09/09 21:25:13 espie Exp $
+.\" Copyright (c) 1999 Marc Espie
+.\"
+.\" 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.
+.Dd September 9, 1999
+.Dt LOADBSD 1
+.Os
+.Sh NAME
+.Nm loadbsd
+.Nd load OpenBSD from AmigaOS
+.Sh SYNOPSIS
+.Nm
+.Op Fl abchkpstADSVZ
+.Op Fl C Ar machine
+.Op Fl m Ar mem
+.Op Fl n Ar flags
+.Op Fl I Ar sync-inhibit
+.Ar file
+.Sh DESCRIPTION
+The
+.Nm
+utility loads the
+.Os
+kernel from
+.Ar file
+under AmigaOS, and starts
+.Ox .
+.Nm
+only runs under AmigaOS 2.0 or better,
+but it no longer needs ixemul.
+.Pp
+.Nm
+supports multiple root devices. By default,
+.Nm
+boots to single-user mode, without symbols.
+.Pp
+Options are as follows:
+.Bl -tag -width Ds
+.It Fl a
+Boot up to multiuser mode.
+.It Fl A
+Use AGA display mode, if available.
+.It Fl b
+Prompt for root device.
+.It Fl C Ar machine
+Explicitly set machine type (e.g., 3000). Set
+.Ar machine
+to 32000+N for DraCo revision N.
+Normally,
+.Nm
+guesses the machine type itself, but there are some cases
+where it guesses wrong, thanks to AmigaOS lame design.
+.It Fl c
+User configuration mode.
+.It Fl D
+Enter ddb on startup.
+.It Fl h
+Display help.
+.It Fl I Ar sync-inhibit
+Inhibit sync-negotiation.
+.Ar sync-inhibit
+is bit-encoded targets.
+.It Fl k
+Reserve the first 4M of fast mem.
+.\" Try to find out what this is used for.
+.It Fl m Ar mem
+Tweak available memory to find the minimum amount necessary to use a
+kernel. Set fastmem size to
+.Ar mem
+in Kbytes.
+.It Fl n Ar flags
+Multiple non-contiguous memory mode.
+Disable if
+.Ar flags
+is 0. Set to two segments if
+.Ar flags
+is 1. Set to all avail segments if
+.Ar flags
+is 2.
+.\" Check what 3 means (same as 2 ?)
+.It Fl p
+Use highest priority fastmem segement instead of the largest
+segment. The higher priority segment is usually faster
+(i.e. 32 bit memory), but some people have smaller amounts
+of 32 bit memory.
+.It Fl s
+Boot up in single user mode.
+.It Fl S
+Include kernel symbol table.
+.It Fl t
+Test configuration. Check the machine, and loads the kernel,
+but stop without actually starting
+.Os .
+.It Fl V
+Print version.
+.It Fl Z
+Force kernel to chipmem.
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "cpu not supported"
+.Nm
+doesn't run without a MMU, nor with a 68851. So 68000, 68010 and 68020 don't
+work.
+.It "failed malloc"
+.Nm
+couldn't find a contiguous chunk of memory large enough for the kernel.
+The required size is displayed in bytes.
+If you have enough memory, reboot to remove fragmentation problems.
+.It "lseek for symbols"
+You asked for symbols with
+.Fl S
+but
+.Nm
+doesn't find any. Probably a striped kernel.
+.It "newer loadbsd required"
+.Nm
+can't load all kernels, because it needs to pass parameters to the
+kernel at startup, and the interface may change.
+.It "unable to read kernel image"
+The
+.Ar file
+is not a valid a.out executable. The header matches, but the contents
+are wrong. Might come from a transfert problem, or an attempt to cross-compile
+kernels on a different endian machines. The toolchain doesn't support cross-endianess
+up to
+.Ox 2.5
+included.
+.It "unknown binary"
+The file
+.Ar file
+is not a kernel image. Note that
+.Nm
+currently cannot read gzipped kernels.
+.\" Not all diagnostics are documented,
+.\" but the remaining ones come from arcane options,
+.\" so the user is expected to refer to the source.
+.El
+.Sh SEE ALSO
+.Xr ddb 4
+.Sh HISTORY
+.Nm
+was originally developped for
+.Nx .
+ixemul requirement removal and poolmem recognition features
+were added for
+.Ox
+by Marc Espie.
diff --git a/sys/arch/amiga/stand/loadbsd/loadbsd.c b/sys/arch/amiga/stand/loadbsd/loadbsd.c
index 4983d13bfb0..21b4d7d1738 100644
--- a/sys/arch/amiga/stand/loadbsd/loadbsd.c
+++ b/sys/arch/amiga/stand/loadbsd/loadbsd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: loadbsd.c,v 1.12 1998/08/13 21:08:15 espie Exp $ */
+/* $OpenBSD: loadbsd.c,v 1.13 1999/09/09 21:25:13 espie Exp $ */
/* $NetBSD: loadbsd.c,v 1.22 1996/10/13 13:39:52 is Exp $ */
/*
@@ -80,9 +80,6 @@ void warnx __P((const char *, ...));
#endif
extern const char _version[];
-extern void open_libraries(void);
-extern void ensure_no_poolmem(void);
-
/*
* Version history:
* 1.x Kernel startup interface version check.
@@ -171,7 +168,9 @@ void startit __P((void *, u_long, u_long, void *, u_long, u_long, int, void *,
int, int, u_long, u_long, int));
void startit_end __P((void));
-extern void ensure_no_poolmem(void);
+extern void open_libraries __P((void));
+extern void ensure_no_poolmem __P((void));
+
extern struct ExecBase *SysBase;
extern char *optarg;
extern int optind;
diff --git a/sys/arch/amiga/stand/loadbsd/loadbsd.gz.uu b/sys/arch/amiga/stand/loadbsd/loadbsd.gz.uu
new file mode 100644
index 00000000000..8e86df78b1c
--- /dev/null
+++ b/sys/arch/amiga/stand/loadbsd/loadbsd.gz.uu
@@ -0,0 +1,247 @@
+loadbsd built on Thu Sep 9 11:42:57 GMT 1999 with gcc 2.95.1
+begin 755 loadbsd.gz
+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
+=Z&^`_D8>4_C8<B/^/^XMQ+B^^[\`VQ&D:SA&```!
+`
+end