Commit graph

389 commits

Author SHA1 Message Date
Robert Nordier 726c0943c0 Drop boot.help support. 1999-01-11 11:36:03 +00:00
Mike Smith 95d50652d0 No builtin command resets getopt before using it, causing
problems in case a wrong option was given previously, and no option
is given to the next command.

PR:		kern/9371
Submitted by:	"Daniel C. Sobral" <dcs@newsguy.com>
1999-01-11 06:41:32 +00:00
Mike Smith ba536e2ae8 Preserve the previous loader as loader.old.
Note no matching commit for the Alpha, as the alpha boot0 stage does
not have the ability to prompt for user input.

PR:		kern/9406
Submitted by:	 "Daniel C. Sobral" <dcs@newsguy.com>
1999-01-11 05:52:28 +00:00
Mike Smith f414995e5c Disable kzipping the loader; it seems to be breaking the aout-to-elf build 1999-01-10 20:20:27 +00:00
Steve Price 24d156f499 Remove redundant line of code.
PR:		9364
Submitted by:	Daniel C. Sobral <dcs@newsguy.com>
1999-01-10 18:22:23 +00:00
Robert Nordier c03fa7f977 Use etc/make.conf settings for serial port and speed.
Submitted by: rvb
Reviewed by: bde
1999-01-10 14:48:05 +00:00
Peter Wemm c03b24b2d8 Damn, I thought I had committed this already, but it seems not.
Move the relocated boot1 and arg transfer space from 0x600/0x800 to
0x700/0x900.  In theory this should make no difference, apart from the fact
that Buslogic controllers happen to use a few bytes at 0x600 for some sort
of scratch space for it's int 0x13 hook (!!!), causing the machine to crash
badly when the boot2 code makes it's callbacks into boot1 for disk IO.

Submitted by:	Robert Nordier <rnordier@freebsd.org>
1999-01-10 13:29:52 +00:00
Mike Smith e4329c9942 Enable escapes for $ to make it possible to insert variable names into
other variable values.
1999-01-10 05:08:12 +00:00
Mike Smith 244cf84b1e Explicitly look for kzip in /usr/bin, again this is a stopgap, to avoid
making kzip a build tool.
1999-01-09 20:14:46 +00:00
Mike Smith 82bbbb8c73 kzip the loader, this shrinks it to about 60% of its original size.
Note that this is a stopgap with dependancies on the a.out tools.
1999-01-09 02:38:40 +00:00
Mike Smith ee5799c4ee Extend bd_print() so that it displays slices and partitions on disks. 1999-01-09 02:36:19 +00:00
Mike Smith b6e83eb8f4 Add a description for 'lsdev' so that it shows up in the '?' display 1999-01-09 02:34:48 +00:00
Mike Smith 0f2ca06478 Alpha-specific help topics (currently empty) 1999-01-05 20:44:26 +00:00
Peter Wemm e423230b0d Fix a potential sign extension bug on 8-bit chars.
Outputting a backspace isn't supposed to be destructive..  It isn't on
most terminals, nor on the standard bios output (vs. TERM_EMU mode)
1999-01-04 18:45:08 +00:00
Peter Wemm 4cd1140888 Fix variable initialization.. It was written with '==' instead of '-'.
#include <string.h> for string prototypes.
1999-01-04 18:39:24 +00:00
Peter Wemm f68d58133b Clean some unused variables lint 1999-01-04 18:38:23 +00:00
Peter Wemm 717b58274a Don't forget a trailing \n when loading a kernel that has been stripped.
(This might make ELF_VERBOSE look funny, but I'm tempted to delete that
 anyway)
1999-01-04 18:37:41 +00:00
Mike Smith 170aadf69a Restore dependancy to build loader.help here 1999-01-04 01:28:46 +00:00
Mike Smith a2d84c6405 Add dependancy to build loader.help here 1999-01-04 01:28:39 +00:00
Mike Smith 9aad9a4900 First cut at generating loader.help for the alpha 1999-01-03 20:54:05 +00:00
Mike Smith 5dfcac87f7 Reenable generation of the loader.help file 1999-01-03 20:50:35 +00:00
Jordan K. Hubbard 8963f9f139 Update for new boot block location. 1999-01-02 23:22:12 +00:00
Andrzej Bialecki 8f1e6e6e22 Add support for some FACILITY words:
key? ( -- flag)  \ check to see if there's a key to be read from input
ms   ( u -- )    \ wait that many milliseconds
seconds ( -- u ) \ get number of seconds from midnight.

'words' now outputs the list page by page - this probably should go
through libstand's pager, but will have to wait for closer integration of
built-ins with Forth...

