1 // PIR table generation (for emulators)
2 // DO NOT ADD NEW FEATURES HERE. (See paravirt.c / biostables.c instead.)
4 // Copyright (C) 2008 Kevin O'Connor <kevin@koconnor.net>
5 // Copyright (C) 2002 MandrakeSoft S.A.
7 // This file may be distributed under the terms of the GNU LGPLv3 license.
9 #include "config.h" // CONFIG_*
10 #include "output.h" // dprintf
11 #include "std/pirtable.h" // struct pir_header
12 #include "string.h" // checksum
13 #include "util.h" // PirAddr
16 struct pir_header pir;
17 struct pir_slot slots[6];
20 static struct pir_table PIR_TABLE = {
23 .size = sizeof(struct pir_table),
24 .router_devfunc = 0x08,
25 .compatible_devid = 0x122e8086,
29 // first slot entry PCI-to-ISA (embedded)
32 {.link = 0x60, .bitmap = 0xdef8}, // INTA#
33 {.link = 0x61, .bitmap = 0xdef8}, // INTB#
34 {.link = 0x62, .bitmap = 0xdef8}, // INTC#
35 {.link = 0x63, .bitmap = 0xdef8}, // INTD#
37 .slot_nr = 0, // embedded
39 // second slot entry: 1st PCI slot
42 {.link = 0x61, .bitmap = 0xdef8}, // INTA#
43 {.link = 0x62, .bitmap = 0xdef8}, // INTB#
44 {.link = 0x63, .bitmap = 0xdef8}, // INTC#
45 {.link = 0x60, .bitmap = 0xdef8}, // INTD#
49 // third slot entry: 2nd PCI slot
52 {.link = 0x62, .bitmap = 0xdef8}, // INTA#
53 {.link = 0x63, .bitmap = 0xdef8}, // INTB#
54 {.link = 0x60, .bitmap = 0xdef8}, // INTC#
55 {.link = 0x61, .bitmap = 0xdef8}, // INTD#
59 // 4th slot entry: 3rd PCI slot
62 {.link = 0x63, .bitmap = 0xdef8}, // INTA#
63 {.link = 0x60, .bitmap = 0xdef8}, // INTB#
64 {.link = 0x61, .bitmap = 0xdef8}, // INTC#
65 {.link = 0x62, .bitmap = 0xdef8}, // INTD#
69 // 5th slot entry: 4rd PCI slot
72 {.link = 0x60, .bitmap = 0xdef8}, // INTA#
73 {.link = 0x61, .bitmap = 0xdef8}, // INTB#
74 {.link = 0x62, .bitmap = 0xdef8}, // INTC#
75 {.link = 0x63, .bitmap = 0xdef8}, // INTD#
79 // 6th slot entry: 5rd PCI slot
82 {.link = 0x61, .bitmap = 0xdef8}, // INTA#
83 {.link = 0x62, .bitmap = 0xdef8}, // INTB#
84 {.link = 0x63, .bitmap = 0xdef8}, // INTC#
85 {.link = 0x60, .bitmap = 0xdef8}, // INTD#
95 if (! CONFIG_PIRTABLE)
98 dprintf(3, "init PIR table\n");
100 PIR_TABLE.pir.signature = PIR_SIGNATURE;
101 PIR_TABLE.pir.checksum -= checksum(&PIR_TABLE, sizeof(PIR_TABLE));
102 copy_pir(&PIR_TABLE);