diff options
Diffstat (limited to 'sys/boot/i386/loader')
| -rw-r--r-- | sys/boot/i386/loader/Makefile | 72 | ||||
| -rw-r--r-- | sys/boot/i386/loader/conf.c | 10 | ||||
| -rw-r--r-- | sys/boot/i386/loader/help.i386 | 34 | ||||
| -rw-r--r-- | sys/boot/i386/loader/main.c | 46 | ||||
| -rwxr-xr-x | sys/boot/i386/loader/newvers.sh | 1 | ||||
| -rw-r--r-- | sys/boot/i386/loader/setdef0.c | 49 | ||||
| -rw-r--r-- | sys/boot/i386/loader/setdef1.c | 41 |
7 files changed, 123 insertions, 130 deletions
diff --git a/sys/boot/i386/loader/Makefile b/sys/boot/i386/loader/Makefile index 053fbd3488620..02fd2d005a1a8 100644 --- a/sys/boot/i386/loader/Makefile +++ b/sys/boot/i386/loader/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.27 1999/01/11 05:52:28 msmith Exp $ +# $Id: Makefile,v 1.11 1998/10/12 01:03:00 rnordier Exp $ BASE= loader PROG= ${BASE} @@ -11,17 +11,8 @@ BINDIR?= /boot SRCS= main.c conf.c # Enable PnP and ISA-PnP code. -HAVE_PNP= yes -HAVE_ISABUS= yes - -# Enable BootForth -BOOT_FORTH= yes -CFLAGS+= -DBOOT_FORTH -I${.CURDIR}/../../ficl -.if exists(${.OBJDIR}/../../ficl/libficl.a) -LIBFICL= ${.OBJDIR}/../../ficl/libficl.a -.else -LIBFICL= ${.CURDIR}/../../ficl/libficl.a -.endif +#HAVE_PNP= yes +#HAVE_ISABUS= yes # Always add MI sources .PATH: ${.CURDIR}/../../common @@ -29,7 +20,8 @@ LIBFICL= ${.CURDIR}/../../ficl/libficl.a CFLAGS+= -I${.CURDIR}/../../common CFLAGS+= -I${.CURDIR}/../../.. -I. -CLEANFILES+= vers.c vers.o ${BASE}.list ${BASE}.bin ${BASE}.sym ${BASE}.help +CLEANFILES+= vers.c vers.o ${BASE}.list setdef0.o setdef1.o setdefs.h \ + gensetdefs.o gensetdefs ${BASE}.bin CFLAGS+= -Wall LDFLAGS= -nostdlib -static -Ttext 0x1000 @@ -57,9 +49,6 @@ CFLAGS+= -I${.CURDIR}/../btx/lib # BTX is expecting ELF components CFLAGS+= -elf -# New linker set code -CFLAGS+= -DNEW_LINKER_SET - # Debug me! #CFLAGS+= -g #LDFLAGS+= -g @@ -68,47 +57,34 @@ vers.o: sh ${.CURDIR}/newvers.sh ${.CURDIR}/version ${NEWVERSWHAT} ${CC} -c vers.c -${BASE}: ${BASE}.bin ${BTXLDR} ${BTXKERN} ${BTXCRT} ${BASE}.help +${BASE}: ${BASE}.bin ${BTXLDR} ${BTXKERN} btxld -v -f aout -e 0x100000 -o ${.TARGET} -l ${BTXLDR} -b ${BTXKERN} \ ${BASE}.bin -# /usr/bin/kzip ${.TARGET} -# mv ${.TARGET}.kz ${.TARGET} - -${BASE}.bin: ${BASE}.sym - cp ${.ALLSRC} ${.TARGET} - strip ${.TARGET} - -${BASE}.help: help.common help.i386 - cat ${.ALLSRC} | awk -f ${.CURDIR}/../../common/merge_help.awk > ${.TARGET} - -beforeinstall: -.if exists(${DESTDIR}/boot/loader) - mv ${DESTDIR}/boot/loader ${DESTDIR}/boot/loader.old -.endif -.if exists(${.OBJDIR}/loader.help) - ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 \ - ${.OBJDIR}/${BASE}.help ${DESTDIR}/boot -.else - ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 \ - ${.CURDIR}/${BASE}.help ${DESTDIR}/boot -.endif -# Cannot use ${OBJS} above this line -.include <bsd.prog.mk> +${BASE}.bin: ${OBJS} ${LIBI386} vers.o setdef0.o setdef1.o + ${CC} ${LDFLAGS} -o ${.TARGET} ${BTXCRT} setdef0.o ${OBJS} vers.o setdef1.o \ + ${LIBSTAND} ${LIBI386} ${LIBSTAND} -${BASE}.sym: ${OBJS} ${LIBI386} ${LIBSTAND} ${LIBFICL} vers.o - ${CC} ${LDFLAGS} -o ${.TARGET} ${BTXCRT} ${OBJS} vers.o \ - ${LIBFICL} ${LIBSTAND} ${LIBI386} ${LIBSTAND} +setdef0.o: setdefs.h -# If it's not there, don't consider it a target -.if exists(${.CURDIR}/../../../i386/include) -beforedepend ${OBJS}: machine +setdef1.o: setdefs.h machine: ln -sf ${.CURDIR}/../../../i386/include machine -.endif - CLEANFILES+= machine +.include <bsd.prog.mk> +# Linker set gymnastics +setdefs.h: gensetdefs ${OBJS} + @echo Generating linker sets + @./gensetdefs ${OBJS} >setdefs.h + +gensetdefs: gensetdefs.o + ${CC} -static gensetdefs.o -o $@ + +gensetdefs.o: gensetdefs.c + ${CC} -c $< + +beforedepend ${OBJS}: machine diff --git a/sys/boot/i386/loader/conf.c b/sys/boot/i386/loader/conf.c index 9b4d554bc1a03..d39d67f33873d 100644 --- a/sys/boot/i386/loader/conf.c +++ b/sys/boot/i386/loader/conf.c @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: conf.c,v 1.9 1998/10/22 20:23:58 msmith Exp $ + * $Id: conf.c,v 1.6 1998/09/30 19:48:42 peter Exp $ */ #include <stand.h> @@ -85,12 +85,10 @@ struct console *consoles[] = { }; extern struct pnphandler isapnphandler; -extern struct pnphandler biospnphandler; -extern struct pnphandler biospcihandler; +/* extern struct pnphandler pcipnphandler;*/ struct pnphandler *pnphandlers[] = { - &biospnphandler, /* should go first, as it may set isapnp_readport */ - &isapnphandler, - &biospcihandler, +/* &isapnphandler, */ +/* &pcipnphandler, */ NULL }; diff --git a/sys/boot/i386/loader/help.i386 b/sys/boot/i386/loader/help.i386 deleted file mode 100644 index 81288250ade0e..0000000000000 --- a/sys/boot/i386/loader/help.i386 +++ /dev/null @@ -1,34 +0,0 @@ -################################################################################ -# Treboot DReboot the system - - reboot - - Causes the system to immediately reboot. - -################################################################################ -# Theap DDisplay memory management statistics - - heap - - Requests debugging output from the heap manager. For debugging use - only. - -################################################################################ -# Tset Snum_ide_disks DSet the number of IDE disks - - set num_ide_disks=<value> - - When booting from a SCSI disk on a system with one or more IDE disks, - and where the IDE disks are the default boot device, it is necessary - to tell the kernel how many IDE disks there are in order to have it - correctly locate the SCSI disk you are booting from. - -################################################################################ -# Tset Sboot_userconfig DStart Userconfig - - set boot_userconfig - - Requests that the kernel's interactive device configuration program - be run when the kernel is booted. - -################################################################################ diff --git a/sys/boot/i386/loader/main.c b/sys/boot/i386/loader/main.c index dfd1bfffbb98c..b9e93f49b357e 100644 --- a/sys/boot/i386/loader/main.c +++ b/sys/boot/i386/loader/main.c @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: main.c,v 1.13 1998/10/22 20:23:58 msmith Exp $ + * $Id: main.c,v 1.10 1998/10/03 18:27:50 rnordier Exp $ */ /* @@ -58,8 +58,6 @@ static struct bootinfo *initial_bootinfo; struct arch_switch archsw; /* MI/MD interface boundary */ static void extract_currdev(void); -static int isa_inb(int port); -static void isa_outb(int port, int value); /* from vers.c */ extern char bootprog_name[], bootprog_rev[], bootprog_date[], bootprog_maker[]; @@ -98,11 +96,6 @@ main(void) cons_probe(); /* - * Initialise the block cache - */ - bcache_init(32, 512); /* 16k cache XXX tune this */ - - /* * March through the device switch probing for things. */ for (i = 0; devsw[i] != NULL; i++) @@ -112,6 +105,10 @@ main(void) printf("\n"); printf("%s, Revision %s %d/%dkB\n", bootprog_name, bootprog_rev, getbasemem(), getextmem()); printf("(%s, %s)\n", bootprog_maker, bootprog_date); +#if 0 + printf("recovered args howto = 0x%x bootdev = 0x%x bootinfo = %p\n", + initial_howto, initial_bootdev, initial_bootinfo); +#endif extract_currdev(); /* set $currdev and $loaddev */ setenv("LINES", "24", 1); /* optional */ @@ -121,8 +118,6 @@ main(void) archsw.arch_copyin = i386_copyin; archsw.arch_copyout = i386_copyout; archsw.arch_readin = i386_readin; - archsw.arch_isainb = isa_inb; - archsw.arch_isaoutb = isa_outb; interact(); /* doesn't return */ } @@ -200,34 +195,3 @@ command_heap(int argc, char *argv[]) printf("heap base at %p, top at %p\n", end, sbrk(0)); return(CMD_OK); } - -/* ISA bus access functions for PnP, derived from <machine/cpufunc.h> */ -static int -isa_inb(int port) -{ - u_char data; - - if (__builtin_constant_p(port) && - (((port) & 0xffff) < 0x100) && - ((port) < 0x10000)) { - __asm __volatile("inb %1,%0" : "=a" (data) : "id" ((u_short)(port))); - } else { - __asm __volatile("inb %%dx,%0" : "=a" (data) : "d" (port)); - } - return(data); -} - -static void -isa_outb(int port, int value) -{ - u_char al = value; - - if (__builtin_constant_p(port) && - (((port) & 0xffff) < 0x100) && - ((port) < 0x10000)) { - __asm __volatile("outb %0,%1" : : "a" (al), "id" ((u_short)(port))); - } else { - __asm __volatile("outb %0,%%dx" : : "a" (al), "d" (port)); - } -} - diff --git a/sys/boot/i386/loader/newvers.sh b/sys/boot/i386/loader/newvers.sh index 476913be37a0d..34b0e7e674d9e 100755 --- a/sys/boot/i386/loader/newvers.sh +++ b/sys/boot/i386/loader/newvers.sh @@ -35,7 +35,6 @@ # # @(#)newvers.sh 8.1 (Berkeley) 4/20/94 -LC_TIME=C; export LC_TIME u=${USER-root} h=`hostname` t=`date` #r=`head -n 6 $1 | tail -n 1 | awk -F: ' { print $1 } '` r=`awk -F: ' /^[0-9]\.[0-9]+:/ { print $1; exit }' $1` diff --git a/sys/boot/i386/loader/setdef0.c b/sys/boot/i386/loader/setdef0.c new file mode 100644 index 0000000000000..e2af74e843938 --- /dev/null +++ b/sys/boot/i386/loader/setdef0.c @@ -0,0 +1,49 @@ +/*- + * Copyright (c) 1997 John D. Polstra + * 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. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. + * + * $Id: setdef0.c,v 1.2 1997/05/21 23:21:30 jdp Exp $ + */ + +#ifdef __ELF__ + +#include <sys/param.h> +#include <sys/kernel.h> + +/* + * DEFINE_SET creates the section and label for a set, and emits the + * count word at the front of it. + */ +#define DEFINE_SET(set, count) \ + __asm__(".section .set." #set ",\"aw\""); \ + __asm__(".globl " #set); \ + __asm__(".type " #set ",@object"); \ + __asm__(".p2align 2"); \ + __asm__(#set ":"); \ + __asm__(".long " #count); \ + __asm__(".previous") + +#include "setdefs.h" /* Contains a `DEFINE_SET' for each set */ + +#endif /* __ELF__ */ diff --git a/sys/boot/i386/loader/setdef1.c b/sys/boot/i386/loader/setdef1.c new file mode 100644 index 0000000000000..3f2011920526a --- /dev/null +++ b/sys/boot/i386/loader/setdef1.c @@ -0,0 +1,41 @@ +/*- + * Copyright (c) 1997 John D. Polstra + * 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. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. + * + * $Id: setdef1.c,v 1.2 1997/05/21 23:21:30 jdp Exp $ + */ + +#ifdef __ELF__ + +/* + * DEFINE_SET emits the NULL terminator for a set. + */ +#define DEFINE_SET(set, count) \ + __asm__(".section .set." #set ",\"aw\""); \ + __asm__(".long 0"); \ + __asm__(".previous") + +#include "setdefs.h" /* Contains a `DEFINE_SET' for each set */ + +#endif /* __ELF__ */ |