Submitted partially by:	W Gerald Hicks <wghicks@bellsouth.net>
1998-12-31 14:03:28 +00:00
Andrzej Bialecki de37e4a6d2 Add back ability to make beeps when using new TERM_EMU.
Submitted by:	W Gerald Hicks <wghicks@bellsouth.net>
1998-12-31 13:44:04 +00:00
Andrzej Bialecki cf9443f92b Add simple terminal emulator, compatible with cons25. Currently supported
capabilities are: AF, AB, cm, ho, me, cd. The code is hidden behind
-DTERM_EMU - should it cause any problems, you can remove this define
to get back the old behaviour.

You'll find some examples how to use it in src/share/examples/bootforth.

Reviewed by:	jkh
1998-12-22 11:51:25 +00:00
Andrzej Bialecki ac19ebdfbe Add new word ".#" which acts like "." but doesn't output a space separator.
I found it impossible to output parametrized strings like "\033[%d;%dH"
without building them first in pad area.
1998-12-22 11:46:27 +00:00
Andrzej Bialecki 1c49fb07d8 * Begin integration of built-ins with Forth: leave the exit code from
a built-in command on Forth stack.
* Fix a bug which was causing a panic when loading stripped aout kernels.

Reviewed by:	jkh
1998-12-22 11:41:51 +00:00
Nick Hibma e6799271cd Removed dynamic loading of FileHandle 1998-12-16 09:09:09 +00:00
Mike Smith c2e3e002f6 Disable build/install of boot.help until we sort out how to construct it
in the makeworld environment.
1998-12-16 02:27:15 +00:00
Mike Smith 8719fada36 Reformat help to improve subtopic display appearance, other minor
cleaning.  The 'help' command in the loader should now be usable and
hopefully informative.
1998-12-15 14:32:17 +00:00
Mike Smith aa203600d5 Build the composite help file from the generic and architecture-specific
help files, sorting topics and subtopics to allow maximum flexibility.
1998-12-15 14:21:30 +00:00
Mike Smith 330ef7ac09 unlocalise build date (merge from i386) 1998-12-15 04:27:15 +00:00
Andrey A. Chernov 722135c358 unlocalize date
Submitted by: Cejka Rudolf <cejkar@dcse.fee.vutbr.cz>
1998-12-07 16:17:41 +00:00
Robert Nordier b956ca7ca4 Revise some comments and labels. 1998-12-05 11:58:33 +00:00
Robert Nordier 12c38b04f1 Drop EDD support detection, though retain configurable use of disk
packet interface.  Add booteasy-style F5 support.  Add no-update
option. Implement various space optimizations and consistency fixes.
1998-11-29 14:09:00 +00:00
Robert Nordier 5103ed619b Drop use of BIOS int 0x14 services in favor of direct port I/O.
Feedback and testing: Adrian Filipi-Martin <adrian@ubergeeks.com>
1998-11-22 07:59:16 +00:00
Archie Cobbs a8c0f6e542 Fix misallocation of buffer bug (too short) 1998-11-20 02:57:41 +00:00
Paul Richards 9abd5d84ac This fixes a bug in the bcache code whereby false cache hits occur
the first time block 0 is read. This fix initialises the block
numbers to -1 which isn't the most correct thing for a daddr_t but
it isn't likely to cause a problem in the boot blocks and it could
do with a more thought out fix later.

The bug is probably benign on the i386 but on the alpha it can
cause initial file opens to fail. This is the cause of the "can't
open /boot/boot.conf" errors.

It appears on the alpha because of a number of combining factors.
On the alpha the LABELSECTOR is 0 so block 0 needs to be read in
from the media. The first time this happens you get a false hit
because the bc_blkno field is zero initially. Also, the timestamp
check against this cache hit succeeds because on the alpha a hacked
getsecs() function can return 0 when it starts counting so that
the zero initial timestamp + BCACHE_TIMEOUT is greater than the
current time until getsecs() has counted passed BCACHE_TIMEOUT.

The overall effect is that the first open() that occurs gets a
false cache hit and returns garbage to the bd_strategy() function
which then fails the open() call. This false hit then stays in the
cache until BCACHE_TIMEOUT getsecs() ticks have passed; all open()
calls during this time fail.

This explains why you can generally access the media by the time
you get to interp() and start issuing commands but the earlier
attempts to run the boot scripts are failing.

It's possible that this is causing the problem switching to the
mfsroot floppy as well but I haven't confirmed that.
1998-11-19 18:12:03 +00:00
Mike Smith bcda95d923 Add documentation for $rootdev. 1998-11-13 23:53:02 +00:00
Mike Smith 8f0a6b5b8c Add a new variable $num_ide_disks which is used to offset the unit number
for SCSI disks when converting from BIOS unit numbers to da unit numbers.

