The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/x86/include/mptable.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * Copyright (c) 1996, by Steve Passe
    3  * All rights reserved.
    4  *
    5  * Redistribution and use in source and binary forms, with or without
    6  * modification, are permitted provided that the following conditions
    7  * are met:
    8  * 1. Redistributions of source code must retain the above copyright
    9  *    notice, this list of conditions and the following disclaimer.
   10  * 2. The name of the developer may NOT be used to endorse or promote products
   11  *    derived from this software without specific prior written permission.
   12  *
   13  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   14  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   16  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   17  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   18  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   19  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   20  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   21  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   22  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   23  * SUCH DAMAGE.
   24  *
   25  * $FreeBSD: releng/10.2/sys/x86/include/mptable.h 259837 2013-12-24 19:10:56Z jhb $
   26  */
   27 
   28 #ifndef __MACHINE_MPTABLE_H__
   29 #define __MACHINE_MPTABLE_H__
   30 
   31 enum busTypes {
   32     NOBUS = 0,
   33     EISA = 3,
   34     ISA = 6,
   35     MCA = 9,
   36     PCI = 13,
   37     MAX_BUSTYPE = 18,
   38     UNKNOWN_BUSTYPE = 0xff
   39 };
   40 
   41 /* MP Floating Pointer Structure */
   42 typedef struct MPFPS {
   43         char    signature[4];
   44         u_int32_t pap;
   45         u_char  length;
   46         u_char  spec_rev;
   47         u_char  checksum;
   48         u_char  config_type;
   49         u_char  mpfb2;
   50         u_char  mpfb3;
   51         u_char  mpfb4;
   52         u_char  mpfb5;
   53 }      *mpfps_t;
   54 
   55 #define MPFB2_IMCR_PRESENT      0x80
   56 #define MPFB2_MUL_CLK_SRCS      0x40
   57 
   58 /* MP Configuration Table Header */
   59 typedef struct MPCTH {
   60         char    signature[4];
   61         u_short base_table_length;
   62         u_char  spec_rev;
   63         u_char  checksum;
   64         u_char  oem_id[8];
   65         u_char  product_id[12];
   66         u_int32_t oem_table_pointer;
   67         u_short oem_table_size;
   68         u_short entry_count;
   69         u_int32_t apic_address;
   70         u_short extended_table_length;
   71         u_char  extended_table_checksum;
   72         u_char  reserved;
   73 }      *mpcth_t;
   74 
   75 /* Base table entries */
   76 
   77 #define MPCT_ENTRY_PROCESSOR    0
   78 #define MPCT_ENTRY_BUS          1
   79 #define MPCT_ENTRY_IOAPIC       2
   80 #define MPCT_ENTRY_INT          3
   81 #define MPCT_ENTRY_LOCAL_INT    4
   82 
   83 typedef struct PROCENTRY {
   84         u_char  type;
   85         u_char  apic_id;
   86         u_char  apic_version;
   87         u_char  cpu_flags;
   88         u_int32_t cpu_signature;
   89         u_int32_t feature_flags;
   90         u_int32_t reserved1;
   91         u_int32_t reserved2;
   92 }      *proc_entry_ptr;
   93 
   94 #define PROCENTRY_FLAG_EN       0x01
   95 #define PROCENTRY_FLAG_BP       0x02
   96 
   97 typedef struct BUSENTRY {
   98         u_char  type;
   99         u_char  bus_id;
  100         char    bus_type[6];
  101 }      *bus_entry_ptr;
  102 
  103 typedef struct IOAPICENTRY {
  104         u_char  type;
  105         u_char  apic_id;
  106         u_char  apic_version;
  107         u_char  apic_flags;
  108         u_int32_t apic_address;
  109 }      *io_apic_entry_ptr;
  110 
  111 #define IOAPICENTRY_FLAG_EN     0x01
  112 
  113 typedef struct INTENTRY {
  114         u_char  type;
  115         u_char  int_type;
  116         u_short int_flags;
  117         u_char  src_bus_id;
  118         u_char  src_bus_irq;
  119         u_char  dst_apic_id;
  120         u_char  dst_apic_int;
  121 }      *int_entry_ptr;
  122 
  123 #define INTENTRY_TYPE_INT       0
  124 #define INTENTRY_TYPE_NMI       1
  125 #define INTENTRY_TYPE_SMI       2
  126 #define INTENTRY_TYPE_EXTINT    3
  127 
  128 #define INTENTRY_FLAGS_POLARITY                 0x3
  129 #define INTENTRY_FLAGS_POLARITY_CONFORM         0x0
  130 #define INTENTRY_FLAGS_POLARITY_ACTIVEHI        0x1
  131 #define INTENTRY_FLAGS_POLARITY_ACTIVELO        0x3
  132 #define INTENTRY_FLAGS_TRIGGER                  0xc
  133 #define INTENTRY_FLAGS_TRIGGER_CONFORM          0x0
  134 #define INTENTRY_FLAGS_TRIGGER_EDGE             0x4
  135 #define INTENTRY_FLAGS_TRIGGER_LEVEL            0xc
  136 
  137 /* Extended table entries */
  138 
  139 typedef struct EXTENTRY {
  140         u_char  type;
  141         u_char  length;
  142 }      *ext_entry_ptr;
  143 
  144 #define MPCT_EXTENTRY_SAS       0x80
  145 #define MPCT_EXTENTRY_BHD       0x81
  146 #define MPCT_EXTENTRY_CBASM     0x82
  147 
  148 typedef struct SASENTRY {
  149         u_char  type;
  150         u_char  length;
  151         u_char  bus_id;
  152         u_char  address_type;
  153         uint64_t address_base;
  154         uint64_t address_length;
  155 } __attribute__((__packed__)) *sas_entry_ptr;
  156 
  157 #define SASENTRY_TYPE_IO        0
  158 #define SASENTRY_TYPE_MEMORY    1
  159 #define SASENTRY_TYPE_PREFETCH  2
  160 
  161 typedef struct BHDENTRY {
  162         u_char  type;
  163         u_char  length;
  164         u_char  bus_id;
  165         u_char  bus_info;
  166         u_char  parent_bus;
  167         u_char  reserved[3];
  168 }      *bhd_entry_ptr;
  169 
  170 #define BHDENTRY_INFO_SUBTRACTIVE_DECODE        0x1
  171 
  172 typedef struct CBASMENTRY {
  173         u_char  type;
  174         u_char  length;
  175         u_char  bus_id;
  176         u_char  address_mod;
  177         u_int   predefined_range;
  178 }      *cbasm_entry_ptr;
  179 
  180 #define CBASMENTRY_ADDRESS_MOD_ADD              0x0
  181 #define CBASMENTRY_ADDRESS_MOD_SUBTRACT         0x1
  182 
  183 #define CBASMENTRY_RANGE_ISA_IO         0
  184 #define CBASMENTRY_RANGE_VGA_IO         1
  185 
  186 /* descriptions of MP table entries */
  187 typedef struct BASETABLE_ENTRY {
  188         u_char  type;
  189         u_char  length;
  190         char    name[16];
  191 }       basetable_entry;
  192 
  193 #ifdef _KERNEL
  194 struct mptable_hostb_softc {
  195 #ifdef NEW_PCIB
  196         struct pcib_host_resources sc_host_res;
  197         int             sc_decodes_vga_io;
  198         int             sc_decodes_isa_io;
  199 #endif
  200 };
  201 
  202 #ifdef NEW_PCIB
  203 void    mptable_pci_host_res_init(device_t pcib);
  204 #endif
  205 int     mptable_pci_probe_table(int bus);
  206 int     mptable_pci_route_interrupt(device_t pcib, device_t dev, int pin);
  207 #endif
  208 #endif /* !__MACHINE_MPTABLE_H__ */

Cache object: 4e22a7b1ab053c5710135d250d3492a3


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.