Lines Matching refs:self

51 void libpci_vdevice_enable(libpci_vdevice_t* self, uint8_t bus, uint8_t dev, uint8_t fun,
53 assert(self);
54 self->location_bus = bus;
55 self->location_dev = dev;
56 self->location_fun = fun;
57 self->physical_device_passthrough = pdevice_passthrough;
58 self->enabled = true;
61 void libpci_vdevice_disable(libpci_vdevice_t* self) {
62 assert(self);
63 self->enabled = false;
66 bool libpci_vdevice_match(libpci_vdevice_t* self, uint8_t bus, uint8_t dev, uint8_t fun) {
67 assert(self);
68 if(!self->enabled) {
72 return (self->location_bus == bus &&
73 self->location_dev == dev &&
74 self->location_fun == fun);
77 void libpci_vdevice_set_mode(libpci_vdevice_t* self, int offset,
79 assert(self);
86 self->mode[offset + i] = m;
90 void libpci_vdevice_rebase_addr_realdevice(libpci_vdevice_t* self,
94 assert(self && dev);
104 self->rebase_addr_virtdevice(self, base_addr_index, base_addr,
108 self->physical_device_passthrough = dev;
111 void libpci_vdevice_rebase_ioaddr_realdevice(libpci_vdevice_t* self,
115 assert(self && dev);
119 self->rebase_ioaddr_virtdevice(self, base_addr_index, base_addr,
121 self->physical_device_passthrough = dev;
124 void libpci_vdevice_rebase_addr_virtdevice(libpci_vdevice_t* self,
130 assert(self);
145 self->rebased_writemask[base_addr_index] = size_mask;
146 self->rebased_addr[base_addr_index] = PCI_BASE_ADDRESS_SPACE_MEMORY;
147 self->rebased_addr[base_addr_index] |= LWord64 ? PCI_BASE_ADDRESS_MEM_TYPE_64:
149 self->rebased_addr[base_addr_index] |= prefetch ? PCI_BASE_ADDRESS_MEM_PREFETCH : 0;
150 self->rebased_addr[base_addr_index] |= base_addr;
151 self->rebased_type[base_addr_index] = PCI_BASE_ADDRESS_SPACE_MEMORY;
157 self->set_mode(self, PCI_BASE_ADDRESS_0 + (base_addr_index * 4), m);
160 void libpci_vdevice_rebase_ioaddr_virtdevice(libpci_vdevice_t* self,
164 assert(self);
179 self->rebased_writemask[base_addr_index] = size_mask;
180 self->rebased_addr[base_addr_index] = base_addr;
181 self->rebased_addr[base_addr_index] |= PCI_BASE_ADDRESS_SPACE_IO;
182 self->rebased_type[base_addr_index] = PCI_BASE_ADDRESS_SPACE_IO;
188 self->set_mode(self, PCI_BASE_ADDRESS_0 + (base_addr_index * 4), m);
191 uint32_t libpci_vdevice_ioread(libpci_vdevice_t* self, int offset, int size){
192 assert(self);
201 if (!self->allow_extended_pci_config_space) {
209 assert(self->physical_device_passthrough);
210 return libpci_read_reg(self->physical_device_passthrough->bus,
211 self->physical_device_passthrough->dev,
212 self->physical_device_passthrough->fun,
218 libpci_vdevice_mode_t* m = &self->mode[offset + i];
223 assert(self->physical_device_passthrough);
224 result_byte = libpci_read_reg8(self->physical_device_passthrough->bus,
225 self->physical_device_passthrough->dev,
226 self->physical_device_passthrough->fun,
239 result_byte = m->callback_ioread(self, offset + i);
252 void libpci_vdevice_iowrite(libpci_vdevice_t* self, int offset, int size, uint32_t val) {
253 assert(self);
260 if (!self->allow_extended_pci_config_space) {
268 assert(self->physical_device_passthrough);
269 libpci_write_reg(self->physical_device_passthrough->bus,
270 self->physical_device_passthrough->dev,
271 self->physical_device_passthrough->fun,
279 libpci_vdevice_mode_t* m = &self->mode[offset + i];
286 assert(self->physical_device_passthrough);
287 libpci_write_reg(self->physical_device_passthrough->bus,
288 self->physical_device_passthrough->dev,
289 self->physical_device_passthrough->fun,
296 libpci_vdevice_mode_t* m = &self->mode[offset + i];
300 assert(self->physical_device_passthrough);
302 libpci_write_reg8(self->physical_device_passthrough->bus,
303 self->physical_device_passthrough->dev,
304 self->physical_device_passthrough->fun,
317 m->callback_iowrite(self, offset + i, ((uint8_t*)(&val))[i]);