Prompted by Kevin Street <street@iname.com>
1998-11-13 23:40:02 +00:00
Jordan K. Hubbard 207fe43d59 bootforth seems to be working well enough for me and others to turn
on by default.  If it causes trouble, it's very easy to switch off again.
1998-11-12 07:40:51 +00:00
Robert Nordier 21ffb6774a Revise error messages. 1998-11-11 08:56:17 +00:00
Robert Nordier 0293eac42c Prevent boot.config being parsed more than once. 1998-11-08 18:37:28 +00:00
Robert Nordier 7ac90f7d65 Drop the familiar 'text=xxxx data=xxxx bss=xxxx ...' display while
loading.  This eliminates noise when loading boot/loader; and when
loading a kernel, they generally flash by too fast to be
intelligible anyway.
1998-11-08 18:29:29 +00:00
Robert Nordier 9888bdcd29 boot1: Eliminate EDD detection and optional use of disk packet
interface.  Do some general consistency fixes and space optimizations.
Use of some freed-up space to defend against possible BIOS misfeatures.

boot2: Revise disk read interface to provide for boot1 changes.  Free
up space for this.
1998-11-08 15:36:35 +00:00
Jordan K. Hubbard 37869e957d o Add proper stack checking to all file words
o add fkey and fread
o eliminate fexists now that this can be expressed in HLL forth
  ( : fexists fopen dup -1 <> if fclose 1 else drop 0 then ; ) :-)

Once we get the ability to write files, it should be possible to do
stand-alone rescue work from the 3rd stage boot. :)
1998-11-07 17:38:40 +00:00
Jordan K. Hubbard 335edb957d Eliminate much code cruft by extending simple file I/O API to include
fopen and fclose.
1998-11-07 06:18:06 +00:00
Jordan K. Hubbard ed82a24960 Eliminate much code cruft by extending simple file I/O API to include
fopen and fclose.  Also look for /boot/boot.4th now and, if found,
load its contents.
1998-11-07 06:18:00 +00:00
Jordan K. Hubbard d6a0c2b58d Take init out of here - it's a layering violation. 1998-11-07 05:01:25 +00:00
Jordan K. Hubbard c412a7ae32 Don't have debugging on by default - it makes testing annoying. :) 1998-11-07 03:44:10 +00:00
Jordan K. Hubbard 65e7b066b3 OK, fload/fexec work properly when both compiling and interpreting
now.  Gack.
1998-11-07 01:56:06 +00:00
Jordan K. Hubbard ebc4b7c4fb switch words to default mode. 1998-11-06 23:50:08 +00:00
Jordan K. Hubbard e1266cedab Submit better fix to the prompt bug. 1998-11-06 23:22:26 +00:00
Jordan K. Hubbard f476d38a01 Make fexists/fload work with existing string literals instead. Doing
my own string literal handling is just too wonky.
1998-11-06 23:20:32 +00:00
Jordan K. Hubbard c6c128e122 Argh, I had this right[er] before. More commits to follow. 1998-11-06 19:17:03 +00:00
Jordan K. Hubbard 11adc0d65e Use proper literal names. 1998-11-06 04:01:32 +00:00
Mike Smith 8a34f8ba88 Ack. Create parseable command tail properly, and eat args out of the TIB. 1998-11-06 03:50:44 +00:00
Mike Smith 8190a019a5 Don't not print the prompt string; not doing this has funny side-effects.
Make the prompt an empty string instead.
1998-11-06 03:47:08 +00:00
Mike Smith 84924924e1 Don't use the poxy vmGetString interface (who uses counted strings these
days?), get the input buffer ourselves.  Add some debugging code.
1998-11-06 03:45:36 +00:00
Robert Nordier 548bf5dd17 Make use of BIOS int 0x13 extensions configurable, and disabled
by default.
1998-11-05 20:52:25 +00:00
Jordan K. Hubbard 82f35547c9 Remember a bit more of my forth and do:
o Add fexists word to check for the presence of a file
o make fexists and fload immediate words which DTRT both interpreted
  and compiled (doh!)
o add an init word which gets run at bootstrapping time to do extra
  post-coldload initialization (in the default implementation, we
  look for /boot/boot.4th and load it if found).
1998-11-05 08:39:43 +00:00
Jordan K. Hubbard 5eb1c6c169 1. rebuild all elements of testmain properly for safety.
2. add fload and key prims for doing simple file and terminal I/O, respectively
1998-11-05 07:27:55 +00:00
Mike Smith 875e602afe Explicitly invoke perl to run the softwords.pl script in case the
script is not executable.
Submitted by:	Don Lewis <Don.Lewis@tsc.tdk.com>
1998-11-05 04:54:05 +00:00
Mike Smith 2cd5cac4ec Improve the assertion testing for successful softword compilation.
The excessive use of assert() vs. robust error checking is annoying.
1998-11-04 07:07:18 +00:00
Mike Smith 95bd40d634 Turn off -g accidentally left in from testing. 1998-11-04 03:42:36 +00:00
Mike Smith 4ce140ae69 Fix includes; we were still pulling in <stdlib.h> in some places.
Support building a standalone interpreter with 'make testmain', remove
win32 and egregious gets() in testmain.c
1998-11-04 03:42:16 +00:00
Mike Smith 66683792a4 Use a smaller default dictionary to waste less space. 1998-11-04 03:41:09 +00:00
Jordan K. Hubbard 12b2c0d82e Respect ${.OBJDIR} properly when looking for libficl.a 1998-11-04 02:36:18 +00:00
Mike Smith 48fe834fda Add required parts for BootForth building (currently disabled and
untested).  Only suitable for i386 at the moment, as we are missing
setjmp/longjmp on the Alpha.
1998-11-04 00:30:47 +00:00
Mike Smith cbb5c0dd58 Make this work in the libstand environment; don't use stdio/stdlib headers. 1998-11-04 00:29:33 +00:00
Mike Smith c7db92c026 Add BootForth hooks; if BOOT_FORTH is defined, pass every line read
to the Forth interpreter.  Instantiate all of our inbuilt commands
as Forth words, and handle them being called from there.

