With these changes plus the egcs fix I committed a few minutes ago,
"make -DWANT_AOUT world" works again. Most likely, "make upgrade"
is fixed too, though I haven't tested that.
default for BINDIR. The default BINDIR of /usr/mdec can't be overridden
yet because libdisk still uses /usr/mdec and installing in /boot might
clobber the new boot blocks.
Don't install links to bootxx or xxboot.
Install boot1 and boot2 in 1 step.
Don't delete the boot.help source file on installing it when ${COPY} is
null.
Kapok Computer Co. notebook with AMI 'WinBIOS' which seems to insist
on having a short jump and nop as the first instructions in the
boot sector code. The prevailing theory is that the BIOS is doing
some sort of boot sector virus detection and refusing to run any
boot block that doesn't start with the same instruction sequence as
MS-DOG boot sector code. If this is the case, it would be nice if it
actually printed an error message to this effect instead of just
saying 'FAILED.'
This workaround has no effect on the boot sector code other than to
increase its size by three bytes.
- wrong name in .file statement.
- stale comment about CONSPEED.
- style bugs in comments.
- inconsistent defaulting of operand sizes (should never depend on default).
- inconsistent choosing between je and jz (should always use je).
so the filenames can be displayed and selected in full beauty. If RR
is present, the match is now case-sensitive, if RR is missing, the
match is case-insensitive (as it used to be before).
instructions more (many cases were already intended to be byte-sized
but were missing prefixes so gas assembled them bogusly), and
rearranging a loop to test at the end.
and bios.S were small enough and have been merged back into their
respective files in biosboot/, conditionalized on CDBOOT. Other
files might be merged at a later stage.
Caveat emptor: i cannot test this right now.
will see it. The name of the file is obtained by appending ".config"
to the name of the kernel file. If the file doesn't exist, then an
annoying message is printed.
Reduced the command line buffer size yet again from 4096 to 1024. It is
oversized to defend against overrun in gets(), but data space is starting
to run out so the buffer size can't be as grossly oversized as before.
- Added support for "dual" internal/serial consoles (-D flag). If -D is set,
then all i/o from the boot blocks is to and from both the internal console
and the serial console. -D has no effect on the kernel (-h decides the
kernel serial console as usual). -D should normally be set in /boot.config.
- Get help messages from /boot.help. You should copy boot.help from the
biosboot directory to the root directory on the boot drive when you
install new boot blocks.
- New, less invasive keyboard probe. Enable keyboard probe dynamically (-P
flag). Should probably never be used (use -h instead).
- Fixed/improved initialization from boot.config. It didn't interact correctly
with the NAMEBLOCK option, and the initialization of the drive/unit/partition
didn't stick when a non-default kernel name was entered.
- Don't reset or forget the default drive/unit/... or kernel name so often.
- Set the default kernel name to something unbootable after `?'.
- Display the defaults better.
- Removed PROBE_KEYBOARD_LOCK option (use -h instead).,
- Removed BOOT_FORCE_COMCONSOLE option (use device flag 0x20 instead).
- Removed -a (RB_HALT) flag. This flag is only used for reboots.
Submitted by: about 2/3 by yokota
then all i/o from the boot blocks is to and from both the internal console
and the serial console. -D has no effect on the kernel (-h decides the
kernel serial console as usual). -D should normally be set in /boot.config.
- Get help messages from /boot.help. You should copy boot.help from the
biosboot directory to the root directory on the boot drive when you
install new boot blocks.
- New, less invasive keyboard probe. Enable keyboard probe dynamically (-P
flag). Should probably never be used (use -h instead).
- Fixed/improved initialization from boot.config. It didn't interact correctly
with the NAMEBLOCK option, and the initialization of the drive/unit/partition
didn't stick when a non-default kernel name was entered.
- Don't reset or forget the default drive/unit/... or kernel name so often.
- Set the default kernel name to something unbootable after `?'.
- Display the defaults better.
- Removed PROBE_KEYBOARD_LOCK option (use -h instead).,
- Removed BOOT_FORCE_COMCONSOLE option (use device flag 0x20 instead).
- Removed -a (RB_HALT) flag. This flag is only used for reboots.
Submitted by: about 2/3 by yokota
- gcc assumes that %ecx and %edx are clobbered (due to calling
conventions), thus there is no need for saving/restoring those two
registers.
- %es is reset to default value by real_to_prot, thus there is no need
for saving/restorig that register.
Submitted by: tegge
"boot.config" (relative to the root directory on the 'a' partition
on the first BSD slice) if it exists. If it doesn't exist, then
the only visible changes should be that the kernel name isn't reset
to "/kernel" after looking it up fails and that the default name
is now "kernel".
The new function readfile() can be used for other things:
- reading help messages.
- reading splash screens.
- reading userconfig info.
This will make a number of things easier in the future, as well as (finally!)
avoiding the Id-smashing problem which has plagued developers for so long.
Boy, I'm glad we're not using sup anymore. This update would have been
insane otherwise.
They were garbage that happened to be 0 in many cases. (real_to_prot()
happens to leave the value of the real-mode %cr0 in %eax and the
memory-size BIOS calls usually don't touch the upper bits of %eax.
The upper 16 bits of %cr0 are usually 0 at boot time, at least on
486's.
Should be in 2.2.
partition is 0, which is outside the slice unless the disk is
dangerously dedicated. There is little error checking later, and
following garbage metadata outside the slice usually caused crashes,
Empty 'a' partitions are fairly easy to create by cloning the label
for the whole disk.
Fixed a missing newline in a related error message.
the keyboard IO port definitions from <machine/console.h>.
Note: I do not have a machine available to test this yet, I sent this
for review to several people who have not replied.
This is also totally busted in 2.2, which has half of the syscons/psm/kbdio
changes in it. This really desperately needs to be tested and fixed
in 2.2 as well.
for get_diskinfo(), whose BIOS call sets %es:%edi in some cases, although
most documentation says that it doesn't change %edi in the cases that
happened to matter (for hard disks).
This shall be in 2.1.6 and 2.2.
Submitted by: Tor.Egge@idt.ntnu.no
(except I kept the unnecessary preservation of %edx and %ecx)