Commit Graph

287 Commits

Author SHA1 Message Date
bde
f2cdccb23f Preserve %esi and %edi for all BIOS calls. This is probably only necessary
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)
1996-11-11 14:03:33 +00:00
phk
fb5536deb2 Fill in the bios-geometry array in struct bootinfo.
2.2 candidate.
1996-11-02 14:46:27 +00:00
pst
b5efba1f8e Rationalize support for serial consoles running at baud rates other than 9600
baud.  This isn't particularly beautiful, but neither is it disgustingly
gross.
1996-11-02 02:24:39 +00:00
bde
24f1e6fa9a Synchronized with biosboot/Makefile:
- use gcc-2.7.2 alignment features
- get CWARNFLAGS form <bsd.kern.mk>
- fixed whitespace differences.
1996-10-15 16:26:05 +00:00
pst
3d16420dd5 Expose the control mechanism for serial console boot so that the default
shipped with freebsd can be changed without modifying the Makefiles directly.

Creates:	BOOT_FORCE_COMCONSOLE
		BOOT_PROBE_KEYBOARD
		BOOT_PROBE_KEYBOARD_LOCK
		BOOT_COMCONSOLE			(port value for console)
1996-10-14 17:25:53 +00:00
bde
860a9cbd8e Oops, PROBE_KEYBOARD_LOCK wasn't supposed to be enabled by default. 1996-10-14 12:37:47 +00:00
bde
28e40e3bc6 Added option PROBE_KEYBOARD_LOCK which gives a serial console if the
keyboard is locked.
1996-10-08 22:41:34 +00:00
bde
da493162e3 Saved about 160 bytes by using the gcc-2.7 alignment options. 1996-10-08 22:35:48 +00:00
bde
de8a481c6f Print the dos device number for read failures. 1996-10-08 22:31:31 +00:00
bde
11c65a934b Removed unused arg to badsect(). It wasted 16 bytes.
Staticized badsect().

Avoid warning for benign signed vs unsigned comparison.
1996-10-08 22:25:22 +00:00
bde
34f60067c2 Use the same warning flags as for the kernel. This causes surprisingly
few warnings.
1996-10-08 22:18:34 +00:00
pst
44c8da618a Fix a couple of bugs causing false positives 1996-09-26 20:52:13 +00:00
bde
d2512c2bf9 Eliminated includes of the "temporary" backwards compatibility header
<sys/dir.h> in applications.  Maintained existing (inadequate) ifdefs
for dir.h vs dirent.h in libdialog, amd and rarpd, but didn't add any
new ones.
1996-09-24 08:08:11 +00:00
bde
2a41569eab Moved instantiation of `poff' to sys.c. It is no longer used in disk.c.
Saved a few bytes by copying `dosdev' and/or `name' to local variables.
This optimization (for dosdev) was done in one place before but this
was lost in the devread() cleanup.   This optimization (for dosdev)
can almost be done by bogusly declaring dosdev as const, but gcc still
often space-pessimizes code like the following:

	extern const int dosdev; ... foo(dosdev); bar(dosdev);

gcc often doesn't bother to copy dosdev to a temporary local because
the local would have to be preserved in memory across the call to
foo().  OTOH, for

	extern int dosdev; ... auto int dosdev_copy = dosdev; ...
		foo(dosdev_copy); bar(dosdev_copy);

the copy must be made because foo() might alter dosdev.
1996-09-14 07:41:00 +00:00
bde
1d7af3ef48 Removed declarations of recently deleted variables and cleaned up
#includes.
1996-09-14 07:38:14 +00:00
bde
7c18793b17 Potentially saved a whole 4 bytes and reduced bogusness by eliminating
the pointer to the string "/kernel".  This pointer was once only
statically to once save space, but it has had to be dynamically
initialized for some time, so the static initialization just wastes
space.  The string gets moved to the text section, so the actual
savings may be negative due to padding.
1996-09-14 07:12:02 +00:00
phk
a04f5409f4 The intended usage is:
cat /usr/mdec/rawboot /sys/compile/FOO/kernel | fdwrite

That should explain it all  :-)
1996-09-11 19:25:12 +00:00
phk
e7f1441535 Add #ifdef for RAWBOOT.
remove some #if 0 stuff.
1996-09-11 19:23:11 +00:00
phk
8af428fba2 Add "rawboot", sort the subdirs. 1996-09-11 19:22:21 +00:00
phk
5d362ede6f Rather than adding more gunk here, clean some of it up:
devread() had a bogus interface, cleaned up.
	Bread() did an unneeded bcopy(), don't.
Saves 80 bytes and some time.
1996-09-10 21:18:40 +00:00
bde
984fd335eb Remove boot2 when the size test fails so that rebuilding without fixing
the problem doesn't bogusly succeed.

