Home | History | Annotate | Download | only in lib
History log of /src/sys/arch/i386/stand/lib/pcio.c
RevisionDateAuthorComments
 1.30  08-Jun-2011  joerg Use prototypes from libi386.h.
 1.29  14-Feb-2011  jmcneill branches: 1.29.2;
port-i386/44563: boot loader prompt doesn't read keyboard input on a MacBook1,1

check for keystroke (int 16h, AH=01h) before getting keystroke (int 16h,
AH=00h), fixes bootloader keyboard input with Apple firmware, from Taylor R
Campbell
 1.28  25-Jun-2010  tsutsui branches: 1.28.2; 1.28.4;
Add wait_sec() which uses BIOS function call INT 1Ah/AH=00h (GET SYSTEMTIME)
and use it for large delays (in seconds) instead of delay() that uses
INT 15h/AH=86h (WAIT) in microsecond because the latter one can't provide
precise delays on emulators.
Fixes PR port-i386/43156 (NetBSD bootloader countdown runs at 1/20 speed
in qemu 0.12).

No particular comments on the PR and port-i386@.
 1.27  26-Aug-2009  jmcneill branches: 1.27.2; 1.27.4;
int 15h/AH=86h (WAIT) doesn't work properly on all hardware and emulators, so
for the countdown use the more coarsely grained sleep implementation based
on int 1ah/AH=00h (GET SYSTEM TIME).

ok ad@
 1.26  29-Jun-2009  mbalmer Have the boot countdown on i386 display "starting in N seconds." instead
of "starting in N" and eliminate a use of sprintf. Note that on
some rare machines it can be that the BIOS does not provide the delay
function. On such machines the countdown will almost immediately count down
to zero display "starting in 0 seconds."; apparently the net4801 is such a
machine.
Feedback, ideas, and inspiration from tron, ok tron/tonnerre
 1.25  14-Dec-2008  christos branches: 1.25.2;
more KNF and ANSI from Anon-ymous
 1.24  13-Dec-2008  christos add a boot.cfg option to clear the screen; default off. From Anon Ymous
 1.23  21-May-2008  ad branches: 1.23.6; 1.23.8; 1.23.14;
Fix build failure.
 1.22  21-May-2008  ad - Stop the twiddler going awry.
- Clear screen if on a glass tty (!).
 1.21  30-Jan-2006  junyoung branches: 1.21.72; 1.21.74; 1.21.76; 1.21.78;
ANSI & KNF.
 1.20  11-Nov-2005  dsl branches: 1.20.4;
Make a baud rate of zero cause the baud rate divisor be read and converted
to the current baud rate.
That way we use the same baud rate as the system BIOS (or whatever).
Rather useful for pxeboot.
 1.19  27-Jan-2005  mycroft branches: 1.19.6;
Make awaitkey() poll once even if the timeout is 0. This also fixes a problem
where a keypress within the last polling interval would not be noticed.
Add a new function, conisshift(), which is used to detect whether a shift key
is pressed. Use this via awaitkey() to allow interrupting the boot by holding
down shift (similar to LILO).

This allows setting the timeout to 0 and still being able to use the boot
program.
 1.18  15-Aug-2004  dsl branches: 1.18.4; 1.18.6;
Allow the com port base address to be specified by the user (via installboot)
rather than taking the value from the bios.
Should allow the system to use a serial console that is also a 'bios serial
console' and isn't in the bios serial port table.
Probably fixes (with a few other changes) PR port-i386/9236
 1.17  24-Mar-2004  drochner remove license clauses 3 and 4 from my cpoyright notices
 1.16  13-Mar-2004  dsl Translate ascii keycode to help those with azerty keyboard type straight.
 1.15  08-Oct-2003  lukem Overhaul MBR handling (part 1):

<sys/bootblock.h>:
* Added definitions for the Master Boot Record (MBR) used by
a variety of systems (primarily i386), including the format
of the BIOS Parameter Block (BPB).
This information was cribbed from a variety of sources
including <sys/disklabel_mbr.h> which this is a superset of.

As part of this, some data structure elements and #defines
were renamed to be more "namespace friendly" and consistent
with other bootblocks and MBR documentation.
Update all uses of the old names to the new names.

<sys/disklabel_mbr.h>:
* Deprecated in favor of <sys/bootblock.h> (the latter is more
"host tool" friendly).