Add my copyright to the bcache module (oops).
1998-11-04 00:29:01 +00:00
Mike Smith 631746a171 Include "bootstrap.h" to get a definition for bcache_devdata.
Submitted by:	jkh
1998-11-03 23:44:49 +00:00
Mike Smith 780ebb4b00 Add the Ficl (Forth Inspired Command Language) interpreter. If all goes well,
this will allow us to manage bloat in the loader by using a bytecoded HLL
rather than lots of C code.  It also offers an opportunity for vendors
or others with special applications to significantly customise the boot
process without having to commit to a divergent code branch.

This early commit is to allow others to experiment with the most effective
mechanisms for integrating FICL with the loader as it currently stands.

Ficl is distributed with the following license conditions:

"Ficl is freeware.  Use it in any way that you like, with the understanding
 that the code is not supported."

All source files contain authorship attributions.

Obtained from:	John Sadler (john_sadler@alum.mit.edu)
1998-11-03 06:11:35 +00:00
Mike Smith ddfd18e255 Ok, the entry aging algorithm sucked; 1s time resolution is not enough for
LRU.  Use a 31-bit counter instead.  If we decide to do heavy I/O through
the bootloader this will have to be revisited.
1998-11-02 23:50:59 +00:00
Mike Smith af1f6e0673 Implement a simple LRU block cache. By default this is initialised to 16k,
and will bypass transfers for more than 8k.  Blocks are invalidated after
2 seconds, so removable media should not confuse the cache.

The 8k threshold is a compromise; all UFS transfers performed by
libstand are 8k or less, so large file reads thrash the cache.
However many filesystem metadata operations are also performed using
8k blocks, so using a lower threshold gives poor performance.

Those of you with an eye for cache algorithms are welcome to tell me
how badly this one sucks; you can start with the 'bcachestats' command
which will print the contents of the cache and access statistics.
1998-11-02 23:28:11 +00:00
Robert Nordier 3d04f230e5 Revise a few comments. 1998-11-02 17:53:08 +00:00
Mike Smith 3c0efe5da1 Standardise on ';' as a component separator; it seems to be a little more
common than ','.
1998-11-02 16:55:57 +00:00
Robert Nordier 3b1bd5ae35 Ignore, rather than emulate, an i386 'hlt' instruction (though for
most practical purposes, this should be indistinguishable from a
more strictly correct approach).

Feedback and testing: msmith
1998-11-01 13:52:52 +00:00
Doug Rabson 06feb69276 * Extend the memory available for the heap from 256k to 512k.
* Embed the stack into the bss section for loader and netboot.  This
  is required for netboot since otherwise the stack would be inside our
  heap.
* Install loader and netboot in /boot by default.
* Fix getbootfile so that it searches for a ',' instead of a ';'
  when terminating the filename.
1998-10-31 17:12:32 +00:00
Mike Smith dc8be6a8f5 - Add a new command 'lsdev' to list devices which might be likely to host
filesystems.
 - New 'help' command and data in the help.* files (not yet installed),
   provides topic and subtopic help, indexes, etc.
 - Don't crash if the user tries to set an invalid console.  Be helpful
   instead.
 - Expand tabs (badly) on the i386 video console.
 - Some minor cosmetic changes.