Print size failures to stderr instead of stdout and don't print bells
and whistles.
1996-09-07 21:16:44 +00:00
bde
1c3b577d08 Saved 48 bytes (46 before padding) using assorted nano-optimizations:
- avoiding strcmp("?" saved 12 bytes.  gcc inlined the strcmp()
  but this takes as much or more code as a function call.  The
  inlining was bogus because the strcmp() in the bootstrap isn't
  standard.

- using a char instead of an int for the boolean `last_only' saved 8
  bytes.  Booleans should usually be represented as chars on the i386.

- simplifying the return tests saved 9 bytes.

- using putc instead of printf to print a newline saved 3 bytes of code
  and 2 bytes of const data.

- avoiding `else's by always doing the else clause and fixing it up
  saved 4+8 bytes.
1996-09-07 21:06:43 +00:00
bde
ae2d4189eb Saved 48 bytes (56 before padding) by moving a variable declaration.
gcc always generates large code for accesses to globals.  For locals
it only generates large code if there are more than 128 bytes of
locals.  It sorts scalar locals after array locals to pessimize for
space in the usual case when there are more (static) references to
scalars than to arrays.

Saved another 16 bytes (13 before padding) by adding a `continue'.

Fall-through tests normally save space, but here one of them made
gcc do space-unoptimal register allocation (it allocates ch in %bl
because preserving this register across function calls is "free",
but comparisions with %bl take one byte fewer than comparsions with
%bl).
1996-09-07 20:18:04 +00:00
julian
34657c737b Back out the previous changes
I just couldn't get the code to be as small as it should have gotten..

atill a LITTLE bigger than before as I need to allow the
default string to have options as well
1996-09-05 21:12:06 +00:00
julian
0b32f8ed6c 3 changes:
1/ Makefile:  the maximum size for boot2 is 7.5K not 7K,
so don't complain until it reaches THAT size..
newfs leaves 8K and boot 1 is 512k. leaving 7.5K becasue the disklabel
is considered to part of the boot2 file.

[512  boot1][512 disklabel][     7K boot2 code        ]
[boot1 file][               boot2 file                ]

2/ Boot2.S: move the soring of the default name read from block 2 to AFTER
clearing the BSS.

3/ boot.c:
Move the parsing of the command line into the
place it's called for clarity.. alsoi comment it a bit and clean it
up a bit.. for some reason this seems ot have made it a little
larger, but I can't work out why.. maybe bruce might have ideas?
compensated for by shrinkage elsewhere..

the practical result of this is htat the default string can now contain args
e.g. if you change the default string to have -gd
then the machine will boot to the dgb debugger stub by default..
this is mostly useful with the nextboot utility..
as it now allows you to remotely force a machine to reboot into
the debugger.
1996-09-04 18:28:36 +00:00
ache
8de6ce4784 Add g to flags help 1996-08-28 18:39:24 +00:00
ache
18426d11cc Add g option to usage line 1996-08-28 18:33:15 +00:00
pst
17e45781b1 Support for GDB remote debug protocol.
Sponsored by: Juniper Networks, Inc. <pst@jnx.com>
1996-08-27 19:45:58 +00:00
peter
11a42ec095 s/ETHER_MIN_LAN/ETHER_MIN_LEN/ 1996-08-19 13:51:30 +00:00
joerg
a49962396a Fix a couple of typos that sneaked in with Poul's ETHER_* mega-commit.
Reviewed by:	phk
1996-08-18 07:58:13 +00:00
phk
5ac19ff3ee Megacommit to straigthen out ETHER_ mess.
I'm pretty convinced after looking at this that the majority of our
drivers are confused about the in/exclusion of ETHER_CRC_LEN :-(
1996-08-06 21:14:36 +00:00
bde
351ef7849f Moved the definition of DEBUGMSG() from asm.h to start.S. This macro
is only appropriate to use in the special environment of start.S (real
mode plus some conventions about not saving registers), and asm.h is
supposed to be for generic macros.

Removed some unnecessary parentheses.
1996-07-12 05:42:02 +00:00
bde
d466fe8070 Moved the definition of `bsize' out of a DO_BAD144 ifdef so that this
compiles when DO_BAD144 is not defined.
1996-07-12 05:35:47 +00:00
bde
cd111495aa Moved the definition of dflt_name to the correct file (table.c is only for
explicitly initialized data) and made it conditional on NAMEBLOCK.
1996-07-12 05:25:47 +00:00
bde
48992969bb Fixed some speling, punctuation.. and spac ing errors. 1996-07-12 05:17:37 +00:00
julian
1fe8db25ff make the NAMEBLOCK changes conditional on that preprocessor variable,
and add more documentation of the option in the Makefile
also CORRECT the variable mentioned in the README.
1996-07-09 02:28:20 +00:00
joerg
e4d7a0d7a1 Add the ability to specify bootflags. This is similar to boot_i386(8),
except for the root f/s options that don't seem to be useful.
1996-07-06 14:18:56 +00:00
julian
1777d0fcc2 Obtained from: Whistle Communications
Add code to the boot blocks to allow the user to place default boot strings
on block 1 of the disk (2nd block), should the correct magic numbers be present.

If the correct options are used it will 'delete' the name used from block1,
thereby assuring that if the boot fails it won't be stuck in an infinite loop.

the boot strings are set by the utility "nextboot"
(not yet checked in, but being tested.)
By default these changes should have no effect on existing installations
and if compiled without the NAMEBLOCK option should be essentially identical
to the old ones.
1996-07-05 19:55:05 +00:00
martin
2447acf83a Add a check in the SMC probe to verify that the card has an ethernet
address that starts with 0000C0xxxxxx.  This prevents the probe code
from finding GUS cards.

Pointed out by: Seppo Kallio <kallio@kanto.cc.jyu.fi>
1996-06-09 14:44:17 +00:00
bde
89ed4b1107 Fixed BOOT_HD_BIAS. 1996-05-11 04:27:24 +00:00
phk
779840c457 First pass at cleaning up macros relating to pages, clusters and all that. 1996-05-02 10:43:17 +00:00
bde
5dcde3c31e Fixed timeouts. I broke them in rev.1.17 for the FORCE_COMCONSOLE and
(interactively set RB_SERIAL) && BOOTWAIT (serial i/o) cases.
1996-04-30 23:43:25 +00:00
phk
1bba52ece2 Now that I have started to use netboot, I see what is missing...
Load symbols and set boot args more nicely.
1996-04-14 09:54:14 +00:00
jkh
e09f62677a Document how to drop into DDB from a serial console. 1996-04-13 11:57:18 +00:00
bde
eac7371c68 Allow specifying the BIOS drive number. Removed the hd drive type.
hd essentially wired the FreeBSD drive number to 0 without changing
the BIOS drive number.  Now the numbers can be specified independently.

Replaced the BOOT_HD compile time flag with with BOOT_HD_BIAS.  Defining
the new flag as 1 should give the same behaviour as defining the old
flag as anything.  I haven't tested defining these flags.
1996-04-07 14:28:05 +00:00
phk
1b40c12e76 Improvementss to netboot
Initial but not yet functional PCI support.

Reviewed by:	phk
Submitted by:	Luigi Rizzo <luigi@labinfo.iet.unipi.it>
1996-04-03 19:01:37 +00:00
phk
40dcfd6328 Align help screen.
add gateway command.
1996-04-02 15:17:36 +00:00
bde
9acf1cecfc Saved 14 bytes by avoiding gas braindamage and 8 bytes by better
instruction selection, for a total of 16 bytes after padding.  Whee.
1996-03-08 07:27:52 +00:00
bde
4ce0328b77 Probe the keyboard if PROBE_KEYBOARD is defined instead of when `notyet'
is defined and FORCE_COMCONSOLE isn't defined.

Don't compile any keyboard probing code if PROBE_KEYBOARD isn't defined.

Makefile:
Removed -I paths.  They weren't used, and the one to /sys hasn't worked
since the source directory was moved down one level.
1996-03-08 06:29:07 +00:00
bde
627e1bd585 Made the timeouts in gets() machine-independent. Use the BIOS tick
counter instead of the BIOS time call to save space.

Reworked the anti-noise timeout to avoid duplicating code.  The timeout
in the outer loop is now restarted after every noise timeout, so it is
now possible for the total timeout to be infinite; previously, the maximum
total timeout was 150000 seconds.
1996-03-08 06:11:33 +00:00
bde
501805941c Load %fs with the flat data segment selector while in protected mode.
This will be used for convenient access to the BIOS variables.
1996-03-08 05:43:46 +00:00
bde
6c2def279e Fixed restoring segment descriptors in prot_to_real(). The descriptors
must have limit 0xffff and attribute G = 0 (byte granularity) as well
as other properties that they already had (see e.g., the Intel i486
manual section 22.5).  Not restoring them broke Ctrl-Alt-Del in the
bootstrap for my ASUS P55TP4XE system, probably because the Award BIOS
does anti-tracing stuff involving inaccessible %esp's.

asm.S:
Don't use lret in prot_to_real().  This reduces the risk of using an
incompletely intialized stack segment and saves space.

Submitted by:	"K.Higashino" <a00303@cc.hc.keio.ac.jp> (on 13 Jan 1995!)
		reworked by me
1996-03-08 05:15:54 +00:00
joerg
b7b17e09c4 Create symlinks for vnboot and bootvn, too. 1996-02-03 21:12:27 +00:00
joerg
c4433ab5dc Implement an optional TIMEOUT value while entering the boot parameter
string.  This avoids indefinite hangs e.g. when used on a noisy serial
console.  It's not turned on by default.
1996-01-21 11:30:12 +00:00
joerg
eb5b9625ce Document the ``BOOT_HD'' make option for the bootblocks. 1996-01-06 23:37:10 +00:00
ache
3ec7e2cb27 Remove -fno-strength-reduce, gcc bug recently fixed 1996-01-05 19:28:55 +00:00
peter
c3f352d4ad This commit was generated by cvs2svn to compensate for changes in r13122,
which included commits to RCS files with non-trunk default branches.
1995-12-30 19:02:48 +00:00
peter
ab124e78b0 recording cvs-1.6 file death 1995-12-30 19:02:48 +00:00
bde
2d5609b7ae Removed bogus padding that wasted 0x500 bytes.
Improved code and comments.  Don't do anything except transfer control
in the head.o module.
1995-11-18 05:25:24 +00:00
bde
ba88374c64 Fixed scrolling. The bottom line wasn't cleared. This caused the
boot to display "Booting the kernelel...done" instead of "Booting
the kernel".

Removed save and restore of BIOS memory.  kzipped kernels haven't
ever overlaid the BIOS memory.
1995-11-18 05:12:10 +00:00
phk
a9b815ff73 Close PR misc/75. I thought this was done long time ago... 1995-11-06 17:28:31 +00:00
ache
864b292027 Add -fno-strength-reduce to neutralize possible bad effect of -O2
specified directly
1995-10-10 21:11:22 +00:00
peter
d76ed02585 Part 2 of the overlapping kzip changes.
Submitted by:	Gary Jones(?) <gj@freefall>
1995-10-06 02:57:26 +00:00
phk
73c29c0675 Make the netboot more tolerant about the config file. 1995-10-05 20:51:39 +00:00
bde
9540c06d42 Add comments about the bogus zeroing of the drive number for floppies
and the bogus dummy partition table.
1995-09-16 13:51:20 +00:00
bde
da456c792f Fix recent breakage of non-floppies with 36 sectors/track.
Disable support for not looking at the label when booting from fd2d
(15-sector floppies in drive 2) and fd2b (other floppies in drive 2).
1995-09-16 13:03:59 +00:00
nate
7ab21f7650 When confronted with a drive that says there are 36 sectors/track,
ignore and set it to 18 sectors/track.  This allows FreeBSD to boot with
2.88MB floppies which are used in older ThinkPads.

Submitted by:	Random Net person whose name I lost
1995-09-16 05:02:37 +00:00
dg
f97ffd6b48 Killed unnecessary \r. 1995-09-07 21:11:34 +00:00
julian
6759a9710d Cosmetic changes to make a comment more nearly reflect reality 1995-09-03 05:36:13 +00:00
bde
265f5feec8 Convert \n to \r\n in serial_putchar(). 1995-08-26 20:03:43 +00:00
pst
75f79d1db3 Clean up compilation warning. 1995-08-23 05:26:21 +00:00
joerg
a80ddb7b20 First part of importing the Japanese `od' driver.
Claim the major numbers (before sombedoy else jumps in again and
claims the slots for his foocd driver :-), install all the hooks that
are required.

While i've been at this, i've cleaned up some of the routines at the
end of i386/conf.c; all the importers of the latest CDROM drivers
forgot to fill in the appropriate information.  The `ata' driver
(vapourware?) does only occupy a slot in the bdevsw[] array, btw.

The actual import of the code does require a minor change in the SCSI
subsystem, and i want to have this reviewed by Peter first, so it will
be deferred for some days.  The driver is already working for me
though.

Submitted by:	akiyama@kme.mei.co.jp (Shunsuke Akiyama)
1995-08-19 15:59:35 +00:00
joerg
d71cede221 Install kzip.o with BINMODE=444.
Submitted by:	graichen@sirius.physik.fu-berlin.de (Thomas Graichen)
1995-08-15 19:36:02 +00:00
bde
f5284ed86d Change install' to ${INSTALL}' so that default install flags can be
specified in the top level Makefiles.
1995-07-25 00:37:58 +00:00
joerg
720f8bfcd0 this avaids the "lineoverflow" which you'll always get at 80 column
displays at bootup

Reviewed by:
Submitted by:	graichen@omega.physik.fu-berlin.de (Thomas Graichen)
Obtained from:
1995-07-22 22:32:49 +00:00
joerg
c54e2295b7 Reset defaults in case of boot() is looping several times (e.g. the
user has entered a bogus kernel name in the first place).

Also fix the broken #ifdef FORCE_COMCONSOLE, it has been disabled by
accident.  (NB: the keyboard probe remains disabled however.)

Few cosmetic fixes (declare functions to be void instead of int),
while i've been at this.

Pointed out by: wosch@cs.tu-berlin.de (Wolfram Schneider), for the init bug
1995-06-25 14:02:57 +00:00
ache
47923b93de 1) Enable boot from root partition which end > cyl 1023, it isn't criminal
2) Produce hard error when Bread attempts to read cyl >1023
Reviewed by: bde
1995-06-23 01:42:42 +00:00
rgrimes
1b1ee55538 Merge RELENG_2_0_5 into HEAD 1995-06-11 19:33:05 +00:00
rgrimes
c86f0c7a71 Remove trailing whitespace. 1995-05-30 08:16:23 +00:00
phk
570995b82c Reduce the amount of bss the kzip stuff uses by moving big buffers into
the first Mb of memory.  Makes 4Mb machines more happy.
1995-05-29 01:38:07 +00:00
phk
5edfd32aaa Now I could finally test this change: bad144 is now relative to the
partition.
1995-05-21 03:27:13 +00:00
bde
4b10d438f3 Reviewed by: phk
serial_putchar() always hung if it was called and the serial port existed,
so booting with -h hung when the above bug was fixed.  Previously, setting
-h did nothing but -h was sometimes the default due to the stack garbage
bug.
1995-05-17 07:39:43 +00:00
bde
139020888f Reviewed by: phk
Submitted by:	DI. Christian Gusenbauer <cg@scotty.edvz.uni-linz.ac.at>

The `howto' arg to boot() was not supplied, so it was stack garbage (actually
the return address in the boot program).  I didn't use the submitted fix.
1995-05-17 07:37:53 +00:00
phk
a0a1fbecf5 Use spc, not spt, DUH! Thanks Bruce!
Submitted by:	bde
1995-05-11 16:19:50 +00:00
phk
b2a9651ad8 Make disk.c smart enough to handle disk with "OnTrack Disk manager".
Make it complain if people try to boot from a partition which extends
past 1024 cylinders.  This is better than a random reset...
1995-05-08 02:02:56 +00:00
phk
82051ce6fc New and improved version from the author.
Submitted by:	DI. Christian Gusenbauer <cg@fimp01.fim.uni-linz.ac.at>
1995-04-27 18:22:36 +00:00
julian
88b4fc2525 Submitted by: bde@freebsd.org 1995-04-21 22:20:34 +00:00
bde
79d93cb4f7 Make some functions static like they always should have been.
Change the interfaces of these functions to save space.  The code
that takes the least amount of space is often the opposite to what
you might expect.  E.g., it helps to waste a few bytes passing
pointers so that the compiler can't see that certain addresses
are identical (gcc likes to waste space by reloading fat constants
even when the constant is already in a register).

