if (io_CFC!=0xffffffff) //if =0xffffffff,then is a invalid
{ //bus number and device number
printf("\nPCI device has found,the pci config address=%lx\n",io_CF8);
printf("its Bus Numer is %lx \n",(io_CF8&0x00ff0000)/0x10000);
printf("its Device Number is %lx \n",(io_CF8&0x0000f800)/0x800);
printf("its Functin Number is %lx \n",(io_CF8&0x700)/0x100);
printf("this device's deviceID and vendorID=%lx\n",io_CFC);
for (i=0 ;i<=15;i++)
{
DWORD_Out(0xcf8,io_CF8+4*i); //read DWORD
switch (i)
{
case 0:
printf("Device Number and Vendor Number =%lx");
break;
case 1:
printf("Status and Command =");
break;
case 2:
printf("Class Code and Revision ID=");
break;
case 3:
printf("Bist and Header Type and Latency Timer and Cacne Line Size=");
break;
case 4: //PCI Configration has 6 base address
case 5: //register
case 6:
case 7:
case 8:
case 9:
printf("Base Address Register=");
break;
case 10:
case 11:
case 13:
case 14:
printf("Reserved =");
break;
case 12:
printf("Expansion ROM Base Address=");
break;
case 15: //attention:the interrupt IRQ= this result&0xff
printf("Max_Lat Min_Gnt Interrupt Pin Interrupt line=");
break;
}
printf("%lx\n",DWORD_In(0xcfc));
}