1999-08-28 00:22:10 +00:00
|
|
|
.\" $FreeBSD$
|
1997-08-01 06:04:08 +00:00
|
|
|
.\"
|
|
|
|
.\" Copyright (c) 1997 Michael Smith
|
|
|
|
.\" 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.
|
|
|
|
.\"
|
|
|
|
.\" 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.
|
|
|
|
.\"
|
|
|
|
.Dd Aug 1, 1997
|
1997-08-01 15:17:54 +00:00
|
|
|
.Dt BIOS 9
|
1997-08-01 06:04:08 +00:00
|
|
|
.Os FreeBSD
|
|
|
|
.Sh NAME
|
|
|
|
.Nm bios_sigsearch ,
|
|
|
|
.Nm bios32_SDlookup ,
|
|
|
|
.Nm bios32
|
|
|
|
.Nd Interact with PC BIOS.
|
|
|
|
.Sh SYNOPSIS
|
1998-01-16 18:06:23 +00:00
|
|
|
.Fd #include <sys/types.h>
|
1997-08-01 06:04:08 +00:00
|
|
|
.Fd #include <machine/pc/bios.h>
|
|
|
|
.Ft u_int32_t
|
|
|
|
.Fn bios_sigsearch "u_int32_t start" "u_char *sig" "int siglen" "int paralen" "int sigofs"
|
|
|
|
.Ft int
|
|
|
|
.Fn bios32_SDlookup "struct bios32_SDentry *ent"
|
|
|
|
.Ft void
|
|
|
|
.Fn bios32 "caddr_t entry" "struct bios32_args *args"
|
|
|
|
.Fn BIOS_PADDRTOVADDR "addr"
|
|
|
|
.Fn BIOS_VADDRTOPADDR "addr"
|
|
|
|
.Ft extern struct bios32_SDentry PCIbios;
|
|
|
|
.Ft extern struct SMBIOS_table SMBIOStable;
|
|
|
|
.Ft extern struct DMI_table DMItable;
|
|
|
|
.Sh DESCRIPTION
|
|
|
|
These functions provide a general-purpose interface for dealing with
|
|
|
|
the BIOS functions and data encountered on x86 PC-architecture systems.
|
|
|
|
.Bl -tag -width 20n
|
|
|
|
.It Fn bios_sigsearch
|
|
|
|
Searches the BIOS address space for a service signature, usually an
|
|
|
|
uppercase ASCII sequence surrounded by underscores. The search begins
|
|
|
|
at
|
|
|
|
.Fa start ,
|
|
|
|
or at the beginning of the BIOS if
|
|
|
|
.Fa start
|
|
|
|
is zero.
|
|
|
|
.Fa siglen
|
|
|
|
bytes of the BIOS image and
|
|
|
|
.Fa sig
|
|
|
|
are compared at
|
|
|
|
.Fa sigofs
|
|
|
|
bytes offset from the current location. If no match is found, the
|
|
|
|
current location is incremented by
|
|
|
|
.Fa paralen
|
|
|
|
bytes and the search repeated. If the signature is found, its effective
|
|
|
|
physical address is returned. If no signature is found, zero is returned.
|
|
|
|
.It Fn BIOS_VADDRTOPADDR
|
|
|
|
Returns the effective physical address which corresponds to the kernel
|
|
|
|
virtual address
|
|
|
|
.Fa addr .
|
|
|
|
.It Fn BIOS_VADDRTOPADDR
|
|
|
|
Returns the kernel virtual address which corresponds to the effective
|
|
|
|
physical address
|
|
|
|
.Fa addr .
|
|
|
|
.It SMBIOStable
|
|
|
|
If not NULL, points to a
|
|
|
|
.Ft struct SMBIOS_table
|
|
|
|
structure containing information read from the System Management BIOS table
|
|
|
|
during system startup.
|
|
|
|
.It DMItable
|
|
|
|
If not NULL, points to a
|
|
|
|
.Ft struct DMI_table
|
|
|
|
structure containing information read from the Desktop Management Interface
|
|
|
|
parameter table during system startup.
|
|
|
|
.El
|
|
|
|
.Sh BIOS32
|
|
|
|
At system startup, the BIOS is scanned for the BIOS32 Service Directory
|
|
|
|
(part of the PCI specification), and the existence of the directory is
|
|
|
|
recorded. This can then be used to locate other services.
|
|
|
|
.Bl -tag -width 20n
|
|
|
|
.It Fn bios32_SDlookup
|
|
|
|
Attempts to locate the BIOS32 service matching the 4-byte identifier
|
|
|
|
passed in the
|
|
|
|
.Fa ident
|
|
|
|
field of the
|
|
|
|
.Fa ent
|
|
|
|
argument.
|
|
|
|
.It Fn bios32
|
|
|
|
Calls a bios32 function. This presumes that the function is capable of
|
|
|
|
working within the kernel segment (normally the case). The virtual address
|
|
|
|
of the entrypoint is supplied in
|
|
|
|
.Fa entry
|
|
|
|
and the register arguments to the function are supplied in
|
|
|
|
.Fa args .
|
|
|
|
.It PCIbios
|
|
|
|
If not NULL, points to a
|
|
|
|
.Ft struct bios32_SDentry
|
|
|
|
structure describing the PCI BIOS entrypoint which was found during system
|
|
|
|
startup.
|
|
|
|
.El
|
|
|
|
|