Rewrite getbootdev() to save 80 bytes of space and to make it less
ugly.  32 bytes were saved simply by omitting the continue statements
in the pseudo-switch.
1995-04-21 16:50:32 +00:00
bde
03471c0c05 Update the pseudo-prototype for serial_putc() to match the actual prototype. 1995-04-21 16:30:18 +00:00
bde
05efcad0fb Never pass char or short args to functions. This saves 64 bytes of
recently introduced bloat in just 2 calls to biosread(), although
very little in calls to putc() and serial_putc().  Gcc produces
amazingly bad code for unnecessary conversions.  E.g., if it has
`int x' in register %edx and wants to pass a char, then it could
simply push %edx and access only one byte in the callee.  Instead,
it sometimes unnecessarily spills %edx; it always sign extends
%edx and pushes the result.

Remove useless `extern' in function prototypes.

Remove unused declaration of `end'.

Declare pbzero() and pcpy() like the library bzero and bcopy().

Declare printf() properly.
1995-04-21 16:07:12 +00:00
joerg
96e572a290 . Make Poul's boot2 overflow warning less noisy in case the blocks
do fit, and beeping in case of an overflow.

.  Drop a comment about the ``FORCE_COMCONSOLE'' option into
   README.serial.

.  Increase the name buffer for the root directory from 100 bytes
   to 8 KB;  this is in no way ideal, but (IMHO) the best that can
   be done by now.  People did encounter problems with their root
   dir name listing overflowing the allocated buffer space.  Once
   we've got the three-stage boot, we should implement some basic
   malloc().  Swap space is already getting tight now, perhaps the
   swap should go into another 64 KB segment instead.

.  Make the keyboard probe less paranoid.  It should not give up in
   case of a keyboard that's continuously demanding RESEND's.  Even
   though the keyboard reset apparently has not been reported to be
   complete, it's at the very least proven that there IS something
   like a keyboard available.

   This solves problems with the ``Gateway-2000 AllKey programmable''
   (sp?) keyboard, that experienced a total hang with the previous
   probe.

   Thanks goes to Scott Blachowicz <scott@statsci.com> for his
   extensive testing of my various interim (debugging) bootblocks
   to get this working.
1995-04-20 23:15:10 +00:00
julian
f368595f7c Add an option to make it easy to default to the hd1 mode
also save a few bytes
1995-04-20 23:05:23 +00:00
phk
f4b86adcb0 Added a check so compilation fails if the bootblocks are too big.
replaces a switch with ifs to reduce size.
1995-04-20 18:36:14 +00:00
phk
148c1fd4a0 Added -C option to set RB_CDROM, so that we use our cdrom as root. 1995-04-20 06:08:27 +00:00
joerg
8214ce4975 Remove the #ifdef REDUNDANT crud. This could be looked up in CVS by
interested parties.

Make the loader refuse to load anything below 1 MB -- we didn't
support it since FreeBSD 2.0R.  Avoid gratuitously wiping out the BIOS
variables or the loader.
1995-04-16 13:02:52 +00:00
phk
9e3e8483ce Added kzipboot 1995-04-15 08:24:33 +00:00
phk
d54917fe68 The magic code to uncompress a kernel.
Reviewed by:	phk
Obtained from:	Linux via 386BSD.
1995-04-15 08:23:55 +00:00
phk
16a72c3c13 "jl" and "jb" doesn't quite do the same thing...
Reviewed by:	phk
Submitted by:	"DI. Christian Gusenbauer" <cg@scotty.edvz.uni-linz.ac.at>
1995-04-14 23:01:33 +00:00
joerg
b759fab5af Boot block cleanup.
o Fix the keyboard probe to properly wait for the ready bit before
sending a command to the keyboard controller.  This should avoid the
problems some people are experiencing where the boot blocks hang the
system during keyboard probe.  (It does solve it for me.)

o Fix a bug that effectively prevented the boot blocks from ever
passing control to the serial console.  [while(--retries) instead of
while(retries--)]

o Gratuitously reduced the keyboard probe timeout from 500 to 5
seconds. :)

o Introduced a new option ``FORCE_COMCONSOLE'' as a commented-out
example in the Makefile, to force the usage of a serial console
regardless of a keyboard being connected or not.

o Moved all external declarations to boot.h, declared all functions
there, and ANSIfied all function declarations/definitions.
(printf() remains bogus, however -- i'm too lazy to fix this.)
We're in the ninetees, dunno why we should still support compilers
from the 70's.
1995-04-14 21:26:53 +00:00
wpaul
20571a3249 According to a Usenet posting forward to me by Jordan, there's
at least one user out there who's system won't autoboot from the
serial console because of what sounds like 'phantom keystrokes'
making the timeout timer trip. I've tried to solve this by
adding an extra call to init_serial() right before the 'Boot:'
prompt is printed (done only if RB_SERIAL is set) to hopefully
make sure that the input buffer is clear. Unfortunately, the fellow
is in Germany and I haven't heard back from him yet. I haven't
been able to duplicate this problem on my hardware, so this is
a stab in the dark. At the very least, it shouldn't hurt anything.
1995-04-14 01:35:59 +00:00
martin
669ed5b46e Break netboot into device specific versions.
nb8390.[cr]om for NS8390 boards (if_ed driver)
nb3c509.[cr]om for 3c509 boards (if_ep driver)

Submitted by:	Serge Babkin (babkin@hq.icb.chel.su)  [3c509 support]
1995-04-12 20:15:33 +00:00
bde
8befbf7614 Include <machine/cpufunc.h> to get i/o functions - don't duplicate almost
200 lines of code.
1995-04-01 16:08:58 +00:00
bde
b9d1d7a988 Fix dependencies for netboot.rom. ${OBJS} isn't valid when the
dependencies are checked - it is set much later in bsd.prog.mk.

Add a comment about broken dependencies on options.
1995-04-01 16:03:25 +00:00
jkh
74af7d44ef Diskless boot support for 3C509.
I'm not exactly sure why all the inb/outw stuff got added to netboot.h
and I'd be happy if someone like Martin or Bruce could take a look at it!
Submitted by:	"Serge A. Babkin" <babkin@hq.icb.chel.su>
1995-03-31 06:51:37 +00:00
phk
533316ed98 Don't install /usr/mdec/boot
Install the biosboot as /usr/mdec/boot[12]
Make the traditional links from [swf]dboot and boot[swf]d to boot[12] files.
Install dosboot as /usr/mdec/boot/fbsdboot.exe
1995-03-28 19:22:43 +00:00
phk
dff6bf2b1c And all serial chars with 0x7f to discard parity bits. 1995-03-19 06:10:32 +00:00
dg
070760fddb Removed "-D" option and made symbols load all the time. They will be
discarded if the kernel isn't built with DDB.
1995-03-14 08:21:53 +00:00
wpaul
453667f810 Some people have complained that they were unable to boot the
Feb. 10th snapshot. The keyboard probe in the bootblock seems to
have been singled out as the cause of these problems, so I've beefed it
up alittle. This pushes us right up to the edge of the size limit:
the second stage boot is now 7152 bytes in size, just 8 bytes under
the wire. On the other hand, the new probe now does almost exactly
what syscons does, so hopefully this will do the trick. It seems
to work properly on my hardware, but then so did the old probe.
1995-03-02 21:00:14 +00:00
bde
83aff90f5e Adjust for rearranged slice numbers. 1995-02-16 15:06:09 +00:00
jkh
05516a1f1d Update this a little, though we probably need to either nuke or rename it! 1995-02-16 12:02:08 +00:00
wpaul
12a2203294 Minor changes and additions to the serial README file. 1995-02-16 07:37:35 +00:00
phk
36a85bcce0 This is a MS-DOS program, but is does something useful for us:
It boots FreeBSD from a running MS-DOS system.

It's compiled using some MS-DOS tools, but there is a binary
hidden in the uuencoded file.  (Go ahead, flame me if you can come up
with a solution for the problem.  Just saying "this is bad" doesn't count!)

Rod, you were right: one would have to deal with weird interfaces to the
memory managers, and it seems that Christian found them all, and made them
work.

Thanks Christian!

Reviewed by:	phk
Submitted by:	DI. Christian Gusenbauer <cg@fimp01.fim.uni-linz.ac.at>

Christians README:
------------------

Hi Everybody!

This is version 1.5 of "fbsdboot", a program that allows you to boot a kernel
from a MS-DOS partition or a FreeBSD partition. This program runs using DOS.
It works with various memory managers (like  EMM386, 386MAX) under certain
circumstances.

First, a FreeBSD kernel is always loaded to memory starting at 0x100000. To
assure that loading the kernel *does not* overwrite memory used by memory
managers, high memory for the kernel is allocated and after loading the kernel
it's moved to 0x100000.

Second, there are many ways to switch to protected mode which is necessary to
start the kernel. Each BIOS gives you the possibility to use INT15H (AH=89H)
to do that. But some memory-managers like 386max does not allow you to use
this method.

An other way to do the switch is to use DPMI services, but they do not
guarantee, that the protected mode application is executed with privilege
level 0. Therefore this method is *not* used.

VCPI services offer another way to switch to protected mode, and VCPI servers
are built into "emm386.exe", "386max" and "qemm". That's why, this method is
implemented in fbsdboot.exe.

Fbsdboot.exe tries to switch to protected mode using VCPI services. If they're
not available INT15H is used to do the switch. If that fails, it's not possible
for this version of fbsdboot.exe to boot a kernel :-(.

You can get commandline options of fbsdboot if you start it with "-?" as option!

I don't know, if fbsdboot works with QEMM, as I don't have the possibility to
test it.

Enjoy and have fun!

Christian.
cg@fimp01.fim.uni-linz.ac.at


PS: Many thanks to Bruce Evans for his assistance!
1995-02-15 04:45:50 +00:00
rich
d1fc7583ad Reviewed by: Jordan
Submitted by:	Rich

Make conditionals on BIOSWAIT consistent with usage in io.c.

If you had 'BOOTWAIT=0' in your /etc/make.conf then biosboot wouldn't
compile.  It was '#if' in io.c and '#ifdef' in probe_keyboard.c so I
changed the latter to '#if'.

Even if BOOTWAIT is undefined then '#if BOOTWAIT' becomes
'#if 0' so it should compile either way with this change.
1995-02-15 04:17:59 +00:00
dg
745d0dc6a0 Get rid of extra []'s and otherwise fix-up boot prompt. Reordered
boot flags processing to be alpha-beta.
1995-01-28 03:51:39 +00:00
bde
802677cea8 Load the kernel symbol table in the boot loader and not at compile time.
(Boot with the -D flag if you want symbols.)

Make it easier to extend `struct bootinfo' without losing either forwards
or backwards compatibility.

