Under Watcom C there are outpd() and inpd() for reading and writing 32-bit I/O, and under DJGPP there are outpl() and inpl().
Under BC you can:
1. Call the PCI BIOS Extension interrupt of int1A to do 32-bit read/write operations on PCI device registers;
2. Write your own oupd() and inpd() for BC, sample as follows:
static ULONG inpd(int portnum)
{
static ULONG value ;
asm mov dx,portnum ;
asm lea bx,value ;
__emit__(0x66,0x50, // push EAX
0x66,0xED, // in EAX,DX
0x66,0x89,0x07, // mov ,EAX
0x66,0x58) ; // pop EAX
return value ;
}
static void outpd(int portnum, ULONG val)
{
static ULONG value = 0 ;
value = val ;
asm mov dx,portnum ;
asm lea bx,value ;
__emit__(0x66,0x50, // push EAX
0x66,0x8B,0x07, // mov EAX,
0x66,0xEF, // out DX,EAX
0x66,0x58) ; // pop EAX
return ;
}