amd64 & i386:
* Renamed /usr/mdec/bootxx_dosfs to /usr/mdec/bootxx_msdos, to
be consistent with the naming convention of the msdosfs tools.

* Removed /usr/mdec/bootxx_ufs, as it's equivalent to bootxx_ffsv1
and it's confusing to have two functionally equivalent bootblocks,
especially given that "ufs" has multiple meanings (it could be
a synonym for "ffs", or the group of ffs/lfs/ext2fs file systems).

* Rework pbr.S (the first sector of bootxx_*):
+ Ensure that BPB (bytes 11..89) and the partition table
(bytes 446..509) do not contain code.
+ Add support for booting from FAT partitions if BOOT_FROM_FAT
is defined. (Only set for bootxx_msdos).
+ Remove "dummy" partition 3; if people want to installboot(8)
these to the start of the disk they can use fdisk(8) to
create a real MBR partition table...
+ Compile with TERSE_ERROR so it fits because of the above.
Whilst this is less user friendly, I feel it's important
to have a valid partition table and BPB in the MBR/PBR.

* Renamed /usr/mdec/biosboot to /usr/mdec/boot, to be consistent
with other platforms.

* Enable SUPPORT_DOSFS in /usr/mdec/boot (stage2), so that
we can boot off FAT partitions.

* Crank version of /usr/mdec/boot to 3.1, and fix some of the other
entries in the version file.

installboot(8) (i386):
* Read the existing MBR of the filesystem and retain the BIOS
Parameter Block (BPB) in bytes 11..89 and the MBR partition
table in bytes 446..509. (Previously installboot(8) would
trash those two sections of the MBR.)

mbrlabel(8):
* Use sys/lib/libkern/xlat_mbr_fstype.c instead of homegrown code
to map the MBR partition type to the NetBSD disklabel type.


Test built "make release" for i386, and new bootblocks verified to work
(even off FAT!).
 1.14  16-Apr-2003  dsl branches: 1.14.2;
Modify baud rate handling to make it easier to take it from a variable.
Default to 9600 if the requested baud rate is illegal.
 1.13  08-Mar-2003  dsl Avoid pulling strncpy() into minimal boot code
 1.12  01-Feb-2003  dsl Change all .S files to use .code16 and .code32