ddb_aout.c:
Get the symbol table from wherever the loader put it.
Nuke db_symtab[SYMTAB_SPACE].

boot.c:
Enable loading of symbols.  Align them on a page boundary.  Add printfs
about the symbol table sizes.
Pass the memory sizes to the kernel.
Fix initialization of `unit' (it got moved out of the loop).
Fix adding the bss size (it got moved inside an ifdef).
Initialize serial port when RB_SERIAL is toggled on.
Fix comments.
Clean up formatting of recently added code.

io.c:
Clean up formatting of recently added code.

netboot/main.c, machdep.c, wd.c:
Change names of bootinfo fields.

LINT:
Nuke SYMTAB_SPACE.
Fix comment about DODUMP.

Makefile.i386:
Nuke use of dbsym.
Exclude gcc symbols from kernel unless compiling with -g.
Remove unused macro.
Fix comments and formatting.

genassym.c:
Generate defines for some new bootinfo fields.  Change names of old ones.

locore.s:
Copy only the valid part of the `struct bootinfo' passed by the loader.
Reserve space for symbol table, if any.

machdep.c:
Check the memory sizes passed by the loader, if any.  Don't use them yet.

bootinfo.h:
Add a size field so that we can resolve some mismatches between the loader
bootinfo and the kernel boot info.  The version number is not so good for
this because of historical botches and because it's harder to maintain.
Add memory size and symbol table fields.  Change the names of everything.

