70 uint64_t pci_actual_io_offset;
71 uint64_t pci_actual_mem_offset;
73 uint64_t pci_portbase;
76 uint64_t isa_portbase;
80 uint64_t cur_pci_portbase;
81 uint64_t cur_pci_membase;
84 int cur_bus, cur_device, cur_func, cur_reg;
85 int last_was_write_ffffffff;
87 struct pci_device *first_device;
90 #define PCI_CFG_MEM_SIZE 0x100 94 struct pci_device *next;
97 struct pci_data *pcibus;
101 int bus, device,
function;
104 unsigned char cfg_mem[PCI_CFG_MEM_SIZE];
105 unsigned char cfg_mem_size[PCI_CFG_MEM_SIZE];
108 int cur_mapreg_offset;
111 int (*cfg_reg_write)(
struct pci_device *pd,
112 int reg, uint32_t value);
116 #define PCIINIT(name) void pciinit_ ## name(struct machine *machine, \ 117 struct memory *mem, struct pci_device *pd) 123 #define PCI_SET_DATA(ofs,value) { \ 124 pd->cfg_mem[(ofs)] = (value) & 255; \ 125 pd->cfg_mem[(ofs) + 1] = ((value) >> 8) & 255; \ 126 pd->cfg_mem[(ofs) + 2] = ((value) >> 16) & 255; \ 127 pd->cfg_mem[(ofs) + 3] = ((value) >> 24) & 255; \ 129 #define PCI_SET_DATA_SIZE(ofs,value) { \ 130 pd->cfg_mem_size[(ofs)] = (value) & 255; \ 131 pd->cfg_mem_size[(ofs) + 1] = ((value) >> 8) & 255; \ 132 pd->cfg_mem_size[(ofs) + 2] = ((value) >> 16) & 255; \ 133 pd->cfg_mem_size[(ofs) + 3] = ((value) >> 24) & 255; \ 138 #define BUS_PCI_ADDR 0xcf8 139 #define BUS_PCI_DATA 0xcfc 149 int bus,
int device,
int function,
int reg);
151 uint64_t *
data,
int len,
int writeflag);
155 uint64_t pci_actual_io_offset, uint64_t pci_actual_mem_offset,
156 uint64_t pci_portbase, uint64_t pci_membase,
const char *pci_irqbase,
157 uint64_t isa_portbase, uint64_t isa_membase,
const char *isa_irqbase);
161 struct memory *mem,
int bus,
int device,
int function,
void bus_pci_setaddr(struct cpu *cpu, struct pci_data *pci_data, int bus, int device, int function, int reg)
void bus_pci_add(struct machine *machine, struct pci_data *pci_data, struct memory *mem, int bus, int device, int function, const char *name)
void bus_pci_data_access(struct cpu *cpu, struct pci_data *pci_data, uint64_t *data, int len, int writeflag)
void bus_pci_decompose_1(uint32_t t, int *bus, int *dev, int *func, int *reg)
struct pci_data * bus_pci_init(struct machine *machine, const char *irq_path, uint64_t pci_actual_io_offset, uint64_t pci_actual_mem_offset, uint64_t pci_portbase, uint64_t pci_membase, const char *pci_irqbase, uint64_t isa_portbase, uint64_t isa_membase, const char *isa_irqbase)