Support 32bit addresses >64k as valid on bios calls.
Move stack for dosboot and biosboot to >64 so stack doesn't hit data.
Use disk sector number passed by mbr code to select default partition
(the mbr code doesn't do this yet).
NB only biosboot and dosboot have been tested so far.
(changes approved by christos and fvdl)
 1.11  19-Feb-2002  thorpej branches: 1.11.2;
Add some comments to make some #if/#else/#endif's more clear.
 1.10  10-Sep-1999  drochner branches: 1.10.16; 1.10.18;
improve awaitkey()'s printout for >9 seconds
 1.9  14-Apr-1999  drochner add prototypes, slight formatting changes
 1.8  12-Mar-1999  sommerfe branches: 1.8.4;
Fix compile warning in getcomaddr()
 1.7  13-Aug-1998  rvb Make serial line debugging easier to enable and use
 1.6  27-Oct-1997  drochner Catch "timeout" return of serial port read BIOS call.
 1.5  17-Sep-1997  drochner branches: 1.5.2;
-extend serial console code to all 4 BIOS known interfaces
-optionally, use Martin's direct hardware access to serial lines
-optionally, new console autoselection method: select serial console
if a character is seen within 1 second
-move awaitkey() here, it can be shared by different bootloaders and
it is used by console autoselection
-collect information about console selection in a "bootinfo" defined
structure, for passing to the kernel
 1.4  13-Jun-1997  drochner branches: 1.4.4;
Reformat comments. (messed up by "indent")
-Wall fixes
 1.3  22-Mar-1997  thorpej Purely cosmetic whitespace and indentation changes (mmm, indent(1))
 1.2  15-Mar-1997  perry From Matthias Drochner:
fix prototypes
use CONSDEV_* constants for consistency
 1.1  14-Mar-1997  perry branches: 1.1.1;
Initial revision
 1.1.1.1  14-Mar-1997  perry Initial import of new boot code, created by Matthias Drochner with a
little hacking by me. This isn't strictly identical to his 920312
release -- I've hacked it a bit -- but since we are taking over change
control it doesn't matter much.
 1.4.4.1  22-Sep-1997  thorpej Update marc-pcmcia branch from trunk.
 1.5.2.1  28-Oct-1997  mellon Pull rev 1.6 up from trunk (drochner)
 1.8.4.1  21-Jun-1999  thorpej Sync w/ -current.
 1.10.18.1  16-Mar-2002  jdolecek Catch up with -current.
 1.10.16.1  28-Feb-2002  nathanw Catch up to -current.
 1.11.2.2  19-Feb-2002  thorpej Add some comments to make some #if/#else/#endif's more clear.
 1.11.2.1  19-Feb-2002  thorpej file pcio.c was added on branch sommerfeld_i386mp_1 on 2002-02-19 20:18:37 +0000
 1.14.2.6  11-Dec-2005  christos Sync with head.
 1.14.2.5  04-Feb-2005  skrll Sync with HEAD.
 1.14.2.4  21-Sep-2004  skrll Fix the sync with head I botched.
 1.14.2.3  18-Sep-2004  skrll Sync with HEAD.
 1.14.2.2  25-Aug-2004  skrll Sync with HEAD.
 1.14.2.1  03-Aug-2004  skrll Sync with HEAD
 1.18.6.1  12-Feb-2005  yamt sync with head.
 1.18.4.1  29-Apr-2005  kent sync with -current
 1.19.6.1  21-Jun-2006  yamt sync with head.
 1.20.4.1  01-Feb-2006  yamt sync with head.
 1.21.78.1  23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.21.76.4  11-Aug-2010  yamt sync with head.
 1.21.76.3  16-Sep-2009  yamt sync with head
 1.21.76.2  18-Jul-2009  yamt sync with head.
 1.21.76.1  04-May-2009  yamt sync with head.
 1.21.74.1  04-Jun-2008  yamt sync with head
 1.21.72.2  17-Jan-2009  mjf Sync with HEAD.
 1.21.72.1  02-Jun-2008  mjf Sync with HEAD.
 1.23.14.1  21-Apr-2010  matt sync to netbsd-5
 1.23.8.2  28-Nov-2009  bouyer Pull up following revision(s) (requested by mbalmer in ticket #1143):
sys/arch/i386/stand/lib/pcio.c: revision 1.26
Have the boot countdown on i386 display "starting in N seconds." instead
of "starting in N" and eliminate a use of sprintf. Note that on
some rare machines it can be that the BIOS does not provide the delay
function. On such machines the countdown will almost immediately count down
to zero display "starting in 0 seconds."; apparently the net4801 is such a
machine.
Feedback, ideas, and inspiration from tron, ok tron/tonnerre
 1.23.8.1  26-Sep-2009  snj Pull up following revision(s) (requested by jmcneill in ticket #928):
sys/arch/i386/stand/lib/pcio.c: revision 1.27
int 15h/AH=86h (WAIT) doesn't work properly on all hardware and emulators, so
for the countdown use the more coarsely grained sleep implementation based
on int 1ah/AH=00h (GET SYSTEM TIME).
ok ad@
 1.23.6.1  19-Jan-2009  skrll Sync with HEAD.
 1.25.2.5  27-Aug-2011  jym Sync with HEAD. Most notably: uvm/pmap work done by rmind@, and MP Xen
work of cherry@.

No regression observed on suspend/restore.
 1.25.2.4  28-Mar-2011  jym Cure sync hiccups. Code with compile errors is not really useful, heh.
 1.25.2.3  28-Mar-2011  jym Sync with HEAD. TODO before merge:
- shortcut for suspend code in sysmon, when powerd(8) is not running.
Borrow ``xs_watch'' thread context?
- bug hunting in xbd + xennet resume. Rings are currently thrashed upon
resume, so current implementation force flush them on suspend. It's not
really needed.
 1.25.2.2  01-Nov-2009  jym Sync with HEAD.
 1.25.2.1  23-Jul-2009  jym Sync with HEAD.
 1.27.4.3  12-Jun-2011  rmind sync with head
 1.27.4.2  05-Mar-2011  rmind sync with head
 1.27.4.1  03-Jul-2010  rmind sync with head
 1.27.2.1  17-Aug-2010  uebayasi Sync with HEAD.
 1.28.4.1  17-Feb-2011  bouyer Sync with HEAD
 1.28.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.29.2.1  23-Jun-2011  cherry Catchup with rmind-uvmplock merge.

RSS XML Feed