Hacks to save a few bytes:

asm.S, boot.c, boot2.S:
Replace `ouraddr' by `(BOOTSEG << 4)'.

boot.c:
Don't statically initialize `loadflags' to 0.  Disable the "REDUNDANT"
code that skips the BIOS variables.  Eliminate `total'.  Combine some
more printfs.

boot.h, disk.c, io.c, table.c:
Move all statically initialzed data to table.c.

io.c:
Don't put the A20 gate bits in a variable.
1995-01-25 21:40:47 +00:00
jkh
375b4a802c Y.A.B.M (Yet Another Bogus Makefile) 1995-01-24 00:41:50 +00:00
wpaul
fe760b5318 Removed hardcoded definition for RB_SERIAL that I left in my accident
(had it there for testing purposes). RB_SERIAL should be found in
<sys/reboot.h>.
1995-01-20 07:52:42 +00:00
wpaul
1875d75ad1 Submitted by: Bill Paul (wpaul@ctr.columbia.edu)
Obtained from:
bios boot block changed to allow booting from both the attached graphics
display and from a serial port. (A specially compiled serial boot block
is no longer necessary.) The boot block should detect the presence or
absence of a keyboard: if there is no keyboard, COM1 is turned into the
console. This simulates the behavior of the Sun boot PROMs. Unplug your
keyboard, attach a terminal to COM1 and you should be ready to go. :)
1995-01-20 07:48:27 +00:00
jkh
bd4c32e337 Really provide support for 3COM cards now.
Submitted by:	wpaul
1994-12-31 17:16:50 +00:00
bde
b57a644d4a Save 16 bytes of data by not explicitly initializing to 0. 1994-12-30 07:48:07 +00:00
joerg
a1049f75bf Insert a hook to initialize the serial port at the beginning of
boot().  This is needed so the "serialboot" stuff can share this file,
too.

Everything is #ifdef'ed so it evaluates to nothing when actually been
built in the "biosboot" directory.
1994-12-18 20:30:10 +00:00
joerg
ed32f08aff This became a frequently requested item now.
The files in this directory are modified version of "biosboot".  The
only difference is in that they perform their I/O via a serial port,
so their preferrable usage is to form bootblocks for systems where the
kernel happens to have an "options COMCONSOLE".  Most of the code is
actually shared with "biosboot", and make will not (and should not)
descend into this directory by default.  It is in the responsibility
of the user to build these bootblocks instead of the original ones.
1994-12-18 20:12:10 +00:00
bde
761d6c11bd Pass the slice number of the boot device to the kernel in the previously
unused bitfields for the adaptor and the controller.  It should go in
the bitfield for the partition but that would not be backwards compatible.
1994-12-18 19:14:19 +00:00
phk
7bd901cd23 Implement RB_VERBOSE. This is intended to mean: Print all information which
could be of any use for trouble-shooting problems with boot/devices/drivers.
1994-11-26 09:08:48 +00:00
jkh
f26ca3b8fd From: wpaul@ctr.columbia.edu (Bill Paul)
Subject: Mea culpa -- small fix for netboot fixes

In accordance with the unavoidable principle sof Murphy's Law, I discovered
that the fixes I recently contributed for the netboot code had some small
flaws in them. Two of them were just typos and had no effect on how the
program functioned. The other one was a missing line from the rootopts and
swapopts functions I created in bootmenu.c, which was supposed to initialize
the NFS sotype flag. It defaults to UDP, and you can change it to TCP with
the rootopts or swapopts commands, but then you can't change it back again.
I originally had a line at the top of each function to reinitialize this
flag, but somehow it got lost in the shuffle, probably because I don't
actually have a need for that flag yet.

Submitted by:	wpaul
1994-11-18 16:29:50 +00:00
jkh
3ed3df5cfc Boy, was THIS buggered up! Calm the compiler by fixing the obvious
syntax errors.
1994-11-18 13:40:19 +00:00
phk
2ef227667c Change the message a little bit... 1994-11-18 10:21:31 +00:00
phk
9737a356a7 one ) less. 1994-11-18 06:22:11 +00:00
phk
b7cd7a6cec Ask the BIOS about the geometry, and tell the kernel about it. 1994-11-18 05:02:14 +00:00
jkh
3a795fa5ff Many fixes from Bill Paul:
Smack the netboot program around so that it will allow the user to
  specify mount options.  [So that you can boot from a privileged port]

  Change the default boot image name in netboot to /kernel, then strip
  the leading slash when actually going out to get the NFS file handle.

  Added support for 3Com 3c503 cards. Also added another command to
  the (trans) that allows you to switch the 3Com's on-board transceiver
  on and off. (ether.c, ether.h, bootmenu.c)

  Modified the Makefile to support new compile-time options for 3c503
  cards:

  -DINCLUDE_3COM                Include support for 3c503
  -D_3COM_BASE=0x300            Define 3c503 base i/o address (if not
                                specified, 0x300 is the default)
  -D_3COM_USE_AUI               Disable the 3c503's transceiver by
                                default (without this flag the transceiver
                                is on by default)
1994-11-17 12:16:07 +00:00
dg
3e80f17d97 Improved the user interface:
1) Added file list capability via '?'.
2) Arranged usage info to be more unix-like.
3) Fixed backspace over prompt annoyance.
1994-11-07 11:26:30 +00:00
ache
84e8df5619 Change -O2 to -O
With each gcc version -O2 can cause absolutely unpredicatable things
Second stage boot still fits in allowed size
1994-11-05 21:06:16 +00:00
jkh
f4eb739b8b John Hay's patches to prevent missing gateway from dumping core.
Submitted by:	jhay
1994-11-01 22:12:35 +00:00
jkh
571a51c7bc Expunge the stain I left upon this code. My '/' fix was utterly
bogus.  Thanks, Boyd!
1994-10-31 18:00:06 +00:00
phk
b706546997 A new Makefile, which is more our kind of makefile.
Based on Martins makefile, made by Rod, briefly tested by me
1994-10-28 22:13:22 +00:00
phk
8ef5a847e8 Add netboot to the world of make. 1994-10-28 22:11:50 +00:00
rgrimes
b033a47002 Removed extra slash between ${DESTDIR} and ${BINDIR}, noticed while working
on Makefile for netboot.
1994-10-28 07:54:13 +00:00
phk
adec7b0e90 Urg! the netboot/Makefile is in a miserable state. 1994-10-28 04:56:51 +00:00
phk
3ece64714b This concludes the CVS-surgery. This makefile now just points at the subdir's. 1994-10-28 04:46:08 +00:00
jkh
7469ab546f Gross hack to make kernel names not starting with '/' start with '/'. 1994-10-26 20:46:05 +00:00
jkh
9a61e8cf98 Adjust boot message to conform to reality. 1994-10-26 20:22:10 +00:00
jkh
6f019d574f Remove the code for asking for a filesystem floppy. We don't need
it anymore, and neither David nor I can think of a reasonable
mechanism to stick in its place.
1994-10-26 13:46:34 +00:00
jkh
dc92d14121 Add RB_CONFIG flag. 1994-10-26 13:18:49 +00:00
phk
3d7628e9db Found one of the show-stoppers in netboot... 1994-10-22 16:30:58 +00:00
phk
2d37cac963 Some cosmetics in printfs mostly. 1994-10-22 04:23:12 +00:00
phk
e55b0fa62f Martins latest changes. RFC1048 and swap-file should be in the game now.
Submitted by:	Martin Renters.
1994-10-19 20:25:37 +00:00
phk
f77da950be Added the final printf before jumping to the kernel. 1994-10-18 03:44:02 +00:00
phk
c10aa664a3 Made '?' do the same thing as help.
Fixed bug in netmask command.
Loads kernel fine.  I'm trying to get locore/autoconf to like the stuff.
1994-10-18 02:46:48 +00:00
phk
3636a6db90 Netboot TNG. I have seen this compile, I don't know if it works.
I have put it here, because I belive we could share some code among the
various kinds of boot-code, whenever we get the time to look at it.

Submitted by:	Martin Renters
1994-10-17 17:55:31 +00:00
phk
a022f22e6b $DESTDIR missing... 1994-10-15 03:59:19 +00:00