[BACK]Return to biosvar.h CVS log [TXT][DIR] Up to [local] / sys / arch / i386 / include

Annotation of sys/arch/i386/include/biosvar.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: biosvar.h,v 1.48 2006/05/20 22:36:33 deraadt Exp $    */
        !             2:
        !             3: /*
        !             4:  * Copyright (c) 1997-1999 Michael Shalayeff
        !             5:  * All rights reserved.
        !             6:  *
        !             7:  * Redistribution and use in source and binary forms, with or without
        !             8:  * modification, are permitted provided that the following conditions
        !             9:  * are met:
        !            10:  * 1. Redistributions of source code must retain the above copyright
        !            11:  *    notice, this list of conditions and the following disclaimer.
        !            12:  * 2. Redistributions in binary form must reproduce the above copyright
        !            13:  *    notice, this list of conditions and the following disclaimer in the
        !            14:  *    documentation and/or other materials provided with the distribution.
        !            15:  *
        !            16:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
        !            17:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
        !            18:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
        !            19:  * IN NO EVENT SHALL THE AUTHOR OR HIS RELATIVES BE LIABLE FOR ANY DIRECT,
        !            20:  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        !            21:  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        !            22:  * SERVICES; LOSS OF MIND, USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            23:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        !            24:  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        !            25:  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
        !            26:  * THE POSSIBILITY OF SUCH DAMAGE.
        !            27:  */
        !            28:
        !            29: #ifndef _I386_BIOSVAR_H_
        !            30: #define _I386_BIOSVAR_H_
        !            31: #pragma pack(1)
        !            32:
        !            33:        /* some boxes put apm data seg in the 2nd page */
        !            34: #define        BOOTARG_OFF     (NBPG*2)
        !            35: #define        BOOTARG_LEN     (NBPG*1)
        !            36: #define        BOOTBIOS_ADDR   (0x7c00)
        !            37:
        !            38:        /* BIOS configure flags */
        !            39: #define        BIOSF_BIOS32    0x0001
        !            40: #define        BIOSF_PCIBIOS   0x0002
        !            41: #define        BIOSF_PROMSCAN  0x0004
        !            42: #define        BIOSF_SMBIOS    0x0008
        !            43:
        !            44: /* BIOS media ID */
        !            45: #define BIOSM_F320K    0xff    /* floppy ds/sd  8 spt */
        !            46: #define        BIOSM_F160K     0xfe    /* floppy ss/sd  8 spt */
        !            47: #define        BIOSM_F360K     0xfd    /* floppy ds/sd  9 spt */
        !            48: #define        BIOSM_F180K     0xfc    /* floppy ss/sd  9 spt */
        !            49: #define        BIOSM_ROMD      0xfa    /* ROM disk */
        !            50: #define        BIOSM_F120M     0xf9    /* floppy ds/hd 15 spt 5.25" */
        !            51: #define        BIOSM_F720K     0xf9    /* floppy ds/dd  9 spt 3.50" */
        !            52: #define        BIOSM_HD        0xf8    /* hard drive */
        !            53: #define        BIOSM_F144K     0xf0    /* floppy ds/hd 18 spt 3.50" */
        !            54: #define        BIOSM_OTHER     0xf0    /* any other */
        !            55:
        !            56: /*
        !            57:  * BIOS memory maps
        !            58:  */
        !            59: #define        BIOS_MAP_END    0x00    /* End of array XXX - special */
        !            60: #define        BIOS_MAP_FREE   0x01    /* Usable memory */
        !            61: #define        BIOS_MAP_RES    0x02    /* Reserved memory */
        !            62: #define        BIOS_MAP_ACPI   0x03    /* ACPI Reclaim memory */
        !            63: #define        BIOS_MAP_NVS    0x04    /* ACPI NVS memory */
        !            64:
        !            65: /*
        !            66:  * Optional ROM header
        !            67:  */
        !            68: typedef
        !            69: struct bios_romheader {
        !            70:        u_int16_t       signature;      /* 0xaa55 */
        !            71:        u_int8_t        len;            /* length in pages (512 bytes) */
        !            72:        u_int32_t       entry;          /* initialization entry point */
        !            73:        u_int8_t        reserved[19];
        !            74:        u_int16_t       pnpheader;      /* offset to PnP expansion header */
        !            75: } *bios_romheader_t;
        !            76:
        !            77: /*
        !            78:  * BIOS32
        !            79:  */
        !            80: typedef
        !            81: struct bios32_header {
        !            82:        u_int32_t       signature;      /* 00: signature "_32_" */
        !            83:        u_int32_t       entry;          /* 04: entry point */
        !            84:        u_int8_t        rev;            /* 08: revision */
        !            85:        u_int8_t        length;         /* 09: header length */
        !            86:        u_int8_t        cksum;          /* 0a: modulo 256 checksum */
        !            87:        u_int8_t        reserved[5];
        !            88: } *bios32_header_t;
        !            89:
        !            90: typedef
        !            91: struct bios32_entry_info {
        !            92:        u_int32_t       bei_base;
        !            93:        u_int32_t       bei_size;
        !            94:        u_int32_t       bei_entry;
        !            95: } *bios32_entry_info_t;
        !            96:
        !            97: typedef
        !            98: struct bios32_entry {
        !            99:        u_int32_t       offset;
        !           100:        u_int16_t       segment;
        !           101: } *bios32_entry_t;
        !           102:
        !           103: #define        BIOS32_START    0xe0000
        !           104: #define        BIOS32_SIZE     0x20000
        !           105: #define        BIOS32_END      (BIOS32_START + BIOS32_SIZE - 0x10)
        !           106:
        !           107: #define        BIOS32_MAKESIG(a, b, c, d) \
        !           108:        ((a) | ((b) << 8) | ((c) << 16) | ((d) << 24))
        !           109: #define        BIOS32_SIGNATURE        BIOS32_MAKESIG('_', '3', '2', '_')
        !           110: #define        PCIBIOS_SIGNATURE       BIOS32_MAKESIG('$', 'P', 'C', 'I')
        !           111: #define        SMBIOS_SIGNATURE        BIOS32_MAKESIG('_', 'S', 'M', '_')
        !           112:
        !           113: /*
        !           114:  * CTL_BIOS definitions.
        !           115:  */
        !           116: #define        BIOS_DEV                1       /* int: BIOS boot device */
        !           117: #define        BIOS_DISKINFO           2       /* struct: BIOS boot device info */
        !           118: #define BIOS_CKSUMLEN          3       /* int: disk cksum block count */
        !           119: #define        BIOS_MAXID              4       /* number of valid machdep ids */
        !           120:
        !           121: #define        CTL_BIOS_NAMES { \
        !           122:        { 0, 0 }, \
        !           123:        { "biosdev", CTLTYPE_INT }, \
        !           124:        { "diskinfo", CTLTYPE_STRUCT }, \
        !           125:        { "cksumlen", CTLTYPE_INT }, \
        !           126: }
        !           127:
        !           128: #define        BOOTARG_MEMMAP 0
        !           129: typedef struct _bios_memmap {
        !           130:        u_int64_t addr;         /* Beginning of block */
        !           131:        u_int64_t size;         /* Size of block */
        !           132:        u_int32_t type;         /* Type of block */
        !           133: } bios_memmap_t;
        !           134:
        !           135: /* Info about disk from the bios, plus the mapping from
        !           136:  * BIOS numbers to BSD major (driver?) number.
        !           137:  *
        !           138:  * Also, do not bother with BIOSN*() macros, just parcel
        !           139:  * the info out, and use it like this.  This makes for less
        !           140:  * of a dependance on BIOSN*() macros having to be the same
        !           141:  * across /boot, /bsd, and userland.
        !           142:  */
        !           143: #define        BOOTARG_DISKINFO 1
        !           144: typedef struct _bios_diskinfo {
        !           145:        /* BIOS section */
        !           146:        int bios_number;        /* BIOS number of drive (or -1) */
        !           147:        u_int bios_cylinders;   /* BIOS cylinders */
        !           148:        u_int bios_heads;       /* BIOS heads */
        !           149:        u_int bios_sectors;     /* BIOS sectors */
        !           150:        int bios_edd;           /* EDD support */
        !           151:
        !           152:        /* BSD section */
        !           153:        dev_t bsd_dev;          /* BSD device */
        !           154:
        !           155:        /* Checksum section */
        !           156:        u_int32_t checksum;     /* Checksum for drive */
        !           157:
        !           158:        /* Misc. flags */
        !           159:        u_int32_t flags;
        !           160: #define BDI_INVALID    0x00000001      /* I/O error during checksumming */
        !           161: #define BDI_GOODLABEL  0x00000002      /* Had SCSI or ST506/ESDI disklabel */
        !           162: #define BDI_BADLABEL   0x00000004      /* Had another disklabel */
        !           163: #define BDI_EL_TORITO  0x00000008      /* 2,048-byte sectors */
        !           164: #define BDI_PICKED     0x80000000      /* kernel-only: cksum matched */
        !           165:
        !           166: } bios_diskinfo_t;
        !           167:
        !           168: #define        BOOTARG_APMINFO 2
        !           169: typedef struct _bios_apminfo {
        !           170:        /* APM_CONNECT returned values */
        !           171:        u_int   apm_detail;
        !           172:        u_int   apm_code32_base;
        !           173:        u_int   apm_code16_base;
        !           174:        u_int   apm_code_len;
        !           175:        u_int   apm_data_base;
        !           176:        u_int   apm_data_len;
        !           177:        u_int   apm_entry;
        !           178:        u_int   apm_code16_len;
        !           179: } bios_apminfo_t;
        !           180:
        !           181: #define        BOOTARG_CKSUMLEN 3              /* u_int32_t */
        !           182:
        !           183: #define        BOOTARG_PCIINFO 4
        !           184: typedef struct _bios_pciinfo {
        !           185:        /* PCI BIOS v2.0+ - Installation check values */
        !           186:        u_int32_t       pci_chars;      /* Characteristics (%eax) */
        !           187:        u_int32_t       pci_rev;        /* BCD Revision (%ebx) */
        !           188:        u_int32_t       pci_entry32;    /* PM entry point for PCI BIOS */
        !           189:        u_int32_t       pci_lastbus;    /* Number of last PCI bus */
        !           190: } bios_pciinfo_t;
        !           191:
        !           192: #define        BOOTARG_CONSDEV 5
        !           193: typedef struct _bios_consdev {
        !           194:        dev_t   consdev;
        !           195:        int     conspeed;
        !           196: } bios_consdev_t;
        !           197:
        !           198: #define BOOTARG_SMPINFO 6              /* struct mp_float[] */
        !           199:
        !           200: #define BOOTARG_BOOTMAC        7
        !           201: typedef struct _bios_bootmac {
        !           202:        char    mac[6];
        !           203: } bios_bootmac_t;
        !           204:
        !           205: #if defined(_KERNEL) || defined (_STANDALONE)
        !           206:
        !           207: #ifdef _LOCORE
        !           208: #define        DOINT(n)        int     $0x20+(n)
        !           209: #else
        !           210: #define        DOINT(n)        "int $0x20+(" #n ")"
        !           211:
        !           212: extern volatile struct BIOS_regs {
        !           213:        u_int32_t       biosr_ax;
        !           214:        u_int32_t       biosr_cx;
        !           215:        u_int32_t       biosr_dx;
        !           216:        u_int32_t       biosr_bx;
        !           217:        u_int32_t       biosr_bp;
        !           218:        u_int32_t       biosr_si;
        !           219:        u_int32_t       biosr_di;
        !           220:        u_int32_t       biosr_ds;
        !           221:        u_int32_t       biosr_es;
        !           222: }      BIOS_regs;
        !           223:
        !           224: #ifdef _KERNEL
        !           225: #include <machine/bus.h>
        !           226:
        !           227: struct bios_attach_args {
        !           228:        char *bios_dev;
        !           229:        u_int bios_func;
        !           230:        bus_space_tag_t bios_iot;
        !           231:        bus_space_tag_t bios_memt;
        !           232:        union {
        !           233:                void *_p;
        !           234:                bios_apminfo_t *_bios_apmp;
        !           235:        } _;
        !           236: };
        !           237:
        !           238: #define        bios_apmp       _._bios_apmp
        !           239:
        !           240: struct consdev;
        !           241: struct proc;
        !           242:
        !           243: int bios_sysctl(int *, u_int, void *, size_t *, void *, size_t, struct proc *);
        !           244:
        !           245: void bioscnprobe(struct consdev *);
        !           246: void bioscninit(struct consdev *);
        !           247: void bioscnputc(dev_t, int);
        !           248: int bioscngetc(dev_t);
        !           249: void bioscnpollc(dev_t, int);
        !           250: void bios_getopt(void);
        !           251:
        !           252: /* bios32.c */
        !           253: int  bios32_service(u_int32_t, bios32_entry_t, bios32_entry_info_t);
        !           254:
        !           255: extern u_int bootapiver;
        !           256: extern bios_memmap_t *bios_memmap;
        !           257: extern void *bios_smpinfo;
        !           258: extern bios_pciinfo_t *bios_pciinfo;
        !           259:
        !           260: #endif /* _KERNEL */
        !           261: #endif /* _LOCORE */
        !           262: #endif /* _KERNEL || _STANDALONE */
        !           263:
        !           264: #pragma pack()
        !           265: #endif /* _I386_BIOSVAR_H_ */

CVSweb