1998-10-31 02:53:12 +00:00
Luoqi Chen 36159e3d1e Fix an uninitialized variable in the `dangerously dedicated disk' case. 1998-10-30 07:15:52 +00:00
Mike Smith 4c1a7a5a8f Make the BTX loader much more quiet about what it's doing. This removes
most of the "what the (*^&%(*^ was that?" stuff that normally flies by.
1998-10-30 00:11:35 +00:00
Mike Smith 8879e57b3e Simplify the "is a character ready" test, so that we don't return a false
negative for keypresses with zero ascii values.  This is in line with the
comconsole test, rather than being more ambitious.

Submitted by:	rnordier
1998-10-28 19:24:15 +00:00
Robert Nordier 9244e1a412 Avoid interruptions while talking to keyboard controller. 1998-10-27 20:19:24 +00:00
Robert Nordier c589107988 biosboot compatibility fix: change behavior of backspace in getstr().
Noticed by: abial

Optimize away a few bytes to make space for the above.
1998-10-27 20:16:36 +00:00
Mike Smith b6542d2e4f Reserve some space for the stack in the region we recover from the initial
bootloader.
Submitted by:	dfr
1998-10-24 00:31:21 +00:00
Mike Smith 0cae710c49 Clean the ${BASE}.sym file as well. 1998-10-23 22:32:27 +00:00
Mike Smith 4558ccdf6f Remove a debugging copy of offsetof() that snuck in. 1998-10-23 22:30:52 +00:00
Mike Smith c93cd32637 Enable the PCI BIOS PnP enumerator. 1998-10-23 22:29:19 +00:00
Mike Smith a1c0b1c5c5 PnP enumerator using the PCI BIOS. This is needlessly complex due to the
lack of a simple "enumerate all PCI devices" function.
1998-10-23 22:29:08 +00:00
Mike Smith 8d35fb65a0 PnP BIOS enumerator; mostly useful for hunting PnP devices that are supported
by the system BIOS rather than supporting ISA PnP.
1998-10-22 20:25:06 +00:00
Mike Smith 051837da04 Add a dependancy on the BTX crt0 object
Add the biospnp handler to the pnp handler array
Drop some old debugging code
1998-10-22 20:23:58 +00:00
Mike Smith 13aedae3d7 Add biospnp.c 1998-10-22 20:23:15 +00:00
Mike Smith f41c619d3d Pop the return address off the stack before making a V86_CALLF call;
this allows us to implement what look like C function calls from user
space "directly" to v86 mode code.  (Used for calling the PnP BIOS)
1998-10-22 20:22:07 +00:00
Mike Smith 60edbabff6 Export an interface for presetting the ISA PnP read port address.
Make the EISA ID formatter generally available
1998-10-22 20:20:51 +00:00
Mike Smith b259863db2 Bye-bye setdefs. 1998-10-21 20:11:03 +00:00
Mike Smith d8ef941c2f - Enable PnP and ISA PnP code.
- Use the ISA PnP enumerator.
 - Use the new linker set code, throw out the gensetdefs stuff.
 - Produce an intermediate loader image that has symbols stripped, to aid
 - in debugging.
 - Supply ISA port access functions required for ISA PnP
1998-10-21 20:10:33 +00:00
Mike Smith c90625d230 Don't depend on being part of the kernel tree. If we are, use the kernel's
<machine> includes rather than the system's.
1998-10-21 20:07:57 +00:00
Mike Smith eddbe21def Make ISA PnP work. This successfully enumerates as many ISA devices as I
can fit into my test machine.

 - Move to using STAILQs rather than ad-hoc singly-linked lists.
 - Use a mostly procedural interface to the PnP information.  This
   improves data-hiding.

Implement a new linker-set technique (currently on i386 only but should work
on Alpha as well).  This is a good candidate for replacing the current
gensetdefs cruft completely.
1998-10-21 20:07:05 +00:00
Robert Nordier 1a8efde980 Make serial port, data format, and bps configurable. 1998-10-20 20:20:48 +00:00
Mike Smith c98405d7d1 Hex constants should only have one '0x' prefix. 1998-10-20 02:43:28 +00:00
Robert Nordier 4e108bf052 Make configurable (a) whether to use int 0x13 extensions; (b) timeout
value.  Ignore failure to update mbr sector.  Disable interrupts while
using extended registers.  Default to F1 not F2.
1998-10-19 19:13:53 +00:00
Doug Rabson ed7aeb1bb6 Reclaim the 48k used by the first bootstrap stage by adding it to the malloc
pool.
1998-10-19 09:12:41 +00:00
Doug Rabson bcaa5f75b7 Rename boot2 to loader. 1998-10-18 19:05:07 +00:00
Robert Nordier f59f5db544 Set BINMODE to 444. 1998-10-17 14:20:25 +00:00
Robert Nordier ae99ddc79e Fix some glitches in the input routine:
Don't display a \b if not acting on it.
Don't process binary zero chars (which result from pressing function
keys, etc. on the PC).
1998-10-17 11:25:05 +00:00
Robert Nordier 918ddbed16 Having probed the keyboard, turn off the -P flag. 1998-10-17 10:35:15 +00:00
Robert Nordier 93d51dcaf9 Treat all options as toggles (ie. -c -c is the same no -c). Since
the boot.config settings are persistent, this seems to provide a
useful override capability, and should break only on broken
boot.config's.

Output a cosmetic newline if booting with no input.
1998-10-17 09:50:09 +00:00
Robert Nordier 3044a22097 biosboot compatibility fix:
If we have a boot.config command, display it.
1998-10-17 09:16:01 +00:00
Robert Nordier 7fa25d805a 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
Peter Wemm a6575097c6 Load the first page of the file and use the headers in it. This should
avoid the need to seek back to offset zero which is causing trouble on
the Alpha with a gzipped kernel.
1998-10-17 03:06:38 +00:00
Mike Smith d800cebf61 Turn of disk debugging by default (suppress annoying "partition marked as
unused" diagnostic on floppies).
1998-10-16 19:26:11 +00:00
Peter Wemm 3323768d99 "fix" the gzipped kernel load problem by having the loader check that it
can seek back to the first PT_LOAD and doing a close/reopen if it cannot.
This is because the first PT_LOAD section includes the ELF headers.
This fixes gzipped kernels on the i386, it should solve mike's problem
for the Alpha.
1998-10-16 03:04:15 +00:00
Robert Nordier 67ac585edf Fix path to sio.s 1998-10-15 22:08:13 +00:00
Doug Rabson 94bb328025 Change some printfs so that ELF_VERBOSE prints meaningful values on the alpha. 1998-10-15 21:56:47 +00:00
Doug Rabson 6214a95af0 Fix the bootinfo so that the right values actual make it into the kernel. 1998-10-15 21:55:58 +00:00
Robert Nordier da55c91100 Add serial, dual, and probe-keyboard support. 1998-10-15 20:04:21 +00:00
Peter Wemm f03d6f87b3 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
Robert Nordier 898adc1c96 Activate boot2. 1998-10-14 20:40:56 +00:00
Peter Wemm eb49863f1b Link fdboot to boot1 as well. 1998-10-14 13:19:52 +00:00
Peter Wemm da6c15d597 Initial attempt to update the Alpha loader and kernel to use the machine
independent elf loader and have access to kld modules.  Jordan and I were
not sure how to create boot floppies, and the things we tried just made
SRM laugh in our faces - but it was upset at boot1 which was not touched
by these changes.  Essentially this has been untested. :-(

What this does is to steal the last three slots from the nine spare longs
in the bootinfo_v1 struct to pass the module base pointer through.

The startup code now to set up and fills in the module and environment
structures, hopefully close enough to the i386 layout to be able to use
the same kernel code.  We now pass though the updated end of the kernel
space used, rather than _end. (like the i386).

If this does not work, it needs to be beaten into shape pronto.  Otherwise
it should be backed out before 3.0.

Pre-approved in principle by: dfr
1998-10-14 09:53:25 +00:00
Peter Wemm eb9022e791 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 Wemm 2a26e9ea83 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
Robert Nordier ee2e4f9b32 Fix btx include path. 1998-10-14 01:53:56 +00:00
Peter Wemm adf45b4bb5 Tweak the output one more time again. The kernel or module pathname
is useful, and usually fits all on one line with the load sizes.
1998-10-14 00:41:17 +00:00
Robert Nordier 59ea046e5d Include <bsd.prog.mk>. Add install target (to /boot for now). 1998-10-14 00:24:16 +00:00
Robert Nordier 757ee5cca9 Fix flow of control after directory listing; enable EDD support;
cosmetics.
1998-10-13 23:43:38 +00:00
Robert Nordier b2848194f5 Make v86.ctl default more explicit; simplify read error-handling;
twiddle.
1998-10-13 23:00:47 +00:00
Robert Nordier c71b9b3c24 Adjust NDEV value.
Optimize reading of system time.
1998-10-13 22:17:05 +00:00
Robert Nordier fd4afc6487 Change to a 15-sector boot2.
Refine slice-handling.
1998-10-13 21:35:42 +00:00
Robert Nordier 8f65b6a695 Don't use an absolute path to objcopy.
Noticed by: Scott Mace <smace@intt.org>
1998-10-13 18:29:18 +00:00
Robert Nordier 0ad50c1c9d Improve drive recognition and handling. 1998-10-13 17:41:06 +00:00
Peter Wemm 21f1bf72d3 Make the ELF load messages cleaner. 1998-10-13 09:25:27 +00:00
Robert Nordier 4d8eda2252 New boot blocks: support for /boot/loader; a.out & ELF; cyl > 1023;
multiple 0xa5 slices; etc.
1998-10-12 21:16:26 +00:00
Peter Wemm 2d636ab077 Only print kernel entry point during load.
Drastically quieten down the verbose load progress messages.  They were
more useful for debugging than anything, but are beyond a joke when loading
a few dozen modules.
Simplify the ELF extended symbol table load format.  Just take the main
symbol table and the string table that corresponds.  This is what we will
be getting local symbols from.  (needed for the alpha stack tracebacks).
Use the (optional) full symbol tables in lookups.  This means we have to
furhter distinguish between symbols that can come from the dynamic linking
table and the complete table.
The alpha boot code now needs to be adapted as ddb/db_elf.c cannot use
the simpler format.
I have not implemented loading the extended symbol tables from the syscall
interface yet, just for preloaded modules.
I am not sure about the symbol resolution.  I *think* it's possible that
a local symbol can be found in preference to a global, depending on the
search sequence and dependency tree.
1998-10-12 09:13:50 +00:00
Peter Wemm 55820fca35 Only print filename and entry address for the kernel itself. The rest
have a meaningless entry as they are relocatable.
1998-10-12 09:05:12 +00:00
Robert Nordier dfce019974 Drop .MAKEFLAGS: hack. 1998-10-12 02:05:44 +00:00
Robert Nordier 7870a52598 Do without head and tail: they're pretty unnecessary here anyway. 1998-10-12 01:44:15 +00:00
Robert Nordier 36e85d353d 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
Robert Nordier 1339399694 Override for ELF. 1998-10-11 12:59:40 +00:00
Robert Nordier 10806461a7 Override for ELF. Override .s.o suffix rule. 1998-10-11 11:27:48 +00:00
Peter Wemm 7532a55a62 Fix a warning that's been bugging me for ages. 1998-10-11 10:29:49 +00:00
Peter Wemm 68e3a08de1 Fix a warning 1998-10-11 10:28:51 +00:00
Peter Wemm 6e9108b6ac Probe all consoles, not just the first. It doesn't make a lot of
difference, but might later on when we implement some sort of multi-head
console mode.  Select a console after probing them all.
Don't strdup a potentially NULL return from getenv().
If we don't select an active console, choose the first regardless.
Call the console init function, at startup time and on a manual change.
The env_setenv() function needs EV_VOLATILE because it's pointing to
data that isn't malloc'ed and will cause a fault if it's freed later.
1998-10-11 10:19:11 +00:00
Peter Wemm 450caa170f Cosmetic: After the autoboot timeout, print a \n. 1998-10-11 10:10:41 +00:00
Peter Wemm 7d9cbdec8f 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 Wemm a1c1935fa8 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 Wemm 1206a4f594 Warn that one of the DEBUG statements has a v86 recursion bug. 1998-10-11 10:01:55 +00:00
Peter Wemm 00fe329527 Fix comment to match code 1998-10-11 09:53:30 +00:00
Dima Ruban 18d099b0c4 add <sys/linker.h> 1998-10-11 03:53:35 +00:00
Robert Nordier 0def18d819 Fix a typo.
Output another newline before invoking bootstrap.
1998-10-10 14:03:03 +00:00
Robert Nordier 91284f875f 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 Wemm 7deb2dabef 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 Wemm 1d59e49683 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 Wemm f62f10b275 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
Peter Wemm 376f525c56 Implement preloading for elf modules
- get dependency info from PT_DYNAMIC's DT_NEEDED tags.
 - store MODINFOMD_DYNAMIC for the kernel's later use
setenv kernelname when we have it
Fix firstaddr/lastaddr calculation (duh! :-)
Explicitly skip string table with section names in it.
1998-10-09 23:18:43 +00:00
Peter Wemm 6323a7f93f Preload support for a.out KLD not implemented yet. (almost)
KLD modules are *not* PIC.  (Shared libs are pic to avoid relocations
causing copy-on-write, that's irrelevant here).
setenv kernelname when we load it.
Use MODINFO_SSYM/ESYM for each symbol section when (if) there are
more than one being loaded.
1998-10-09 23:15:39 +00:00
Peter Wemm c582ad070a Use a consistant module search path (same as kernel will be).
Use new dependency mechanism.
1998-10-09 23:12:34 +00:00
Peter Wemm 12218096e1 loader <-> kernel preload module interface constants moved to common file.
Remove Mike's explicit data structures for dependency info.  This is
done via DT_NEEDED etc in the dynamic section for now.  This may need
to be revisited later on.
1998-10-09 23:11:05 +00:00
Robert Nordier 4025ae9d2a Get this building as a.out or ELF.
With thanks to: jdp
1998-10-09 17:19:51 +00:00
Mike Smith cab57be9ae 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
Mike Smith 6ba0dd2cfc Sync the MODINFO constants with <sys/linker.h>
Remove debugging in command_read().
Correctly strip leading controls on script commands.
Make 'ls' more DWIM in regard to pathnames.  We can still do better.
1998-10-09 07:09:22 +00:00
Peter Wemm e3de88f4ff Fix that pesky boot aguments parsing bug. (I think :-) 1998-10-07 10:55:46 +00:00
Mike Smith ee4f7b62a0 Request the flags back when checking for keyboard status.
Submitted by:	rnordier
1998-10-07 07:34:31 +00:00
Mike Smith 0bab8c3243 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
Mike Smith 0f7d15efd8 - Drain the keyboard buffer when initialising.
- Be pedantic about the return from int 16 fn 01.
1998-10-07 02:39:06 +00:00
Mike Smith b820c8e626 - VERBOSE_LS is obsolete, as the heap is much better behaved now.
- Don't whine about nodes we can't stat(); these are usually
   symlinks that lead out of the filesystem.
 - Autoboot is now controlled by $autoboot_delay, which is a value
   in seconds or NO to disable autoboot.
 - Don't autoboot at the end of boot.conf if we have already tried.
 - Add a 'read' command to complement 'echo'.  Both are still hidden.
 - Improve the 'source' command/function so that it is possible to
   source scripts off removable media.  The entire script is read and
   saved before beginning execution.  Script lines beginning with
   '@' will not be echoed when being executed.  Script execution will
   normally terminate at the first error, however if the script line
   begins with '-' this behaviour is overriden for that command.
1998-10-07 02:38:26 +00:00
Mike Smith 82bb1fb746 VERBOSE_LS is obsolete 1998-10-07 02:33:01 +00:00
Mike Smith afcd516b82 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
Robert Nordier b7b32c2745 Fix for "get base memory" bug found and mostly fixed by Mike. 1998-10-06 07:15:35 +00:00
Mike Smith 024e2ede72 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
Mike Smith 58d4e8e80f Build boot0 as well. 1998-10-06 06:12:55 +00:00
Robert Nordier 09c7ea1cc8 Install in /boot. 1998-10-05 19:20:36 +00:00
Robert Nordier 264ba5c0fe boot0 is a booteasy (boot manager) workalike with EDD support. 1998-10-05 10:08:37 +00:00
Mike Smith 4d7b7e52de Insert whitespace between unargv'd arguments.
Submitted by:	"Louis A. Mamakos" <louie@TransSys.COM>
1998-10-05 05:40:58 +00:00
Robert Nordier 731a4a01db Adjust setting of argument pointer for BTX 0.87. 1998-10-04 21:15:45 +00:00
Robert Nordier 18577050a0 Allocate space for storing of arguments at the end of conventional
memory.
1998-10-04 21:14:33 +00:00
Mike Smith 5f8edb2c4d Don't include ELF symbol information yet - it causes the ELF DDB to
explode.
1998-10-04 20:58:46 +00:00
Mike Smith 7546830370 Improve the handling of the initial bootdev value from the previous loader.
Remove some unused code.
1998-10-04 09:12:54 +00:00
Mike Smith 58b7e8766e 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
Robert Nordier a2a87ebc0b Missing newline in heap command display.
Noticed by: jkh
1998-10-03 18:27:50 +00:00
Robert Nordier 3948b979ba For system calls, reboot without prompting; for exceptions, display
message and await reset.
1998-10-03 18:05:12 +00:00
Robert Nordier 9cd66506dd 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
Robert Nordier 0860fb8f8c bootinfo bi_vesa no longer exists. 1998-10-03 14:13:30 +00:00
Mike Smith bf72f68088 Consolidate the bootinfo-loading code, greatly simplifying the _exec
functions.
1998-10-02 20:53:17 +00:00
Mike Smith 9d38269bae Fix an egregious precedence bug. 1998-10-02 20:52:26 +00:00
Mike Smith 41e43bf627 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
Mike Smith 6b15efd961 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
Mike Smith 39de38225b Mark exit() as __attribute__((__noreturn__)) 1998-10-02 16:22:54 +00:00
Mike Smith f9ba80b0e7 boot.c
Increase the robustness of the "is it time to boot yet" test;
	if the time skipped the "when" time, we would miss it.
	Don't spin in an endless loop if we don't find the first possible
	kernel suggested.  When we run out, don't try to load an empty
	kernel name.

load_aout.c
	printf format warnings
1998-10-02 16:22:26 +00:00
Peter Wemm 2e06076f23 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
Jordan K. Hubbard 4225585999 Override STRIP so installation doesn't try to strip the loader. 1998-10-01 09:57:09 +00:00
Peter Wemm 392dfcadb1 Make 'make install' do something that might be useful. 1998-09-30 22:37:47 +00:00
Peter Wemm f511533b56 Stop libi386.a from being installed.. 1998-09-30 22:36:45 +00:00
Peter Wemm cf6b812d33 Turn on i386-elf 1998-09-30 19:48:42 +00:00
Peter Wemm d1a50365db 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 Wemm e6001c6229 Save booted kernel name. Cosmetic cleanups. 1998-09-30 19:42:06 +00:00
Peter Wemm f9489e6a0e 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 Wemm efca1dc5ee ELF loader, part 1. It works with ELF kernels generated on the i386
so far, and should probably be able to be made to work for the alpha
without too much trouble once it's connected up and my assumptions tested.

I think (but have not tested) it will also load "old" ELF kernels that
were not linked with DYNAMIC headers.

The module glue is yet to come. (oh fun.. :-)

It does not explicitly load symbols [yet].  The _DYNAMIC data contains a
runtime symbol set that ddb can use via ddb/db_kld.c.  It'll be missing
some detail that stabs normally provides (eg: number of args to a function,
line numbers, etc).  On the other hand, those minimal symbols will always
be available even on a stripped kernel.

This is mostly stolen from load_aout.c with some ideas from
alpha/libalpha/elf_freebsd.c.
1998-09-30 19:38:26 +00:00
Peter Wemm 42355b3c0b s/out_loadmodule/aout_loadmodule/ in a printf diagnostic. 1998-09-30 19:26:23 +00:00