Commit Graph

798 Commits

Author SHA1 Message Date
Doug Rabson
4eedebf31f Only build PnP parts if the platform supports PnP. 2000-09-10 12:15:30 +00:00
Daniel C. Sobral
23aecb0109 Upon reflection, I decided that bootfile must have priority over kernel
as the kernel name. The one very unfortunate consequence is that kernel
as an absolute path loses the priority. It will only be tried after
/boot/${kernel}/${bootfile}. I'll see what can be done about it later.
2000-09-09 18:20:00 +00:00
Robert Nordier
3348fae50d Correct BSD/OS slice type.
PR:           21099
Submitted by: Alan Clegg <abc@bsdi.com>
2000-09-09 18:05:22 +00:00
Daniel C. Sobral
88a7f9eb70 First tackle at trying to handle the New Deal on kernels.
Load the first of the following kernels to be found:

${kernel} if ${kernel} is an absolute path
/boot/${kernel}/${kernel}
/boot/${kernel}/${bootfile}
${kernel}/${kernel}
${kernel}/${bootfile}
${kernel}
${bootfile}

The last instance of ${kernel} and ${bootfile} will be treated as a
list of semicolon separated file names, and each will be tried in turn,
from left to right.

Also, for each filename loader(8) will try filename, filename.ko,
filename.gz, filename.ko.gz, in that order, but that's not related
to this code.

This resulted in a major reorganization of the code, and much of what
was accumulating on loader.4th was rightly transfered to support.4th.

The semantics of boot-conf and boot also changed. Both will try to load
a kernel the same as above.

After a kernel was loaded, the variable module_path may get changed. Such
change will happen if the kernel was found with a directory prefix. In
that case, the module path will be set to ${directory};${module_path}.

Next, the modules are loaded as usual.

This is intended so kernel="xyzzy" in /boot/loader.conf will load
/boot/xyzzy/kernel.ko, load system modules from /boot/xyzzy/, and
load third party modules from /boot/modules or /modules. If that doesn't
work, it's a bug.

Also, fix a breakage of "boot" which was recently introduced. Boot without
any arguments would fail. No longer. Also, boot will only unload/reload
if the first argument is a path. If no argument exists or the first
argument is a flag, boot will use whatever is already loaded. I hope this
is POLA. That behavior is markedly different from that of boot-conf, which
will always unload/reload.

The semantics introduced here are experimental. Even if the code works,
we might decide this is not the prefered behavior. If you feel so, send
your feedback. (Yeah, this belongs in a HEADS UP or something, but I've
been working for the past 16 hours on this stuff, so gimme a break.)
2000-09-09 04:52:34 +00:00
Daniel C. Sobral
869e9b2096 Update boot and boot-conf descriptions to reflect new and old changes.
Add a warning in loader(8) that boot might be changed by loader.4th.
2000-09-08 21:39:31 +00:00
Daniel C. Sobral
80a1a63ef5 Enhance boot-conf.
Now boot-conf can also receive parameters to be passed to the kernel
being booted. The syntax is the same as in the boot command, so one
boots /kernel.OLD in single-user mode by typing:

boot-conf /kernel.OLD -s   instead of
boot-conf -s /kernel.OLD

The syntax still supports use of directory instead of file name, so

boot-conf kernel.OLD -s

may be used to boot /boot/kernel.OLD/kernel.ko in single-user mode.

Notice that if one passes a flag to boot-conf, it will override the
flags set in .conf files, but only for that invocation. If the user
aborts the countdown and tries again without passing any flags, the
flags set in .conf files will be used.

Some factorization was done in the process of enhancing boot-conf,
as it has been growing steadly as features are getting added, becoming
too big for a Forth word. It still could do with more factorization,
as a matter of fact.

Override the builtin "boot" with something based on boot-conf. It will
behave exactly like boot-conf, but booting directly instead of going
through autoboot.

