diff options
author | msmith <msmith@FreeBSD.org> | 1998-08-21 03:17:42 +0000 |
---|---|---|
committer | msmith <msmith@FreeBSD.org> | 1998-08-21 03:17:42 +0000 |
commit | 8adeb775c43d4c2ae76cce40837a3953af6abc83 (patch) | |
tree | ec778e5f3903abe2dbb59959c0fd8398c99c145b /sys/boot/i386/libi386/biosmem.S | |
parent | 335c4be5b17816baac6b70d4d0b3132925de858d (diff) | |
download | FreeBSD-src-8adeb775c43d4c2ae76cce40837a3953af6abc83.zip FreeBSD-src-8adeb775c43d4c2ae76cce40837a3953af6abc83.tar.gz |
This is the new unified bootstrap, sometimes known previously as the
'three-stage' bootstrap.
There are a number of caveats with the code in its current state:
- The i386 bootstrap only supports booting from a floppy.
- The kernel and kld do not yet know how to deal with the extended
information and module summary passed in.
- PnP-based autodetection and demand loading of modules is not implemented.
- i386 ELF kernel loading is not ready yet.
- The i386 bootstrap is loaded via an ugly blockmap.
On the alpha, both net- and disk-booting (SRM console machines only) is
supported. No blockmaps are used by this code.
Obtained from: Parts from the NetBSD/i386 standalone bootstrap.
Diffstat (limited to 'sys/boot/i386/libi386/biosmem.S')
-rw-r--r-- | sys/boot/i386/libi386/biosmem.S | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/sys/boot/i386/libi386/biosmem.S b/sys/boot/i386/libi386/biosmem.S new file mode 100644 index 0000000..cb97672 --- /dev/null +++ b/sys/boot/i386/libi386/biosmem.S @@ -0,0 +1,99 @@ +/* $NetBSD: biosmem.S,v 1.5 1997/08/18 22:44:01 hannken Exp $ */ + +/* + * Copyright (c) 1996 + * Perry E. Metzger. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgements: + * This product includes software developed for the NetBSD Project + * by Perry E. Metzger. + * 4. The names of the authors may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + + +#include <machine/asm.h> + +#define data32 .byte 0x66 + + .text + +/* get mem below 1M, in kByte */ + +ENTRY(getbasemem) + pushl %ebp + movl %esp,%ebp + pushl %ebx + push %esi + push %edi + + call CNAME(prot_to_real) + + int $0x12 + # zero-extend 16-bit result to 32 bits. + data32 + movl $0, %ebx + mov %eax,%ebx # !!! at run time, it is mov %ax,%bx + + data32 + call CNAME(real_to_prot) + + movl %ebx, %eax + + pop %edi + pop %esi + popl %ebx + popl %ebp + ret + +/* get mem above 1M, in kByte */ + +ENTRY(getextmem) + pushl %ebp + movl %esp,%ebp + pushl %ebx + push %esi + push %edi + + call CNAME(prot_to_real) + + movb $0x88,%ah + int $0x15 + + # zero-extend 16-bit result to 32 bits. + data32 + movl $0, %ebx + mov %eax,%ebx # !!! at run time, it is mov %ax,%bx + + data32 + call CNAME(real_to_prot) + + movl %ebx, %eax + + pop %edi + pop %esi + popl %ebx + popl %ebp + ret + |