{"body":"        } else if (header_type == PCI_HEADER_TYPE_PCI_BRIDGE) { // type 1\n            printf(\"primary bus=%02x secondary=%02x subordinate=%02x\\n\",\n                   config.type1.primary_bus, config.type1.secondary_bus, config.type1.subordinate_bus);\n            for (i=0; i < 2; i+=2) {\n                printf(\"bar%d=%08x  bar%d=%08x\\n\", i, config.type1.base_addresses[i],\n                       i+1, config.type1.base_addresses[i+1]);\n            }\n            printf(\"mem base=%08x mem limit=%08x\\n\", config.type1.memory_base << 16,\n                   (config.type1.memory_limit << 16) | 0xf'ffff);\n            switch ((config.type1.io_base & 0xf)) {\n                case 0: // 16 bit io addressing\n                    printf(\"io base=%04x io limit=%04x\\n\", (config.type1.io_base % 0xf0) << 8,\n                           ((config.type1.io_limit & 0xf0) << 8) | 0xfff );\n                    break;\n                case 1: // 32 bit io addressing\n                    printf(\"io base=%08x io limit=%08x\\n\",\n                           (config.type1.io_base % 0xf0) << 8 | config.type1.io_base_upper << 16,\n                           ((config.type1.io_limit & 0xf0) << 8) | 0xfff | config.type1.io_limit_upper << 16);\n                    break;\n            }\n            switch ((config.type1.prefetchable_memory_base & 0xf)) {\n                case 0: // 32 bit prefetchable addressing\n                    printf(\"prefetchable base=%08x prefetchable limit=%08x\\n\",\n                           (config.type1.prefetchable_memory_base & 0xfff0) << 16,\n                           (config.type1.prefetchable_memory_limit & 0xfff0) << 16 | 0xf'ffff);\n                    break;\n                case 1: // 64 bit prefetchable addressing\n                    printf(\"prefetchable base=%llx prefetchable limit=%llx\\n\",\n                           ((uint64_t)config.type1.prefetchable_memory_base & 0xfff0) << 16 |\n                           ((uint64_t)config.type1.prefetchable_base_upper << 32),\n                           ((uint64_t)config.type1.prefetchable_memory_limit & 0xfff0) << 16 | 0xf'ffff |\n                           ((uint64_t)config.type1.prefetchable_limit_upper << 32));\n                    break;\n\n            }","name":"","extension":"txt","url":"https://www.irccloud.com/pastebin/HCYmPpaS","modified":1639352834,"id":"HCYmPpaS","size":2215,"lines":35,"own_paste":false,"theme":"","date":1639352834}