Since we are now pairing kernel and module set in the same directory,
this change to boot makes sense.
2000-09-08 21:11:57 +00:00
Daniel C. Sobral
ebc9286d61 Strictly speaking, this works. It enumarates the PnP devices, and
load the modules needed according to a file relating module names
(actually, _file_ names, not really modules -- the dependency
stuff is not exported to loader's UI) to PnP IDs.

But it still lacks a number of desired features, and it's too crude
for my tastes. But since I don't have time to work on it, it might
be preferable to make it available to those who might. It's not
installed by default, much less loaded. In fact, it wouldn't even
had a copyright message (who? me? assume responsibility for _this_?),
if the cvs commit hadn't aborted for lack of $FreeBSD$, and I decided
to just cut&paste the stuff from elsewhere.
2000-09-08 17:13:24 +00:00
Daniel C. Sobral
f5da975f8f Add the infrastructure necessary to handle PnP from a Forth script.
Also, export the file_findfile() function. Again, this is taken from
work in progress but frozen for the time being. Since it works, I'd
rather commit and remove any uglyness later than hide it on my tree.
2000-09-08 17:03:53 +00:00
Daniel C. Sobral
d39b220c77 Fix an error message which was using the wrong variable to get the
kernel name from.
2000-09-08 16:58:31 +00:00
Daniel C. Sobral
297c9cab3e Add constructors to crude structure support. Rework some of the
code into a more modular interface, with hidden vocabularies and
such. Remove the need to a lot of ugly initialization.

Also, add a few structure definitions, from stuff used on the C
part of loader. Some of this will disappear, and the crude structure
support will most likely be replaced by full-blown OOP support
already present on FICL, but not installed by default. But it was
getting increasingly inconvenient to keep this separate on my tree,
and I already lost lots of work once because of the hurdles, so
commit this.

Anyway, it makes support.4th more structured, and I'm not proceeding
with the work on it any time soon, unfortunately.
2000-09-08 16:57:28 +00:00
Daniel C. Sobral
3053524c85 Make the pnp structure a global variable, so it can be used elsewhere. 2000-09-08 16:51:29 +00:00
Daniel C. Sobral
59549c5031 Fix autoboot. Now autoboot *always* show the correct kernel name. It
gets the name from the environment variable kernelname, which is set
when a kernel is loaded. For this reason, autoboot will _first_ try
to load a kernel, and only proceed with the wait prompt after that
succeeds. If it fails, it will abort immediately.

While I understand some may think this behavior undesirable, I think
it is, overall, the best thing to do, even if we do not consider the
aesthetic issue. Notice that anyone using the default loader.rc
already has the kernel loaded before autoboot.

On unload, unset kernelname.

Separate the code that tries to load a kernel from the list of options
to the function loadakernel(). It is used by both boot() and
autoboot().
2000-09-08 16:47:05 +00:00
KATO Takenori
87beee9c90 Merged from sys/boot/i386/loader/Makefile revision 1.47. 2000-09-08 11:18:40 +00:00
Warner Losh
799c0f62dd Look for libstand in the built tree rather than in /usr/lib. This
likely could be done better, but the tree is broken and I wanted to
get a fix into the tree.

Reviewed by: msmith
2000-09-08 04:26:55 +00:00
David E. O'Brien
db266683d3 With the committed changes to the loaders modules path code, the kernel
path does not need to be hard coded.
2000-09-06 20:50:24 +00:00
David E. O'Brien
6f54390e53 Fix the kernel default load from "/boot/modules" to "/boot/kernel".
Reported by:	dcs
2000-09-05 23:10:46 +00:00
David E. O'Brien
3bdfa9e589 The kernel is now known as `kernel.ko' and it and its matching modules
live in ``/boot/kernel/''.
2000-09-05 22:37:46 +00:00
Mike Smith
0153af6a16 Fix a bug which prevents parsing this Makefile without having a
previously-built loader binary elsewhere.
2000-09-05 22:33:07 +00:00
Mike Smith
bb65fdf6e0 Export the salient configuration items in a non-pxe-specific namespace
to allow commonality between varying platforms.  This is a step
towards parsing the diskless configuration information with MI code
inside the kernel.

Export the interface hardware address to the kernel, so that it is possible
to determine the boot interface with certainty.

Export the NFS filehandle for the root mount to the kernel, so that the
kernel does not need to perform a mount RPC call.
2000-09-05 22:32:31 +00:00
David E. O'Brien
06a5e547a9 This is real released software, let people think that. 2000-09-03 02:46:17 +00:00
KATO Takenori
8b6a5e91bb The INT 1B BIOS call is used to obtain geometries of SASI/IDE hard
drives.  Some IDE cards don't set propler information into BIOS work
are and their sector size were always recognized as 256 bytes/sector.

Pointed out by:	jagarl@creator.club.ne.jp
2000-08-31 10:24:06 +00:00
John Baldwin
6bd9abd49a Add a new compile-time tweak to BTX. If you set the make(1) variable
BOOT_BTX_NOHANG, then BTX will be compiled with the appropriate flags so
that it reboots after a fault instead of hanging forever.

Requested by:	ps
Approved by:	rnordier
2000-08-24 20:57:44 +00:00
Sheldon Hearn
243782a80a List loader.conf and friends in the FILES section.
Requested by:	obrien
2000-08-24 08:00:29 +00:00
KATO Takenori
77dff523b3 Fixed determination method for sector size of the 2nd IDE HDD. 2000-08-15 08:17:03 +00:00
KATO Takenori
9300e1bae2 Merged from sys/boot/i386/Makefile.inc revision 1.2. 2000-08-12 07:37:19 +00:00
Peter Wemm
5aef48a16b Add -mpreferred-stack-boundary=2 to CFLAGS for i386. This and libstand
reduces /boot/loader from 163840 bytes to 155648 and pxeboot from 165888
bytes to 157696 bytes.
2000-08-11 23:23:20 +00:00
Daniel C. Sobral
e7b7c050c7 Add missing "is".
PR:		20524
Submitted by:	Peter Pentchev <roam@orbitel.bg>
2000-08-11 10:32:23 +00:00
Paul Saab
646cf5017b Add support to send the string 'PXEClient' as the Vendor class
identifier to the DHCP server.  Now you can check for this string
in your dhcp configuration to decide whether you will hand out a
lease to the client or not.
2000-08-11 08:36:17 +00:00
Paul Saab
f6940c1842 Pass along the interesting variables we were given from DHCP so we
can utilize them in the kernel and with kenv.
2000-08-11 05:31:59 +00:00
Robert Nordier
ff7ed3a234 Typo/spelling fixes. 2000-08-08 07:20:25 +00:00
KATO Takenori
c4082e99a4 - Fixed missing initialization of current device number.
- Fixed comment.

Pointed out by:	nyan
2000-08-06 14:35:37 +00:00
John Baldwin
ab9e9f9d2d Argh! Fix a brainfart of mine. In the old boot0, we relocated ourself
to 0x600 via a 'rep movsw'.  Once that was done, %cx was zero, so we could
simply use 'movb' to update the lower byte of %cx in preparation for
zeroing out the fake partition entry used to boot to other drives via F5.
Well, in the new boot0, we don't actually relocate ourselves, instead it
is easier to create the fake partition entry first and then just use it to
get the BIOS to load all of boot0 into memory at 0x600.  However, since we
aren't doing the relocate code anymore, we don't know that %cx == 0 when
we hit the 'movb' to setup %cx for clearning the fake partition entry.
Thus, if %ch != 0 when the BIOS started boot0, then it would end up zeroing
a lot more memory than just 8 words.  The solution is to do a word move of
$8 into %cx.

Debugging help from:	David Wolfskill <dhw@whistle.com>
2000-08-04 22:37:21 +00:00
David E. O'Brien
2111e67c80 Fix this so it is a Makefile and not a shell script -- now issuing `make'
a second time does not rebuild the binary.
2000-08-04 08:30:00 +00:00
John Baldwin
2efeedfd4b Fix some of the arcdisk devsw functions to catch up with warning fixes in
<stand.h>.  Also, since bcache_strategy() used to not have a prototype,
arcdisk happily called bcache_strategy() with 6 parameters instead of 7,
leaving out the disk unit number, which is the 2nd parameter.  Add in the
unit number to the bcache_strategy() call to fix this.
2000-08-04 05:25:36 +00:00
John Baldwin
00dc3782f7 Bring back the perform() function. However, conditionionalize it on
BOOT_FORTH as it is only used if BOOT_FORTH is not defined.
2000-08-04 05:23:41 +00:00
KATO Takenori
aa4e20f5bd - Fixed %si (offset to partition table) in boot.
- Fixed comment.
2000-08-03 13:01:45 +00:00
John Baldwin
eb37712079 Fix the more obvious warnings to deal with my earlier warning cleanups. 2000-08-03 09:49:44 +00:00
John Baldwin
4ae4202e70 Cleanup warnings. Most of these are signed/unsigned warnings, as well as
some added const's.
2000-08-03 09:14:02 +00:00
John Baldwin
c2fa9f3e89 Fix several BDECFLAGS warnings. Also, actually use the 'verbose' parameter
for lsdev when printing out slice information.  Now, you only get the
sizes and LBA's of slices if you use 'lsdev -v'.
2000-08-03 09:09:49 +00:00
KATO Takenori
1ee980919d - Fixed pointer to the partition table in the buffer.
- Use shift by %cl instead of five shifts by 1.
2000-08-03 09:00:19 +00:00
KATO Takenori
e9b13dd6ec Added PC-98 HDD boot manager. The boot0 is the `IPL' which occupies
sector 0 of a disk and boot0.5 is the `boot selector' which starts
from address 0x400.  The IPL loads boot0.5 and boot0.5 loads bootblock
of a slice.

The boot manager stuff was developed by me (kato) with Borland C++,
and then, translated into bcc in the ports collection by Nokubi-san.
After that, boot0 has been translated into gas with the .code16
directive by Takahashi-san (nyan) and boot0.5 has been rewritten in
gas by me.
2000-08-02 08:46:08 +00:00
Yoshihiro Takahashi
78a9e97b3a Merged from sys/boot/i386/btx/btx/btx.s revisions from 1.18 to 1.22. 2000-07-30 07:45:02 +00:00
Sheldon Hearn
1b2fbe6ff9 Rename the loadable nullfs kernel module: null -> nullfs 2000-07-28 11:54:09 +00:00
John Baldwin
ddb820b015 Remove an unnecessary .PATH entry. 2000-07-21 22:36:42 +00:00
David E. O'Brien
ff1e937c46 Declare our DEC Alpha cdboot to be a fully released version 1.0. 2000-07-18 04:15:06 +00:00
John Baldwin
f15da231c5 Oops. Remove some debugging code used to display a hexdump of the sector
we just loaded from the disk.  The code to call it was commented out, and
it easily fit into the extra sector, but remove it anyway as it is
unneeded.
2000-07-17 19:39:50 +00:00
Jonathan Lemon
cd914f8fa0 Unbreak the build -- no manual page for this yet. 2000-07-17 19:03:58 +00:00
Jonathan Lemon
15602c8dd8 Hook up liloldr 2000-07-17 17:06:27 +00:00
Jonathan Lemon
9ebf93dc6d This is `liloboot', which creates a file which can be treated like a
Linux kernel image, and is designed to be dropped into a Linux system
and booted via LILO.  Once booted, the user is greeted by the FreeBSD
loader.  This still isn't quite complete, as the the root= specification
from LILO isn't currently passed to the loader yet.
2000-07-17 17:06:04 +00:00
Yoshihiro Takahashi
11c2252a1f Merged from sys/boot/i386/libi386/biosdisk.c revision 1.31. 2000-07-14 04:23:45 +00:00
John Baldwin
1dce5cb37f The new and improved boot0, v1.1. This version adds the following:
- Autodetection and support of the BIOS EDD extensions to work around the
  1024 cylinder limit on all but really ancient BIOS's.
- To work around some BIOS's which break when EDD is used with older drives,
  we only attempt to use EDD if the cylinder is > 1023.
- Since this new code required more space than we had left, expand boot0 to
  2 sectors (1024 bytes) in length.
- Add support for boot0 being multiple sectors using predefined constants.
  If boot0 needs to be extended in the future, all that is required is
  bumping the NUM_SECTORS constant.
- Now that we have more room to work with, add a few more fs type
  descriptions while making others more verbose.
2000-07-12 18:11:54 +00:00
John Baldwin
492f000557 Always install loader.4th, defaults/loader.conf, and support.4th instead of
only doing so if loader.rc does not exist.  This fixes the problem where
installworld doesn't update /boot/loader.4th, resulting in device.hints not
being loaded after updating past the config(8) changes, which resulted in
mcclock0 not being probed, and a nice kernel panic during boot.
2000-07-10 16:52:42 +00:00
Kris Kennaway
8c8970cf16 Don't call printf with no format string. 2000-07-10 06:40:06 +00:00
Kris Kennaway
487730cc8b Don't call printf with no format string. This is technically a security
vulnerability and could in principle be used to upload a new kernel from the
bootloader :-)
2000-07-10 06:33:55 +00:00
John Baldwin
18601b5712 Remove commented out NOMAN variable. 2000-07-07 20:37:11 +00:00
John Baldwin
8dfe6fb59c - Inline all the functions that are only called once. This results in a
savings of 68 bytes in boot2.
- Also add a comment warning that you can't remove the empty exit()
  function.
2000-07-06 01:51:27 +00:00
John Baldwin
54ff3ae038 Doh. The disklabel is not 0x200 bytes of zeros, but it is 0x200 bytes long. 2000-07-06 00:29:40 +00:00
John Baldwin
a6bef20793 Clarify the comments in here a bit. The first sector of boot2 is not just
zeros, it is actually the disklabel itself.  boot2.ldr is simply a
placeholder in the boot2 binary.
2000-07-06 00:22:50 +00:00
John Baldwin
bd61ce880f Emulate the WBINVD instruction when it is called by the BIOS. 2000-07-06 00:13:21 +00:00
John Baldwin
0b74850760 Change the fault message to say 'BTX halted' isntead of 'System halted' to
avoid confusion.

Submitted by:	George Scott <George.Scott@its.monash.edu.au>
2000-06-29 08:24:50 +00:00
Andrey A. Chernov
5911ecd993 Add randomdev_load="NO" 2000-06-29 06:10:14 +00:00
John Baldwin
52f5035190 Rework the detecting of the rdmsr and wrmsr instructions in the v86
monitor so that the codepath is cleaner and easier to maintain in the
future.
2000-06-29 01:25:31 +00:00
John Baldwin
bce816b9cc - Don't blindly assume that there are 8 hard drives installed. Instead,
use the BIOS Equipment List to determine how many hard drives are
  installed and if the drive number we received in %dl is valid.
- Don't bother to disable interrupts when setting up the stack.  The 8086
  and beyond implicitly disable interrupts after an instruction that sets
  %ss (for example, a pop or a mov) so that you can safely set %ss and %sp
  in two consecutive instructions.  An exception to this is the lss
  instruction, which can set both registers simultaneously and thus doesn't
  need this hack.
- Add support for EDD BIOS extensions to support booting off of hard drives
  of nearly arbitrary length.
2000-06-27 20:04:10 +00:00
John Baldwin
2960c255b4 Comment this. 2000-06-26 23:58:04 +00:00
John Baldwin
cbf3fb883e Add in support for EDD to support large disks via LBA. This uses a
method similar to that of the loader to avoid potentially breaking older
drives in that we only use EDD if the desired cylinder is > 1023.
2000-06-26 22:57:16 +00:00
Matthew Hunt
5d98029c7e Typo fix: tunnable.
Backslash-parsing is not the role of printf(3), but is provided
	by the C language.
2000-06-25 07:12:03 +00:00
Sheldon Hearn
0c74e83819 Whitespace-only changes: apply accepted line breaking style as a
pre-cursor to other markup changes.

Accepted in principle by the author.
2000-06-22 08:37:22 +00:00
John Baldwin
35bdac5bbd Comment this bad boy. Hopefully the next person that comes along won't
have to spend a few hours reading the code to figure all this out.
2000-06-19 22:50:46 +00:00
John Baldwin
335dd56674 - Add some more details to the 'lsdev' output for FAT file systems.
- Add in support for the EDD (Enhanced Disk Drive) BIOS extensions to
  use LBA mode for accessing drives past cylinder 1024.  This should allow
  us to load a kernel from anywhere on a newer drive up to 2 TB.  Part
  of this came from the PR below.

PR:		i386/13847
Submitted by:	Tor Egge <Tor.Egge@fast.no>
2000-06-19 17:44:40 +00:00
Matt Jacob
74c7cee09a Add wx and ispfw loadable module defaults. 2000-06-17 23:09:51 +00:00
John Baldwin
1ddb0ab555 Add support for emulating the RDMSR and WRMSR instructions into BTX. In
theory, this should allow the K7V Athlon motherboard to boot ok with boot
virus protection enabled.  However, I have no hardware to test this.  It
shouldn't break anything though. :)

Prodded by:	Kelly Yancey <kbyanc@posi.net>
2000-06-17 06:45:40 +00:00
Daniel C. Sobral
f102f87438 Fix vocabulary juggling so that builtins voc is always searched before
forth vocabulary when initially creating the builtins. FICL 2.05 has a
better way to do this, but this works for now.

Fixes "?".
2000-06-16 05:04:05 +00:00
Daniel C. Sobral
ef34e89ba2 Revert to 1.8 2000-06-14 19:39:31 +00:00
Daniel C. Sobral
18ee60a576 Remove the setting of sourceid from bf_vm(), as bf_vm() really has
no clue.

Set sourceid to 0 when booting, which is the correct setting for stdin.

Set sourceid to an arbitrary fd when include'ing, preserving and restoring
the previous sourceid. This is possibly broken(), as 0 is a valid fd. Maybe
we should +1 to this value.

This fixes the version problem widely reported.
2000-06-14 19:37:00 +00:00
Paul Saab
cc3d937224 Delay calling the device cleanup routines until the absolute last
moment.  We were cleaning up after PXE too early and the module
dependancy code would not be able to load any files if it needed
too.
2000-06-14 10:34:29 +00:00
Paul Saab
f98558ff74 Make typing 'q' or 'Q' work for the show command as the pager prompt
says it should.
2000-06-14 09:05:03 +00:00
Peter Wemm
49e7f72d87 With apologies to dcs, temporarily comment out the version check code. It
is failing for everybody that I have spoken with that has tried it.

FreeBSD/i386 bootstrap loader, Revision 0.8
(root@outback.netplex.com.au, Tue Jun 13 23:26:49 PDT 2000)
Loader version 0.3+ required
Aborted!
start not found

Note that the 0.3+ message is from inside the arch-alpha block, not the
i386 block of code.  And even then, 0.8 is higher than 0.3.

This prevents the rest of the loader.conf stuff working. :-/
2000-06-14 07:18:18 +00:00
Peter Wemm
f71c01cc52 Borrow phk's axe and apply the next stage of config(8)'s evolution.
Use Warner Losh's "hint" driver to decode ascii strings to fill the
resource table at boot time.

config(8) no longer generates an ioconf.c table - ie: the configuration
no longer has to be compiled into the kernel.  You can reconfigure your
isa devices with the likes of this at loader(8) time:
  set hint.ed.0.port=0x320

userconfig will be rewritten to use this style interface one day and will
move to /boot/userconfig.4th or something like that.

It is still possible to statically compile in a set of hints into a kernel
if you do not wish to use loader(8).  See the "hints" directive in GENERIC
as an example.

All device wiring has been moved out of config(8).  There is a set of
helper scripts (see i386/conf/gethints.pl, and the same for alpha and pc98)
that extract the 'at isa? port foo irq bar' from the old files and produces
a hints file.  If you install this file as /boot/device.hints (and update
/boot/defaults/loader.conf - You can do a build/install in sys/boot) then
loader will load it automatically for you.  You can also compile in the
hints directly with:  hints "device.hints"  as well.

There are a few things that I'm not too happy with yet.  Under this scheme,
things like LINT would no longer be useful as "documentation" of settings.
I have renamed this file to 'NOTES' and stored the example hints strings
in it.  However... this is not something that config(8) understands, so
there is a script that extracts the build-specific data from the
documentation file (NOTES) to produce a LINT that can be config'ed and
built.  A stack of man4 pages will need updating. :-/

Also, since there is no longer a difference between 'device' and
'pseudo-device' I collapsed the two together, and the resulting 'device'
takes a 'number of units' for devices that still have it statically
allocated.  eg:  'device fe 4' will compile the fe driver with NFE set
to 4.  You can then set hints for 4 units (0 - 3).  Also note that
'device fe0' will be interpreted as "zero units of 'fe'" which would be
bad, so there is a config warning for this.  This is only needed for
old drivers that still have static limits on numbers of units.
All the statically limited drivers that I could find were marked.

Please exercise EXTREME CAUTION when transitioning!

Moral support by: phk, msmith, dfr, asmodai, imp, and others
2000-06-13 22:28:50 +00:00
Ruslan Ermilov
5737d0e1d4 Treat \t and \n inside /boot.config as whitespaces.
PR:		19215
2000-06-13 13:07:53 +00:00
Daniel C. Sobral
70e1899762 Fix REFILL. It must throw RESTART instead of OUTOFTEXT so that
execution can take place at the point where it stopped after the
input buffer has been refilled.

Add ANS Forth CORE EXT and FILE word SOURCE-ID.
2000-06-12 16:46:28 +00:00
Daniel C. Sobral
d742bdfc76 The word environment? returns a flag indicating whether the variable
was found or not. Fix it's usage. Alas, it caused no problem before,
besides leaving garbage in the stack, because refill, used by [if]
[else] [then], was broken.
2000-06-12 16:45:01 +00:00
Daniel C. Sobral
23bab6002c Make abort" functional in interpret mode. This behavior is undefined
by ANS Forth standard, but it's useful.

Also, define the constant true in a more strict way. C might garantee
2-complement math, but Forth doesn't.
2000-06-12 16:42:02 +00:00
Daniel C. Sobral
d2083bf417 Make comment reflect reality. 2000-06-12 16:40:00 +00:00
Daniel C. Sobral
e0d83caeed Put some version checking. 2000-06-07 22:19:49 +00:00
Daniel C. Sobral
a6a1d6e852 Bump loader version due to FICL (duh!) and copyin, copyout, setenv&cia. 2000-06-07 22:14:09 +00:00
Daniel C. Sobral
5ae8a644f6 Bump loader version due to copyin, copyout, setenv&cia. 2000-06-07 22:12:21 +00:00
Daniel C. Sobral
c1312289dd Modify boot-conf so it can take a kernel or directory name as
a parameter and dtrt.

Also, make boot-conf always unload first. There wasn't really any
point in not doing this, as the kernel _has_ to be loaded before
any other modules.

Tested by: dwhite
2000-06-07 22:10:05 +00:00
Daniel C. Sobral
f0b972df2f Add setenv, getenv, setenv?, unsetenv, copyin and copyout to FICL. 2000-06-07 22:07:01 +00:00
Daniel C. Sobral
14a7c31a0c Remove AGAIN definition, as FICL 2.04 provides it.
Add strlen, to help handling data generated by C code.

Add 2>r 2r>, because OO programming without them sucks.
2000-06-07 22:03:37 +00:00
Daniel C. Sobral
7015e7c9a1 Remove a bug that caused local variables declarations in the format
{ | internal -- } to be rejected.
2000-06-07 22:00:10 +00:00
Daniel C. Sobral
7632c12363 Place original builtins in a vocabulary called "builtins". This
is intended mainly for debuging purposes, but it can be used by
other words if done carefully.
2000-06-07 21:57:23 +00:00
Daniel C. Sobral
7302acac1c Remove residual printf.
Prodded by: msmith
2000-06-07 03:33:12 +00:00
Doug Rabson
e347aadd85 Record the new PALcode revision in the pcs structure after changing to
run OSF/1 PALcode.

Obtained from: NetBSD
2000-06-03 08:24:37 +00:00
Daniel C. Sobral
11b96475f7 Apply a number of fixes for the Alpha platform. 2000-06-02 20:07:56 +00:00
Daniel C. Sobral
b8e8da45a9 Add something that was missing from the original 2.04 distribution. 2000-06-02 13:49:09 +00:00
Daniel C. Sobral
b270590aeb Add "int" sized manipulation words. 2000-06-01 18:10:44 +00:00
Yoshihiro Takahashi
c787eb8a72 Sync with the following changes.
sys/boot/i386/btx/btx/Makefile          1.8
sys/boot/i386/btx/btx/btx.s             1.16 and 1.17
sys/boot/i386/btx/btxldr/btxldr.s       1.10
sys/boot/i386/loader/Makefile           1.45
2000-05-29 11:58:01 +00:00
Daniel C. Sobral
b6b204a98b Strip spaces and comments more agressively. 2000-05-26 22:58:10 +00:00
Daniel C. Sobral
7795d19132 Bring in FICL 2.04. No bump of loader version is required by this
commit.
2000-05-26 21:35:08 +00:00
Jake Burkholder
e39756439c Back out the previous change to the queue(3) interface.
It was not discussed and should probably not happen.

Requested by:		msmith and others
2000-05-26 02:09:24 +00:00
John Baldwin
e1efa49a84 Convert the short stub of real-mode code into 16-bit assembly. 2000-05-24 02:20:34 +00:00
Jake Burkholder
740a1973a6 Change the way that the queue(3) structures are declared; don't assume that
the type argument to *_HEAD and *_ENTRY is a struct.

Suggested by:	phk
Reviewed by:	phk
Approved by:	mdodd
2000-05-23 20:41:01 +00:00
John Baldwin
a1a611ed6b Grrr, fix a silly 'movl' -> 'movw' typo in both pxeldr and cdldr. Also,
remove unnecessary cruft from the Makefiles for both.
2000-05-23 12:31:32 +00:00
John Baldwin
af54a4fe47 Clean up some more 16-bit code and get rid of more m4 macros. 2000-05-23 12:28:31 +00:00
John Baldwin
638bac9fc0 Clean up all of the 16-bit assembly code in the x86 bootstrap to work
with the new binutils.  Now that we have a decent assembler, all the old
m4 macros are no longer needed.  Instead, straight assembly can be used
since as(1) now understands 16-bit addressing, branches, etc.  Also,
several bugs have been fixed in as(1), allowing boot0.s to be further
cleaned up.
2000-05-23 12:18:49 +00:00
Daniel C. Sobral
716f301734 Document abial's .#. 2000-05-23 11:47:23 +00:00
Tim Vanderhoek
b0d9eb06f9 Make this compile in case anyone ever wants to use the PC98 booter
on an IBM machine.  This fix matches i386/boot2/boot.c.

PR:	kern/7903
2000-05-21 05:27:56 +00:00
Daniel C. Sobral
aad477d890 One of loaders' bugs disappeared somewhere along the way. 2000-05-19 11:15:12 +00:00
Daniel C. Sobral
9ece4dbfe9 Move man page directives to common/Makefile.inc. 2000-05-19 08:52:16 +00:00
Daniel C. Sobral
536f89a623 This file got repo-copied to common/. 2000-05-19 08:44:48 +00:00
Daniel C. Sobral
a2aa3427cf Move man page directives to common/Makefile.inc. 2000-05-19 08:41:45 +00:00
Daniel C. Sobral
27391e65fd Remove INSTALL_FORTH stuff. 2000-05-19 08:40:37 +00:00
Daniel C. Sobral
6593d234e6 Move man page directives to common/Makefile.inc.
Remove INSTALL_FORTH stuff.
2000-05-19 08:40:11 +00:00
Daniel C. Sobral
d9f7c44adf Make corrections to allow for Alpha. 2000-05-18 12:44:50 +00:00
Doug Rabson
8bbd2c1e46 Only probe network settings on the first open of the network device.
The alpha firmware takes a seriously long time to open the network device
the first time.
2000-05-13 15:40:46 +00:00
David E. O'Brien
7f562b6673 The loader was written so that if /kernel was missing /kernel.old would
be booted.  Due to a bug, this wasn't happening.

There is still a lesser bug in that the loader decides which file to boot
after the 10sec count down.  This means the bootfile listed in the count
down in is wrong in the case where the loader will boot /kernel.old.
2000-05-13 02:45:11 +00:00
Peter Wemm
24d29b9649 Install the bootforth config files for the Alpha too. loader.conf should
be functional now.
2000-05-12 23:22:09 +00:00
Peter Wemm
dafe1ac0a0 Reactivate the FICL hooks to make it be compiled in, but also initialize
FICL.  bootforth is now live on the Alpha!

**BEWARE** - you *MUST* build and install a current libstand or you will
most likely get zfree() panics at loader startup.

We should now be able to set up the loader.conf stuff on the Alpha too.
2000-05-12 22:45:16 +00:00
Peter Wemm
4887dfcfd4 Stop libficl from using floating point registers - this was cauing
dictDelete() to fault early on the Alpha and was the original cause of
the Alpha ficl failures.
2000-05-12 21:51:20 +00:00
Peter Wemm
fa139a1ac3 Fix the Alpha loader the rest of the way. If FICL is present in
/boot/loader (even though it is 100% dormant in the Alpha version),
then the loader panics with a zfree error:Loading /boot/loader.test
  *** keyboard not plugged in...
  Console: SRM firmware console
  panic: zfree(0x2003cb58,4096): wild pointer
versus the exact same code but without FICL linked in:
  Loading /boot/loader
  Console: SRM firmware console
  VMS PAL rev: 0x1000600010114
  OSF PAL rev: 0x1000600020116
  Switch to OSF PAL code succeeded.

  FreeBSD/alpha SRM disk boot, Revision 0.1

This is almost certainly an alpha infrastructure bug, not a FICL
problem.  It's probably the same thing that made FICL fail for no
apparent reason on the Alpha.
2000-05-12 07:47:47 +00:00
Boris Popov
cf448cb2c9 long != int on Alphas. 2000-05-12 05:16:37 +00:00
Doug White
325bde0fb7 Remove metion of the 'magic options.' Apparently PXE doesn't require the
special options on 0.99c (it mumbles something about 'PXE server not found'
but works anyway), and it won't work at all with PXE 2.0.
2000-05-09 18:28:07 +00:00
Mike Smith
1fd777e1d5 Teach the alpha loader install process to make backup copies of the
boot programs when installing new versions.
2000-05-06 18:31:26 +00:00
John Baldwin
773065b3b8 Switch to using the .code16 as(1) directive and using 16-bit assembly
code instead of using 32-bit code and having to just "know" that it's
really 16-bit instructions when things run.  This also allows the code
to use fewer macros and more actual assembly statements, which eases
maintenance.  Unfortunately, due to as(1) brokenness, we still use m4
macros for all 16-bit addresses, and all short jumps (i.e., 8-bit
relative addresses in the jump instruction) must be wrapped in .code32
directives to avoid useless bloat by as(1).  This also fixes a few
problems that were preventing boot0 from compiling with the latest
and greatest version of as(1).
2000-05-05 13:22:10 +00:00
Paul Saab
90c25bd74a Remove the static heap. It is unknown why it was needed in the
beginning, but it no longer is required.  This has been tested with
many different revisions of the PXE rom from Intel.
2000-05-05 07:24:03 +00:00
Daniel C. Sobral
ff7e939c43 Lay the groundwork for on-demand dictionary expansion. 2000-05-05 02:06:38 +00:00
Daniel C. Sobral
20689aa3d4 Correct a bug whereby allocations to the dictionary would not be allowed
unless four times the space requested was available.
2000-05-04 23:23:13 +00:00
Daniel C. Sobral
4eb5b7979d Make documentation on recently added heap? command reflect reality. 2000-05-04 22:51:21 +00:00
Daniel C. Sobral
a1d54dfc62 Add "heap?" to loader's man page. 2000-05-04 21:26:26 +00:00
Daniel C. Sobral
19c80876dc Further improve ordering. 2000-05-04 21:22:55 +00:00
Daniel C. Sobral
c45393b59c Sort entries in FreeBSD-specific FICL commands. 2000-05-04 21:18:26 +00:00
Daniel C. Sobral
1ca3a0ce6a Add heap?, so we can tell how much free space we have left. 2000-05-04 20:41:30 +00:00
Yoshihiro Takahashi
86a5a8c251 - Removed hi-resolution mode supports.
- Added a dummy partition table.
2000-05-03 04:35:25 +00:00
Nick Hibma
65b674a33b Add the udbp module 2000-05-02 11:51:07 +00:00
Doug White
55ebf88553 Add man page for pxeboot.
Reviewed By:	asmodai
2000-05-02 05:01:38 +00:00
Peter Wemm
365c5db0a7 Add $FreeBSD$ 2000-05-01 20:32:07 +00:00
Peter Wemm
62470170de GC unused variable (size) 2000-05-01 18:03:15 +00:00
Peter Wemm
cd2d859cee Fix some warnings on the Alpha. sizeof() returns different things on
x86 and Alpha. Sigh.
2000-05-01 18:02:38 +00:00
Paul Saab
482cb52dcb Wrap the failure warnings around PXE_DEBUG in the cleanup routine.
It does not matter if they fail, so dont print anything about it
unless we are debugging.
2000-05-01 17:55:05 +00:00
Boris Popov
801e789e01 Update loader logic to distinguish modules vs. files.
Add support for module metadata. The old way of dependancy
handling will be supported for a while.

Reviewed by:	peter
2000-05-01 17:41:25 +00:00
Yoshihiro Takahashi
292feef381 Sync with sys/boot/i386/libi386/biosdisk.c revision 1.30. 2000-04-30 08:24:36 +00:00
Paul Saab
95394e643f Fall back to /pxeroot as the location of the NFS exported directory
if we are not given one by dhcp.
Remove extra includes while I am here.

Reminded by:	jlemon
2000-04-29 23:08:49 +00:00
Jonathan Lemon
8e30378f89 Teach the loader about the ext2fs filesystem, extended partitions, and
the new readdir function.
2000-04-29 20:49:33 +00:00
Paul Saab
f14ad6978f Make PXE do a dhcp request to find out where its files are. The
DHCP server is no longer required to also act as the NFS/TFTP
server.
2000-04-27 12:30:28 +00:00
Paul Saab
e7fd6f003e Don't report errors when we UDP_WRITE fails with a status of 1. 2000-04-27 03:23:50 +00:00
John Baldwin
eeb5db2946 Now that we are compiling PXE into libi386, we don't need ../libi386 in
.PATH anymore.
2000-04-26 19:54:49 +00:00
Paul Saab
d08ae64b1d Bring support in for Intel Wired for Management 1.1 (PXE 0.99 and
below).  This did not work previously because interrupts were
disabled when PXE calls were being made, and they must be enabled.
This should also allow us to be compliant with all newer PXE rom's
from Intel.

For PXE 0.99, this has been tested using the Intel N440BX motherboard
and I am confident it will work on the Intel L440GX motherboard.

Lots of help/information from: jhb, peter

I would like to thank Michael Johnston <michael.johnston@intel.com>,
Mike Henry <mike.henry@intel.com>, and all the other PXE developers
at Intel for their help, and information in helping solve this
problem.
2000-04-26 07:38:40 +00:00
John Baldwin
36273c5d79 Don't disable interrupts when calling a vm86 mode interrupt or routine
from user mode.  Don't disable interrupts when returning from vm86 mode
to user mode either.  Now, we only disable interrupts before calling a
hardware interrupt handler, which is the only time we _should_ be
disabling interrupts.

Because of this, err, feature, any routine that one called in vm86 mode
had to re-enable interrupts by setting the interrupt flag or interrupts
would remain disabled even after the routine returned.  For example, I
have a simple debugging routine that uses a vm86 mode function to dump
any arbitrary memory word that I use to read the BIOS timer or any other
memory location.  This function does 1 load instruction from memory and
then returns.  Since it didn't re-enable interrupts, the first time I
called it to read the BIOS timer, it disabled interrupts.   This also
affected the PXE bootstrap as it needs interrupts enabled while it is
processing.  This patch fixes both of those situations so that those
functions do not worry about having to enable interrupts.  Hardware
interrupt handlers worked fine with the old code because they always
enable interrupts as part of their routine.

If you have any problems with the loader after this commit, please
let me know.  I'd like to MFC it in a week or two since PXE support
needs it.

Noticed by:	ps, Michael Johnston <michael.johnston@intel.com>
2000-04-26 04:35:25 +00:00
Yoshihiro Takahashi
41088a06e7 Sync with the following changes.
sys/boot/i386/libi386/Makefile	1.16 and 1.17
sys/boot/i386/loader/Makefile	1.44
sys/boot/i386/loader/main.c	1.20
2000-04-23 09:33:31 +00:00
Paul Saab
43e797fd31 Move the building of the PXE module into libi386. 2000-04-21 22:06:02 +00:00
Paul Saab
2339dc037f Make the loader a little smarter about when it is and is not allowed
to call PXE.
2000-04-21 04:58:51 +00:00
Paul Saab
5d5b2077f1 Don't call the PXE cleanup routine if PXE is not enabled. This
should fix the "Invalid partition table" error people were seeing.
2000-04-21 03:04:16 +00:00
Paul Saab
6450dd3cb4 Add a cleanup function. This is needed for PXE where you should
shutdown the UNDI and unload the stack.
2000-04-20 00:06:15 +00:00
Paul Saab
e938899cc3 Use !PXE api over PXENV+ api.
Magic trampoline by: peter (at 4am and after a good whipping at airhockey)
Do a better job of returning and detecting errors.
2000-04-19 11:22:38 +00:00
Mike Smith
300451c472 Some more i386-only BIOS-friendliness:
- Add support for using the PCI BIOS functions for configuration space
   accesses, and make this the default.

 - Make PNPBIOS the default (obsoletes the PNPBIOS config option).

 - Add two new boot-time tunables to disable each of the above.
2000-04-16 20:48:33 +00:00
Yoshihiro Takahashi
b638de134f The printf function of boot2 can't recognize "%lx" format.
Submitted by:	Nobuyuki Koganemaru <kogane@koganemaru.co.jp>
2000-04-14 14:25:13 +00:00
Yoshihiro Takahashi
1e6081a12f Merged from sys/boot/i386/loader/Makefile revision 1.43. 2000-04-14 13:51:14 +00:00
KATO Takenori
117a0be4e9 Merged from sys/boot/i386/loader/main.c rev 1.19. 2000-04-12 11:17:08 +00:00
John Baldwin
2cb6d95d48 Add a missing dependency: boot2 depends on the BTX kernel. 2000-04-11 14:49:13 +00:00
Jordan K. Hubbard
4fbd258bcc Nuke duplicate struct declaration from somebody's paste-o 2000-04-08 22:50:18 +00:00
Paul Saab
d8af287caf Make PXE use the UDP API. This allows for both TFTP and NFS support.
You may specify TFTP or NFS via compile time options in the loader,
but not both at this time.

Also, remove a warning about not knowing how to boot from network
devices.  We can obviously do that now.
2000-04-08 01:22:14 +00:00
Paul Saab
dbe3e0f575 Add a missing PXE API call and structure. 2000-04-04 07:28:54 +00:00
Paul Saab
2efc827d19 Add all the PXE related structures from the 2.1 PXE spec from Intel.
Fix exsisting code to match the spec.
2000-04-04 00:38:59 +00:00
KATO Takenori
c1cdadfffe Synced with following files:
src/sys/boot/i386/Makefile.inc	1.1
  src/sys/boot/i386/btx/btx/btx.s	1.15
  src/sys/boot/i386/btx/btxldr/Makefile	1.8
  src/sys/boot/i386/btx/btxldr/btxldr.s	1.9
  src/sys/boot/i386/libi386/biosdisk.c	1.29
  src/sys/boot/i386/loader/Makefile	1.42
  src/sys/boot/i386/loader/main.c	1.18
(entry point address of loader was not changed.)

Reviewed by:	nyan
2000-03-31 16:03:02 +00:00
KATO Takenori
fdf884ea55 Separated serial boot block interface routine into NS16550 stuff and
i8251 stuff.
2000-03-30 09:25:03 +00:00
John Baldwin
48a0c4ea04 Mega i386 loader commit.
- Don't hard code 0x10000 as the entry point for the loader.  Instead add
  src/sys/boot/i386/Makefile.inc which defines a make variable with the
  entry point for the loader.  Move the loader's entry point up to
  0x20000, which makes PXE happy.
- Don't try to use cpp to parse btxldr for the optional BTXLDR_VERBOSE,
  instead use m4 to achieve this.  Also, add a BTXLDR_VERBOSE knob in the
  btxldr Makefile to turn this option on.
- Redo parts of cdldr's Makefile so that it now builds and installs cdboot
  instead of having i386/loader/Makefile do that.  Also, add in some more
  variables to make the pxeldr Makefile almost identical and thus to ease
  maintainability.
- Teach cdldr about the a.out format.  Cdldr now parsers the a.out header
  of the loader binary and relocates it based on that.  The entry point of
  the loader no longer has to be hardcoded into cdldr.  Also, the boot
  info table from mkisofs is no longer required to get a useful cdboot.
- Update the lsdev function for BIOS disks to parse other file systems
  (such as DOS FAT) that we currently support.  This is still buggy as
  it assumes that a floppy with a DOS boot sector actually has a MBR and
  parses it as such.  I'll be fixing this in the future.
- The biggie:  Add in support for booting off of PXE-enabled network
  adapters.  Currently, we use the TFTP API provided by the PXE BIOS.
  Eventually we will switch to using the low-level NIC driver thus
  allowing both TFTP and NFS to be used, but for now it's just TFTP.

Submitted by:	ps, alfred
Testing by:	Benno Rice <benno@netizen.com.au>
2000-03-28 01:19:53 +00:00
Yoshihiro Takahashi
b0198bb46f Sync with sys/boot/i386/libi386/biosdisk.c revision 1.27 and 1.28.
Submitted by:	Kaho Toshikazu <kaho@elam.kais.kyoto-u.ac.jp>
2000-03-17 12:38:36 +00:00
John Baldwin
7be31bb1b2 Remove some extra spammage that made it into this commit. This will be
revisited later with a better fix, or at least one that compiles. :)

Approved by:	dcs
2000-03-15 16:36:55 +00:00
Daniel C. Sobral
7b12e51659 Pass an unit number to bcache_strategy, so it can flush the cache when
necessary. Pass an absolute block number too, instead of receiving a
relative one in realstrategy(), as bcache_strategy() requires this.

The fix is sligthly different from the one in the PR.

PR:		17098
Submitted by:	John Hood <jhood@sitaranetworks.com>
2000-03-15 01:58:45 +00:00
Daniel C. Sobral
a5686d2f66 bcache_strategy() now receives an unit number, and keep track of what
was the last unit number received. If it changes, it flushes the cache.
Add bcache_flash().

The actual fix is sligthly different from the one in the PR.

PR:		17098
Submitted by:	John Hood <jhood@sitaranetworks.com>
2000-03-15 01:56:12 +00:00
Daniel C. Sobral
fbc9fa5059 Pass unit number to bcache_strategy(), so that the cache can be
flushed if the unit changes. Compute the absolute offset before
bcache_strategy() instead of after.

The actual fix is sligthly different for the one in the PR.

PR:		17098
Submitted by:	John Hood <jhood@sitaranetworks.com>
2000-03-15 01:53:34 +00:00
Boris Popov
ce0d1c79c3 Fix the loader to handle module dependencies properly. More fixes
will be provided after modmetadata appears in the kernel.

Reviewed by:	msmith
Approved by:	jkh
2000-02-25 05:10:44 +00:00
Mike Smith
51b5739aaf Close a file descriptor leak in the code which loads file objects.
Submitted by:	Paul Saab <paul@mu.org>
Approved by:	jkh
2000-02-17 02:19:19 +00:00
John Baldwin
536fcb08bf This patch to BTX fixes several small things:
1) Fix a bug in the int15 function 87 emulation where we only copied half
   of what the BIOS asked for.  This caused the Mylex RAID adapter to go
   haywire and start trashing memory when you tried to boot from it.
2) Don't use interrupt 19 to reboot.  Instead, set the reboot flag to a warm
   boot and jump to the BIOS's reboot handler.  int 19 doesn't clear memory
   or restore the interrupt vector table, and thus really isn't safe.  For
   example, when booting off of PXE, the PXE BIOS eats up a chunk of memory
   for its internal data and structures.  Since we rebooted via int 19,
   using the 'reboot' command in the loader resulted in that memory not
   being reclaimed by the BIOS.  Thus, after a few PXE boots, the system
   was out of lower memory.
3) Catch any int 19 calls made by a BTX client or a user pressing
   Ctrl-Alt-Delete and shutdown BTX and reboot the machine cleanly.  This
   fixes Ctrl-Alt-Delete in the loader and in boot2 instead of presenting
   the user with a BTX fault.

Approved by:	jkh
Found by:	1) by msmith
2000-02-16 07:00:16 +00:00
Ruslan Ermilov
a6120246a2 Support the new ata(4) syntax, while providing backward compatibility for wd(4).
Reviewed by:	jkh, msmith, sos
Approved by:	jkh
2000-02-09 19:23:46 +00:00
KATO Takenori
080be1dd6a Synced with sys/boot/i386/loader/Makefile rev 1.41. 2000-02-05 02:21:31 +00:00
Luigi Rizzo
2dea85d508 Add a NOFORTH variable so we can build a smaller loader without
Forth support, for use with PicoBSD

Approved-By: jordan
2000-02-04 20:57:09 +00:00
John Baldwin
4e60d653ce Fix bogon in previous commit. Re-enable Forth in the loader.
Noticed by:	dcs
Approved by:	jkh
2000-01-30 06:56:27 +00:00
KATO Takenori
0219f40756 Synced with sys/boot/i386/btx/btx/btx.s rev 1.14. 2000-01-29 13:48:36 +00:00
John Baldwin
064b3244ec Allow for cdldr to be built in ${.OBJDIR}/../cdldr/cdldr instead of
only looking for it in ${.CURDIR}/../cdldr/cdldr.  This fixes world.
2000-01-28 15:19:22 +00:00
Daniel C. Sobral
bc9ca81f3d Implement a machine-independent (word size-independent) FICL_TRUE. 2000-01-28 03:59:12 +00:00
Daniel C. Sobral
c2881538fa ANS Forth for logical not is 0=, not invert. Replace wrong usage. 2000-01-28 03:41:39 +00:00
Daniel C. Sobral
d9d102dd14 Add testmain.o to CLEANFILES. 2000-01-28 03:07:25 +00:00
Daniel C. Sobral
5c23af7cdb Try my hand again at removing ugly testmain target. 2000-01-28 02:40:23 +00:00
John Baldwin
c8bb85f758 Add the new cdldr CD bootstrap loader. This patch includes the following:
- Fix btxldr to preserve a NULL bootinfo pointer when it copies the kernel
  arguments.
- Add the cdldr bootstrap program.  This program is tacked onto the
  beginning of the standard 3rd stage boot loader (/boot/loader) to form
  the CD boot loader (/boot/cdboot).  When a CD is booted, the cdboot file
  is copied into memory instead and executed.  The cdldr stub emulates the
  environment normally provided by boot2 and then starts the loader.  This
  booting method does not emulate a floppy drive, but boots directly off of
  the CD.  This should fix the problems some BIOS's have with emulating a
  2.88 MB floppy image.
- Add support to the loader to recognize that it has been booted by cdldr
  instead of boot2 and use a simpler method of extracting the BIOS boot
  device.
2000-01-27 21:21:01 +00:00
John Baldwin
c299f41fd9 Fix brokenness introduced with the PAGING conditional variable. The value
of %cr0 wasn't reloaded into %eax before being modified to turn protected
mode off if PAGING was not defined.  The result was that the processor did
not exit protected mode, so when it tried to jump to segment 0x0 in the
next instruction to clear the prefetch cache like one should when leaving
protected mode, it actually tried to jump to a null selector, causing a
GPF.
2000-01-27 21:06:13 +00:00
Bill Paul
261b9b3066 Add driver support for the Aironet 4500/4800 series wireless 802.11
NICs. (Finally!) The PCMCIA, ISA and PCI varieties are all supported,
though only the ISA and PCI ones will work on the alpha for now.
PCCARD, ISA and PCI attachments are all provided. Also provided an
ancontrol(8) utility for configuring the NIC, man pages, and updated
pccard.conf.sample. ISA cards are supported in both ISA PnP and hard-wired
mode, although you must configure the kernel explicitly to support the
hardwired mode since you have to know the I/O address and port ahead
of time.

Special thanks to Doug Ambrisko for doing the initial newbus hackery
and getting it to work in infrastructure mode.
2000-01-14 20:41:03 +00:00
Bill Paul
0177987224 Add device driver support for USB ethernet adapters based on the CATC
USB-EL1202A chipset. Between this and the other two drivers, we should
have support for pretty much every USB ethernet adapter on the market.
The only other USB chip that I know of is the SMC USB97C196, and right
now I don't know of any adapters that use it (including the ones made
by SMC :/ ).

Note that the CATC chip supports a nifty feature: read and write combining.
This allows multiple ethernet packets to be transfered in a single USB
bulk in/out transaction. However I'm again having trouble with large
bulk in transfers like I did with the ADMtek chip, which leads me to
believe that our USB stack needs some work before we can really make
use of this feature. When/if things improve, I intend to revisit the
aue and cue drivers. For now, I've lost enough sanity points.
2000-01-14 03:14:49 +00:00
Bill Paul
dfd1e98eac Add device driver support for USB ethernet adapters based on the
Kawasaki LSI KL5KUSB101B chip, including the LinkSys USB10T, the
Entrega NET-USB-E45, the Peracom USB Ethernet Adapter, the 3Com
3c19250 and the ADS Technologies USB-10BT. This device is 10mbs
half-duplex only, so there's miibus or ifmedia support. This device
also requires firmware to be loaded into it, however KLSI allows
redistribution of the firmware images (I specifically asked about
this; they said it was ok).

Special thanks to Annelise Anderson for getting me in touch with
KLSI (eventually) and thanks to KLSI for providing the necessary
programming info.

Highlights:
- Add driver files to /sys/dev/usb
- update usbdevs and regenerate attendate files
- update usb_quirks.c
- Update HARDWARE.TXT and RELNOTES.TXT for i386 and alpha
- Update LINT, GENERIC and others for i386, alpha and pc98
- Add man page
- Add module
- Update sysinstall and userconfig.c
2000-01-05 04:27:24 +00:00
Yoshihiro Takahashi
7c1df76bc2 Merge from the following changes.
sys/boot/i386/libi386/biosmem.c	Rev 1.4
	sys/boot/i386/libi386/time.c	Rev 1.3
	sys/boot/i386/loader/main.c	Rev 1.16
2000-01-03 15:43:52 +00:00
Yoshihiro Takahashi
fdab06ad70 Fixed to get the BIOS geometry. 2000-01-03 15:28:05 +00:00
Mike Smith
627249c7b1 Substantially revamp the way that we determine the amount of memory available
for our use.  Use the same search order for BIOS memory size functions
as the kernel will later use.

Allow the loader to use all of the detected physical memory (this will
greatly help people trying to load enormous memory disk images).

More correctly handle running out of memory when loading an object.

Use the end of base memory for the top of the heap, rather than
blindly hoping that there is 384k left.

Add copyrights to a couple of files I forgot.
1999-12-29 09:54:46 +00:00
Peter Wemm
c447342094 Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL"
is an application space macro and the applications are supposed to be free
to use it as they please (but cannot).  This is consistant with the other
BSD's who made this change quite some time ago.  More commits to come.
1999-12-29 05:07:58 +00:00
Mike Smith
495865e47d Correctly handle a user-requested abort in the middle of displaying a
help subtopic.

PR:		kern/13196
Submitted by:	MIHIRA Sanpei Yoshiro <sanpei@sanpei.org>
1999-12-28 07:19:22 +00:00
Bill Paul
ed63a7aaef This commit adds device driver support for the ADMtek AN986 Pegasus
USB ethernet chip. Adapters that use this chip include the LinkSys
USB100TX. There are a few others, but I'm not certain of their
availability in the U.S. I used an ADMtek eval board for development.
Note that while the ADMtek chip is a 100Mbps device, you can't really
get 100Mbps speeds over USB. Regardless, this driver uses miibus to
allow speed and duplex mode selection as well as autonegotiation.
Building and kldloading the driver as a module is also supported.

Note that in order to make this driver work, I had to make what some
may consider an ugly hack to sys/dev/usb/usbdi.c. The usbd_transfer()
function will use tsleep() for synchronous transfers that don't complete
right away. This is a problem since there are times when we need to
do sync transfers from an interrupt context (i.e. when reading registers
from the MAC via the control endpoint), where tsleep() us a no-no.
My hack allows the driver to have the code poll for transfer completion
subject to the xfer->timeout timeout rather that calling tsleep().
This hack is controlled by a quirk entry and is only enabled for the
ADMtek device.

Now, I'm sure there are a few of you out there ready to jump on me
and suggest some other approach that doesn't involve a busy wait. The
only solution that might work is to handle the interrupts in a kernel
thread, where you may have something resembling a process context that
makes it okay to tsleep(). This is lovely, except we don't have any
mechanism like that now, and I'm not about to implement such a thing
myself since it's beyond the scope of driver development. (Translation:
I'll be damned if I know how to do it.) If FreeBSD ever aquires such
a mechanism, I'll be glad to revisit the driver to take advantage of
it. In the meantime, I settled for what I perceived to be the solution
that involved the least amount of code changes. In general, the hit
is pretty light.

Also note that my only USB test box has a UHCI controller: I haven't
I don't have a machine with an OHCI controller available.

Highlights:

- Updated usb_quirks.* to add UQ_NO_TSLEEP quirk for ADMtek part.
- Updated usbdevs and regenerated generated files
- Updated HARDWARE.TXT and RELNOTES.TXT files
- Updated sysinstall/device.c and userconfig.c
- Updated kernel configs -- device aue0 is commented out by default
- Updated /sys/conf/files
- Added new kld module directory
1999-12-28 02:01:18 +00:00
Peter Wemm
7f69314760 Connect up the bootforth glue and compile it, but don't initialize it
at runtime as it has a nasty habit of crashing on the Alpha :-(.
This is being done this way so we have a common starting point for
debugging.
1999-12-27 09:20:33 +00:00
Bill Paul
0c868fed5a Close PR #15422; fix loader.conf to reflect new driver support (old
tulip clone NICs merged into if_dc driver).

PR: conf/15422
1999-12-23 05:28:31 +00:00
Yoshihiro Takahashi
2ea9f12efa - Supported the bd_getbigeom function and use this function to get BIOS
geometry.
- Use i386/libi386/bootinfo.c instead of pc98/libpc98/bootinfo.c.

Submitted by:	IMAI Takeshi <take-i@ceres.dti.ne.jp>
1999-12-19 14:05:46 +00:00
Marcel Moolenaar
a031bda24e Don't build gensetdefs when we can use /usr/bin/gensetdefs. The latter
also creates setdef{0|1}.c so there's no need to have those in the
repository. Using /usr/bin/gensetdefs has no consequences for the
output.
1999-12-16 17:25:01 +00:00
Marcel Moolenaar
bc16e96f49 Add -L${DESTDIR}${LIBDIR} to ld's command line so that the right
libstand is used.
1999-12-15 18:16:56 +00:00