Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/sommerfeld_i386mp_1]: src/sys/arch/i386/stand/lib Change biosmca() to ex...



details:   https://anonhg.NetBSD.org/src/rev/6ee69ea1ae08
branches:  sommerfeld_i386mp_1
changeset: 482398:6ee69ea1ae08
user:      jdolecek <jdolecek%NetBSD.org@localhost>
date:      Mon May 14 22:14:48 2001 +0000

description:
Change biosmca() to export the model number via biosmca_ps2model
variable, if the machine has a MCA bus according to info returned
by BIOS (i.e. on machines without MCA bus, biosmca_ps2model would be zero).

biosmca() is expected to be called on beginning the initialization,
and biosmca_ps2model is then used for further checks.

diffstat:

 sys/arch/i386/stand/lib/biosmca.S |  123 ++++++++++++++++++++++++++++++++++++++
 sys/arch/i386/stand/lib/biosmca.h |   38 +++++++++++
 2 files changed, 161 insertions(+), 0 deletions(-)

diffs (169 lines):

diff -r 93db2fe54c3e -r 6ee69ea1ae08 sys/arch/i386/stand/lib/biosmca.S
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/i386/stand/lib/biosmca.S Mon May 14 22:14:48 2001 +0000
@@ -0,0 +1,123 @@
+/*     $NetBSD: biosmca.S,v 1.2.2.2 2001/05/14 22:14:48 jdolecek Exp $ */
+
+/*
+ * Ported to boot 386BSD by Julian Elischer (julian%tfs.com@localhost) Sept 1992
+ *
+ * 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@localhost
+ *  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.
+*/
+
+/* extracted from netbsd:sys/arch/i386/stand/bios_disk.S */
+
+#include <machine/asm.h>
+
+#define        addr32  .byte 0x67
+#define        data32  .byte 0x66
+
+       .data
+       .globl _C_LABEL(biosmca_ps2model)
+_C_LABEL(biosmca_ps2model):    .long 0
+
+       .text
+/*
+# BIOS call "INT 0x15 Function 0xc0" to read extended sys config info on PS/2
+#      Return:         no return value
+#
+# This function initializes biosmca_ps2model with model number as
+# identified by BIOS, if the machine is a PS/2 box (i.e. has MCA bus
+# instead of ISA).
+*/
+ENTRY(biosmca)
+       pushl   %ebp
+       movl    %esp, %ebp
+       pushl   %ebx
+       push    %ecx
+       push    %edx
+       push    %esi
+       push    %edi
+       push    %eax
+
+       call    _C_LABEL(prot_to_real)  # enter real mode
+
+       # zero %cx
+       data32
+       xorl    %cx, %cx
+
+       data32
+       xorl    %ax, %ax
+       movb    $0xc0, %ah      # subfunction
+       int     $0x15
+       jc      back
+
+       # check feature byte 1 if MCA bus present and replaces ISA
+       addr32
+       movb    %es:5(%ebx), %ax
+       andw    $0x02, %ax      # bit 1 set means MCA instead of ISA
+       cmpw    $0x02, %ax      # see also arch/i386/mca/mca_machdep.c
+       jne     back
+       
+       # save model and submodel bytes to %cx
+       addr32
+       movb    %es:2(%ebx), %ch        # model (1 byte)
+       addr32
+       movb    %es:3(%ebx), %cl        # submodel (1 byte)
+
+back:
+       data32
+       call    _C_LABEL(real_to_prot) # back to protected mode
+
+       # save model
+       movl    %ecx, _C_LABEL(biosmca_ps2model)
+
+       pop     %eax
+       pop     %edi
+       pop     %esi
+       pop     %edx
+       pop     %ecx
+       popl    %ebx
+       popl    %ebp
+       ret
diff -r 93db2fe54c3e -r 6ee69ea1ae08 sys/arch/i386/stand/lib/biosmca.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/i386/stand/lib/biosmca.h Mon May 14 22:14:48 2001 +0000
@@ -0,0 +1,38 @@
+/*     $NetBSD: biosmca.h,v 1.1.2.2 2001/05/14 22:14:48 jdolecek Exp $ */
+
+/*-
+ * Copyright (c) 2001 The NetBSD Foundation, Inc.
+ * 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 the NetBSD
+ *     Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ *    contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``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 FOUNDATION 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.
+ */
+
+void biosmca __P((void));
+
+extern int biosmca_ps2model;



Home | Main Index | Thread Index | Old Index