@ -29,90 +29,91 @@ typedef struct QPCIBusPC
static uint8_t qpci_pc_pio_readb ( QPCIBus * bus , uint32_t addr )
{
return inb ( addr ) ;
return qtest_ inb( bus - > qts , addr ) ;
}
static void qpci_pc_pio_writeb ( QPCIBus * bus , uint32_t addr , uint8_t val )
{
outb ( addr , val ) ;
qtest_ outb( bus - > qts , addr , val ) ;
}
static uint16_t qpci_pc_pio_readw ( QPCIBus * bus , uint32_t addr )
{
return inw ( addr ) ;
return qtest_ inw( bus - > qts , addr ) ;
}
static void qpci_pc_pio_writew ( QPCIBus * bus , uint32_t addr , uint16_t val )
{
outw ( addr , val ) ;
qtest_ outw( bus - > qts , addr , val ) ;
}
static uint32_t qpci_pc_pio_readl ( QPCIBus * bus , uint32_t addr )
{
return inl ( addr ) ;
return qtest_ inl( bus - > qts , addr ) ;
}
static void qpci_pc_pio_writel ( QPCIBus * bus , uint32_t addr , uint32_t val )
{
outl ( addr , val ) ;
qtest_ outl( bus - > qts , addr , val ) ;
}
static uint64_t qpci_pc_pio_readq ( QPCIBus * bus , uint32_t addr )
{
return ( uint64_t ) inl ( addr ) + ( ( uint64_t ) inl ( addr + 4 ) < < 32 ) ;
return ( uint64_t ) qtest_inl ( bus - > qts , addr ) +
( ( uint64_t ) qtest_inl ( bus - > qts , addr + 4 ) < < 32 ) ;
}
static void qpci_pc_pio_writeq ( QPCIBus * bus , uint32_t addr , uint64_t val )
{
outl ( addr , val & 0xffffffff ) ;
outl ( addr + 4 , val > > 32 ) ;
qtest_ outl( bus - > qts , addr , val & 0xffffffff ) ;
qtest_ outl( bus - > qts , addr + 4 , val > > 32 ) ;
}
static void qpci_pc_memread ( QPCIBus * bus , uint32_t addr , void * buf , size_t len )
{
memread ( addr , buf , len ) ;
qtest_ memread( bus - > qts , addr , buf , len ) ;
}
static void qpci_pc_memwrite ( QPCIBus * bus , uint32_t addr ,
const void * buf , size_t len )
{
memwrite ( addr , buf , len ) ;
qtest_ memwrite( bus - > qts , addr , buf , len ) ;
}
static uint8_t qpci_pc_config_readb ( QPCIBus * bus , int devfn , uint8_t offset )
{
outl ( 0xcf8 , ( 1U < < 31 ) | ( devfn < < 8 ) | offset ) ;
return inb ( 0xcfc ) ;
qtest_ outl( bus - > qts , 0xcf8 , ( 1U < < 31 ) | ( devfn < < 8 ) | offset ) ;
return qtest_ inb( bus - > qts , 0xcfc ) ;
}
static uint16_t qpci_pc_config_readw ( QPCIBus * bus , int devfn , uint8_t offset )
{
outl ( 0xcf8 , ( 1U < < 31 ) | ( devfn < < 8 ) | offset ) ;
return inw ( 0xcfc ) ;
qtest_ outl( bus - > qts , 0xcf8 , ( 1U < < 31 ) | ( devfn < < 8 ) | offset ) ;
return qtest_ inw( bus - > qts , 0xcfc ) ;
}
static uint32_t qpci_pc_config_readl ( QPCIBus * bus , int devfn , uint8_t offset )
{
outl ( 0xcf8 , ( 1U < < 31 ) | ( devfn < < 8 ) | offset ) ;
return inl ( 0xcfc ) ;
qtest_ outl( bus - > qts , 0xcf8 , ( 1U < < 31 ) | ( devfn < < 8 ) | offset ) ;
return qtest_ inl( bus - > qts , 0xcfc ) ;
}
static void qpci_pc_config_writeb ( QPCIBus * bus , int devfn , uint8_t offset , uint8_t value )
{
outl ( 0xcf8 , ( 1U < < 31 ) | ( devfn < < 8 ) | offset ) ;
outb ( 0xcfc , value ) ;
qtest_ outl( bus - > qts , 0xcf8 , ( 1U < < 31 ) | ( devfn < < 8 ) | offset ) ;
qtest_ outb( bus - > qts , 0xcfc , value ) ;
}
static void qpci_pc_config_writew ( QPCIBus * bus , int devfn , uint8_t offset , uint16_t value )
{
outl ( 0xcf8 , ( 1U < < 31 ) | ( devfn < < 8 ) | offset ) ;
outw ( 0xcfc , value ) ;
qtest_ outl( bus - > qts , 0xcf8 , ( 1U < < 31 ) | ( devfn < < 8 ) | offset ) ;
qtest_ outw( bus - > qts , 0xcfc , value ) ;
}
static void qpci_pc_config_writel ( QPCIBus * bus , int devfn , uint8_t offset , uint32_t value )
{
outl ( 0xcf8 , ( 1U < < 31 ) | ( devfn < < 8 ) | offset ) ;
outl ( 0xcfc , value ) ;
qtest_ outl( bus - > qts , 0xcf8 , ( 1U < < 31 ) | ( devfn < < 8 ) | offset ) ;
qtest_ outl( bus - > qts , 0xcfc , value ) ;
}
QPCIBus * qpci_init_pc ( QTestState * qts , QGuestAllocator * alloc )