Commit Graph

450 Commits

Author SHA1 Message Date
rnordier
19b83af292 biosboot compatibility fix:
If we have a boot.config command, display it.
1998-10-17 09:16:01 +00:00
rnordier
ebcd17d6c6 biosboot compatibility fix:
Read boot.help before parsing boot.config.  We were parsing
boot.config first, which could result in boot.help being read
from a different location (or not found), which would probably
just cause surprise, without being useful.
1998-10-17 09:01:13 +00:00
rnordier
764f911a88 Fix path to sio.s 1998-10-15 22:08:13 +00:00
rnordier
0b71e4f0b7 Add serial, dual, and probe-keyboard support. 1998-10-15 20:04:21 +00:00
peter
d1bde99276 Get the last used address via a more conservative method, don't depend
on the module chain being in increasing address order.
1998-10-15 17:06:36 +00:00
rnordier
fa52c3954a Activate boot2. 1998-10-14 20:40:56 +00:00
peter
5e3acbf57e Try and get the sys/* and machine/* includes via relative paths. This
saves having to do a 'make includes' after touching any header file for
the boot code.
1998-10-14 07:08:16 +00:00
peter
0966fead52 Align to sizeof(long) rather than sizeof(int32_t). It needs to be
long because this code is shared with the alpha.  I hope the alpha can
read 32 bit ints at 32 bit alignment (vs. 64 bit alignment).
1998-10-14 05:07:23 +00:00
rnordier
f844028be7 Fix btx include path. 1998-10-14 01:53:56 +00:00
rnordier
e4f3dfea8d Include <bsd.prog.mk>. Add install target (to /boot for now). 1998-10-14 00:24:16 +00:00
rnordier
828b808519 Fix flow of control after directory listing; enable EDD support;
cosmetics.
1998-10-13 23:43:38 +00:00
rnordier
0cb607c6dc Make v86.ctl default more explicit; simplify read error-handling;
twiddle.
1998-10-13 23:00:47 +00:00
rnordier
a168d3cb17 Adjust NDEV value.
Optimize reading of system time.
1998-10-13 22:17:05 +00:00
rnordier
4c49cf4675 Change to a 15-sector boot2.
Refine slice-handling.
1998-10-13 21:35:42 +00:00
rnordier
05e05b3c64 Don't use an absolute path to objcopy.
Noticed by: Scott Mace <smace@intt.org>
1998-10-13 18:29:18 +00:00
rnordier
38a0335208 Improve drive recognition and handling. 1998-10-13 17:41:06 +00:00
rnordier
c4aec13535 New boot blocks: support for /boot/loader; a.out & ELF; cyl > 1023;
multiple 0xa5 slices; etc.
1998-10-12 21:16:26 +00:00
rnordier
e3811b3bae This commit was generated by cvs2svn to compensate for changes in r40269,
which included commits to RCS files with non-trunk default branches.
1998-10-12 21:16:26 +00:00
rnordier
0a456c31da New boot blocks: support for /boot/loader; a.out & ELF; cyl > 1023;
multiple 0xa5 slices; etc.
1998-10-12 21:16:26 +00:00
rnordier
e0698462f3 Drop .MAKEFLAGS: hack. 1998-10-12 02:05:44 +00:00
rnordier
6924fedb20 Do without head and tail: they're pretty unnecessary here anyway. 1998-10-12 01:44:15 +00:00
rnordier
34a71608ef Use rather than for linking. This allows the new rather
than stale version of libstand.a to be found.

After this change, the new boot code is apparently building correctly
in a make world.
1998-10-12 01:03:00 +00:00
rnordier
45d3f503c7 Override for ELF. 1998-10-11 12:59:40 +00:00
rnordier
acc5d22f1d Override for ELF. Override .s.o suffix rule. 1998-10-11 11:27:48 +00:00
peter
9777d36292 Fix a warning that's been bugging me for ages. 1998-10-11 10:29:49 +00:00
peter
000dea089b Only call vidc_init() once (unless forced).
Cosmetic change to the init-time character eater (like, make it increment
the index counter - if there's a problem, it would sit there in an infinite
loop instead of only running 10 times).
1998-10-11 10:07:52 +00:00
peter
ea08aa4013 Fix comconsole mode. The int 0x14 read and status commands were reversed.
Also, make sure we set %dx each time around otherwise the commands
suddenly start trying to work on things like com92 instead of com1.
Make sure comc_init() is only run once.
Cosmetic change to init-time character eater.
1998-10-11 10:05:13 +00:00
peter
2f4399a063 Warn that one of the DEBUG statements has a v86 recursion bug. 1998-10-11 10:01:55 +00:00
peter
8a8128b194 Fix comment to match code 1998-10-11 09:53:30 +00:00
rnordier
ff07c61cc9 Fix a typo.
Output another newline before invoking bootstrap.
1998-10-10 14:03:03 +00:00
rnordier
adfacacde6 Turn off the new /sys/boot stuff (except boot0) unless OBJFORMAT
is elf.  (The BTX client must be ELF, though it is packaged as a.out
for compatibility.)
1998-10-09 23:30:16 +00:00
peter
cf0b734c3d Attempt to at least align MODINFO_* blocks. IMHO, decoding this stuff
should be MD code since one day we'll have to recover pages from deleted
preload data.  MI code can't be expected to know how to deal with pmap
internals, assuming it gets done via pmap that is. :-)
1998-10-09 23:24:55 +00:00
peter
259638944d Turn symbol table info passing back on, although it's probably not
particularly useful in this form.  KLD can deal with it much better.
setenv kernelname moved earlier.
1998-10-09 23:22:30 +00:00
peter
aa0de1fb18 Remove kernelname setenv, the common code does it.
Use the metadata for symtab pointers, mainly to keep it common with
elf_freebsd.c.
1998-10-09 23:20:47 +00:00
rnordier
017fa2eb67 Get this building as a.out or ELF.
With thanks to: jdp
1998-10-09 17:19:51 +00:00
msmith
ac6a24ba47 Remove some debugging code.
Do a much better job of DWIM with partial device specifications.
Fix the module metadata build process, which was completely broken.
Use a larger read buffer when copying large objects in; this
improves performance marginally and will avoid flushning any small caches
we might choose to implement.
1998-10-09 07:11:19 +00:00
peter
e21834764b Fix that pesky boot aguments parsing bug. (I think :-) 1998-10-07 10:55:46 +00:00
msmith
aaa2a6fba9 Request the flags back when checking for keyboard status.
Submitted by:	rnordier
1998-10-07 07:34:31 +00:00
msmith
29868f7f79 Enable the DOS filesystem. NOTE: you will have to rebuild libstand in
order to be able to build again.
1998-10-07 02:39:32 +00:00
msmith
87bb4f6f57 - Drain the keyboard buffer when initialising.
- Be pedantic about the return from int 16 fn 01.
1998-10-07 02:39:06 +00:00
msmith
9d7a6d77c8 bootinfo.c
Strip any device name information from the kernel name
	before passing it in.

biosdisk.c
	Be more strict about matching device names to slice entries.
	Only allow unsliced syntax on unsliced disks.
1998-10-06 07:27:05 +00:00
rnordier
484920ce83 Fix for "get base memory" bug found and mostly fixed by Mike. 1998-10-06 07:15:35 +00:00
msmith
723e5c6a84 The BIOS memory size is only a word. Some BIOSsen have garbage in the other
16 bits we were reading here, causing loss of arguments.
1998-10-06 06:13:36 +00:00
msmith
1a62a98115 Build boot0 as well. 1998-10-06 06:12:55 +00:00
rnordier
57f6784e78 Install in /boot. 1998-10-05 19:20:36 +00:00
rnordier
e5d9330f4d boot0 is a booteasy (boot manager) workalike with EDD support. 1998-10-05 10:08:37 +00:00
rnordier
e2e5ad22f0 This commit was generated by cvs2svn to compensate for changes in r39973,
which included commits to RCS files with non-trunk default branches.
1998-10-05 10:08:37 +00:00
rnordier
dd5f9d7739 Adjust setting of argument pointer for BTX 0.87. 1998-10-04 21:15:45 +00:00
rnordier
93bf58f69c Allocate space for storing of arguments at the end of conventional
memory.
1998-10-04 21:14:33 +00:00
msmith
c53904ec56 Don't include ELF symbol information yet - it causes the ELF DDB to
explode.
1998-10-04 20:58:46 +00:00
msmith
2e5ae0a020 Improve the handling of the initial bootdev value from the previous loader.
Remove some unused code.
1998-10-04 09:12:54 +00:00
msmith
19c8db49e0 biosdisk.c
Allocate space for, and copy, NDOSPART slice entries from the
	MBR, not just one.  Add some extra debugging while we're at it.

elf_freebsd.c
	Initialise the symbol table start/end pointers in case we don't
	have them.
1998-10-04 09:12:15 +00:00
rnordier
b21275d877 Missing newline in heap command display.
Noticed by: jkh
1998-10-03 18:27:50 +00:00
rnordier
c59c5c0235 For system calls, reboot without prompting; for exceptions, display
message and await reset.
1998-10-03 18:05:12 +00:00
rnordier
5638c62ba7 Map all BTX system pages readable at ring 3.
This resolves the firmware problem first raised in connection
with PR 8105, although unrelated.
1998-10-03 14:33:06 +00:00
rnordier
9d6dbb0c2e bootinfo bi_vesa no longer exists. 1998-10-03 14:13:30 +00:00
msmith
6d472197ec Consolidate the bootinfo-loading code, greatly simplifying the _exec
functions.
1998-10-02 20:53:17 +00:00
msmith
f72bb5109c Fix an egregious precedence bug. 1998-10-02 20:52:26 +00:00
msmith
bcb24d714a Set $currdev according to our best guess at the BIOS device that the previous
bootstrap loaded us from.
1998-10-02 16:33:43 +00:00
msmith
a7e19924ad aout_freebsd.c
Use bd_getdev() to work out a dev_t for the root device.
	Allow $rootdev to override $currdev as the root device.

biosdisk.c
	Save the slice table and disklabel when opening a disk.
	Add bd_getdev(), which attempts to return a dev_t corresponding
	to a given device.  Cases which it still doesn't get right:
	 - The inevitable da-when-wd-also-exists
	 - Disks with no slice table (the slice number is not set correctly)
	The first is difficult to get right, the second will be
	fixed in an upcoming commit.

comconsole.c
vidconsole.c
	getchar() should return an 8-bit value; some BIOSsen pack extra
	information in %eax.

libi386.h
	Remove some stale prototypes, add new ones.
1998-10-02 16:32:45 +00:00
msmith
4e9232983b Mark exit() as __attribute__((__noreturn__)) 1998-10-02 16:22:54 +00:00
peter
a79bd7a693 First shot at loading elf symbols. Things are a bit strange because
of the ..umm.. "wierd" way binutils lays out the file.  The section
headers are nearly at the end of the file and this is a problem when
loading from a .gz file which can't seek backwards (or has a limited
reverse seek, ~2K from memory).

This is intended to be compatable with the ddb/db_elf.c code and the
alpha/libalpha/elf_freebsd.c layout.  I've studied these (which are NetBSD
derived) but did it a bit differently.  Naturally the process is similar
since it's supposed to end up with the same result.
1998-10-02 08:04:56 +00:00
jkh
5b11e52736 Override STRIP so installation doesn't try to strip the loader. 1998-10-01 09:57:09 +00:00
peter
67498e0651 Make 'make install' do something that might be useful. 1998-09-30 22:37:47 +00:00
peter
2a56913e23 Stop libi386.a from being installed.. 1998-09-30 22:36:45 +00:00
peter
3dd2274e4f Turn on i386-elf 1998-09-30 19:48:42 +00:00
peter
aa07eb9f84 i386 ELF loader startup backend. On an ELF kernel booted with the 3-stage
bootblocks, the kernel shows up as the primary module:

[3:24am]~-100# kldstat
Id Refs Address  Size     Name
 1    1 0xf0100000 ff00000  /kernel
		   ^^^^ oops.. :-)

Based heavily on aout_freebsd.c.  Hmm.. There's so much in common that
these could probably be combined and just check the metadata to see which
format it is.
1998-09-30 19:48:09 +00:00
peter
736cc28307 Save booted kernel name. Cosmetic cleanups. 1998-09-30 19:42:06 +00:00
peter
3a7eff1835 Fix typos.. The vector for "int 0x12" (get base mem) is not written in
hex as "0x1a". :-)
Fix a comment about the extended memory checks, that's int 0x15.
1998-09-30 19:41:07 +00:00
peter
fc873fcda4 The bootinfo struct was getting clobbered or not passed through correctly.
Presumably VTOP doesn't work for static objects.
The easiest way to get it working was to reserve some space after the
environment strings and copy the bootinfo struct there.
Also, set RB_BOOTINFO, it's needed.

I got the code to load and run an unmolested kernel OK for the first time
with this system a few minutes ago - at last!.  I did have to stop it
looking at the floppy though as BTX was trapping a mode 14 fault when
it look for /boot/boot.conf when no disk was in the drive. (I'm booting
from a scsi disk (bios disk 0x80)).

Now to teach it about ELF and modules :-)
1998-09-29 09:11:49 +00:00
peter
501805c399 Only bcopy the correct amount of data from the buffer in case it is ever
in an overrun situation.
1998-09-28 22:04:54 +00:00
peter
51b3ea754e Reactivate the a.out kernel loader code. 1998-09-28 22:01:20 +00:00
peter
6f52c26500 Missing return value that was kinda important. 1998-09-28 21:59:21 +00:00
peter
21ca5b8d5a Argh, I don't believe how much time I wasted looking for this...
Bytes of extended memory = (extkb * 1024), not (extkb + 1024)
1998-09-28 21:39:11 +00:00
peter
d3c472a717 The comconsole mode is accessed as 'comconsole' not 'com'. 1998-09-28 20:17:05 +00:00
peter
652e75ae6c MBR magic is 0x55aa not 0xffaa. 1998-09-28 20:08:34 +00:00
peter
a9ac15c833 Precedence bug (?) causing probe problems. 1998-09-28 20:07:39 +00:00
dfr
ad6ddb7767 * Add old UFS compatibility code to alpha/boot1.
* Fix a raft of warnings, printf and otherwise.
* Allocate the correct amount in mod_searchmodule to prevent an overflow.
* Fix the makefiles so they work outside my home directory (oops).
1998-09-26 10:51:38 +00:00
msmith
73ca5cb35b Recover the arguments passed in from the previous load stage, use them to set
the default console.
Print malloc stats from the new libstand allocator.
1998-09-26 01:31:10 +00:00
msmith
bfe7e4f757 The BIOS can't perform a floppy operation where the destination crosses
a physical 64k boundary.  Allocate a bounce buffer for such a transaction.
1998-09-26 01:30:20 +00:00
peter
9f5a84eacb Make these compile when there is an obj dir. 1998-09-25 17:14:16 +00:00
msmith
0a0d8ce99a Make libstand movable.
This completes the basic work required to make the loader work with BTX. We
now have a third-stage bootstrap shared by the i386 and Alpha.
1998-09-19 01:35:53 +00:00
msmith
0523a3e013 - Improve debugging code.
- Make the "what do we do with a drunken disklabel" if-then-else-regardless
   tangle easier to read.
 - Don't count on the v86 structure being preserved between loop iterations,
   as it may be trampled eg. by the DEBUG call.
1998-09-19 01:33:29 +00:00
msmith
c4d753268c Enable the biosdisk driver, duplicate -lstand as it both calls and is called
by the i386 platform library.
1998-09-18 02:03:30 +00:00
msmith
225ddd2fb1 Synch with development version. Compiles and opens but doesn't work yet. 1998-09-18 02:02:33 +00:00
msmith
757180a4cf We lost all the files in crt/, so define the BIOS sector size here instead. 1998-09-18 01:12:46 +00:00
msmith
f0b5ddae6f Initial integration of the i386 bootloader and BTX.
- Discard large amounts of BIOS-related code in favour of the more compact
   BTX vm86 interface.
 - Build the loader module as ELF, although the resulting object is a.out,
   make gensetdefs 32/64-bit sensitive and use a single copy of it.
 - Throw away installboot, as it's no longer required.
 - Use direct bcopy operations in the i386_copy module, as BTX
   maps the first 16M of memory.  Check operations against the
   detected size of actual memory.
1998-09-17 23:52:16 +00:00
rnordier
9e60491656 Add exec syscall. 1998-09-15 13:26:23 +00:00
msmith
97d5b83076 Resynch with working sources before BTX integration.
- Use format-independant module allocator.
 - Conditionalise ISA PnP support.
 - Simplify PnP enumerator interface.
 - Improve module/object searching.
 - Add missing depend/install targets in BTX makefiles.
 - Pass the kernel environment and module data in extended bootinfo fields.
 - Add a pointer to the end of the kernel + modules in bootinfo.
 - Fix parsing of old-style kernel arguments.
1998-09-14 18:27:06 +00:00
rnordier
71b1c34d38 Add BTX startup/interface code. 1998-09-14 10:37:00 +00:00
rnordier
ac5f389299 Enable client entry point support. 1998-09-13 13:28:07 +00:00
rnordier
b9a6cd3383 Add btxldr, a BTX loader for ELF clients. 1998-09-12 06:30:26 +00:00
rnordier
63bfe0d0ad BTX (aka the boot extender) is an i386 kernel that hosts 32-bit
bootstrap programs, and provides page-level protection, hardware
interrupt reflection, a virtual-8086 mode interface to BIOS, etc.
1998-09-12 04:29:23 +00:00
rnordier
10a70998a1 This commit was generated by cvs2svn to compensate for changes in r39088,
which included commits to RCS files with non-trunk default branches.
1998-09-12 04:29:23 +00:00
rnordier
b599878e77 BTX (aka the boot extender) is an i386 kernel that hosts 32-bit
bootstrap programs, and provides page-level protection, hardware
interrupt reflection, a virtual-8086 mode interface to BIOS, etc.
1998-09-12 04:29:23 +00:00
msmith
2feae82d78 Bootstrap updates.
- Move some startup code from MD to MI sections
 - Add a 'copyout' and some copyout-related functions.  These will be
   obsoleted when BTX is available for the 386 and the kernel load
   area becomes directly addressable.
 - Add the ability load an arbitrary file as a module, associating
   and arbitrary type string with it.  This can be used eg. for loading
   splash-screen images etc.
 - Add KLD module dependancy infrastructure.  We know how to look for
   dependancies inside KLD modules, how to resolve these dependancies
   and what to do if things go wrong.  Only works for a.out at the
   moment, due to lack of an MI ELF loader.  Attach KLD module information
   to loaded modules as metadata, but don't pass it to the kernel (it
   can find it itself).
 - Load a.out KLD modules on a page boundary.  Only pad the a.out BSS
   for the kernel, as it may want to throw symbols away.  (We might want
   to do this for KLD modules too.)
 - Allow commands to be hidden from the '?' display, to avoid cluttering
   it with things like 'echo'.  Add 'echo'.
 - Bring the 'prompt' command into line with the parser syntax.
 - Fix the verbose 'ls'; it was using an uninitialised stack variable.
 - Add a '-v' flag to 'lsmod' to have it display module metadata as well
   (not terribly useful for the average user)
 - Support a 'module searchpath' for required modules.
 - The bootstrap file on i386 is now called 'loader' to permit the
   /boot directory to use that name.
 - Discard the old i386 pread() function, as it's replaced by
   arch_readin()
1998-09-03 02:10:09 +00:00
msmith
815f3686d0 Bootloader update.
- Implement a new copyin/readin interface for loading modules.
   This allows the module loaders to become MI, reducing code duplication.
 - Simplify the search for an image activator for the loaded kernel.
 - Use the common module management code for all module metadata.
 - Add an 'unload' command that throws everything away.
 - Move the a.out module loader to MI code, add support for a.out
   kld modules.

Submitted by:	Alpha changes fixed by Doug Rabson <dfr@freebsd.org>
1998-08-31 21:10:43 +00:00
msmith
a33756afc0 This commit was generated by cvs2svn to compensate for changes in r38465,
which included commits to RCS files with non-trunk default branches.
1998-08-21 03:17:42 +00:00
msmith
fc79e25bdf This is the new unified bootstrap, sometimes known previously as the
'three-stage' bootstrap.
There are a number of caveats with the code in its current state:
 - The i386 bootstrap only supports booting from a floppy.
 - The kernel and kld do not yet know how to deal with the extended
   information and module summary passed in.
 - PnP-based autodetection and demand loading of modules is not implemented.
 - i386 ELF kernel loading is not ready yet.
 - The i386 bootstrap is loaded via an ugly blockmap.

On the alpha, both net- and disk-booting (SRM console machines only) is
supported.  No blockmaps are used by this code.

Obtained from:	Parts from the NetBSD/i386 standalone bootstrap.
1998-08-21 03:17:42 +00:00
msmith
8adeb775c4 This is the new unified bootstrap, sometimes known previously as the
'three-stage' bootstrap.
There are a number of caveats with the code in its current state:
 - The i386 bootstrap only supports booting from a floppy.
 - The kernel and kld do not yet know how to deal with the extended
   information and module summary passed in.
 - PnP-based autodetection and demand loading of modules is not implemented.
 - i386 ELF kernel loading is not ready yet.
 - The i386 bootstrap is loaded via an ugly blockmap.

On the alpha, both net- and disk-booting (SRM console machines only) is
supported.  No blockmaps are used by this code.

Obtained from:	Parts from the NetBSD/i386 standalone bootstrap.
1998-08-21 03:17:42 +00:00