diff options
Diffstat (limited to 'sys/arch/i386/stand/libsa/biosdisk.S')
-rw-r--r-- | sys/arch/i386/stand/libsa/biosdisk.S | 109 |
1 files changed, 39 insertions, 70 deletions
diff --git a/sys/arch/i386/stand/libsa/biosdisk.S b/sys/arch/i386/stand/libsa/biosdisk.S index 06890298926..99282717071 100644 --- a/sys/arch/i386/stand/libsa/biosdisk.S +++ b/sys/arch/i386/stand/libsa/biosdisk.S @@ -1,56 +1,37 @@ -/* $OpenBSD: biosdisk.S,v 1.6 1997/04/18 06:54:43 weingart Exp $ */ +/* $OpenBSD: biosdisk.S,v 1.7 1997/04/18 17:48:23 mickey Exp $ */ /* - * Ported to boot 386BSD by Julian Elischer (julian@tfs.com) Sept 1992 + * Copyright (c) 1997 Michael Shalayeff + * 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 acknowledgement: + * This product includes software developed by Michael Shalayeff. + * 4. The name of the author 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 REGENTS OR CONTRIBUTORS 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. * - * Mach Operating System - * Copyright (c) 1992, 1991 Carnegie Mellon University - * All Rights Reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie Mellon - * the rights to redistribute these changes. */ -/* - Copyright 1988, 1989, 1990, 1991, 1992 - by Intel Corporation, Santa Clara, California. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and -its documentation for any purpose and without fee is hereby -granted, provided that the above copyright notice appears in all -copies and that both the copyright notice and this permission notice -appear in supporting documentation, and that the name of Intel -not be used in advertising or publicity pertaining to distribution -of the software without specific, written prior permission. - -INTEL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, -IN NO EVENT SHALL INTEL BE LIABLE FOR ANY SPECIAL, INDIRECT, OR -CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT, -NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION -WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - #include <machine/asm.h> #define _LOCORE #include "debug_md.h" @@ -58,17 +39,9 @@ WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #undef _LOCORE /* -# BIOS call "INT 0x13 Function 0x2" to read sectors from disk into memory -# Call with %ah = 0x2 -# %al = number of sectors -# %ch = cylinder -# %cl = sector -# %dh = head -# %dl = drive (0x80 for hard disk, 0x0 for floppy disk) -# %es:%bx = segment:offset of buffer -# Return: -# %al = 0x0 on success; err code on failure -*/ + * int biosread(dev,cyl,head,sect,nsect,buf) + * read number of sectors from disk + */ ENTRY(biosread) pushl %ebp movl %esp, %ebp @@ -88,7 +61,7 @@ ENTRY(biosread) movb $0x2, %ah # subfunction movb 24(%ebp), %al # number of sectors movl 28(%ebp), %ebx # offset - movl %ebx, %edi # spilt off for seg:off pair + movl %ebx, %edi # split off for seg:off pair andl $0xf, %ebx # atomic read for up to 64k shrl $4, %edi @@ -107,13 +80,12 @@ ENTRY(biosread) ret ENTRY(bioswrite) - movl $1, %eax ret /* # -# biosdinfo(): return a word that represents the +# u_int16_t biosdinfo(): return a word that represents the # max number of sectors and heads and drives for this device # */ @@ -124,14 +96,14 @@ ENTRY(biosdinfo) pushl %ebx pushl %ecx - movb 8(%ebp), %dl # diskinfo(drive #) + movb 8(%ebp), %dl # drive # movb $0x08, %ah # ask for disk info BIOSINT(0x13) - movb $1, %ah # max head - movb $18, %al # max sector + movb $1, %ah # max head + movb $18, %al # max sector jc 1f - /* form a longword representing all this gunk */ + /* form a word w/ nhead/nsect packed */ movb %dh, %ah # max head andb $0x3f, %cl # mask of cylinder gunk movb %cl, %al # max sector (and # sectors) @@ -149,16 +121,13 @@ ENTRY(biosdinfo) */ ENTRY(biosdreset) - pushl %ebp - movl %esp, %ebp pushl %ebx pushl %ecx - movb $0x00, %ah # ask for disk info + movb $0x00, %ah # reset disk system BIOSINT(0x13) popl %ecx popl %ebx - popl %ebp ret |