日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pci配置基地址_PCI配置空间简介

發布時間:2024/3/12 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pci配置基地址_PCI配置空间简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

配置空間 操作系統

PCI總線推出以來,以其獨有的特性受到眾多廠商的青睞,已經成為計算機擴展總線的主流。目前,國內的許多技術人員已經具備開發PCI總線接口設備的能力。但是PCI總線的編程技術,也就是對PCI總線設備的操作技術,一直是一件讓技術人員感到頭疼的事情。PCI總線編程的核心技術是對相應板卡配置空間的理解和訪問。一般軟件編程人員基于對硬件設備原理的生疏,很難理解并操作配置空間,希望硬件開發人員直接告訴他們怎樣操作;而PCI總線硬件開發人員雖深刻地理解了其意義,在沒有太多編程經驗地前提下,也難于輕易地操作PCI板卡。結果大多是硬件技術人員花費大量時間和精力去學習DDK、WINDRVER等驅動程序開發軟件。

作者在開發PCI總線接口設備時,經過對PCI總線協議的深入研究,從協議本身的角度出發,找到一種方面而快捷的PCI配置空間操作方法,只使用簡單的I/O命令即可找到特定的PCI總線設備并對其所有的配置空間進行讀寫操作。一旦讀得其配置空間的內容,即可中得到擔任系統對該PCI總線設備的資源分配。

1 PCI總線配置空間及配置機制

為避免各PCI設備在資源的占用上發生沖突,PCI總線采用即插即用協議。即在系統建立時由操作系統按照各設備的要求統一分配資源,資源分配的信息由系統寫入各PCI設備的配置空間寄存器,并在操作系統內部備份。各PCI設備有其獨自的配置空間,設計者通過對積壓設備(或插槽)的ISDEL引腳的驅動區分不同設備的配置空間。配置空間的前64個字節稱為配置空間的預定自區,它對每個設備都具有相同的定義且必須被支持;共后的空間稱為設備關聯區,由設備制造商根據需要定義。與編程有關的配置空間信息主要有:

(1)設備號(Device ID)及銷售商號(Vendor

ID),配置空間偏移量為00h,用于對各PCI設備的區分和查找。為了保證其唯一性,Vendor

ID應當向PCI特別興趣小組(PCI SIG)申請而得到。

(2)PCI基地址(PCI Base Address),配置空間偏移量為10~24h,設備通過設定可讀寫的高位數值來向操作系統指示所需資源空間的大小。比如,某設備需要64K字節的內存空間,可以將配置空間的某基地址寄存器的高16位設成可讀寫的,而將低16位置為0(只可讀)。操作系統在建立時,先向所有位寫1,實際上只有高16位被接收而被置成了1,低16位仍為0.這樣操作系統讀取該寄存器時,返回值為FFFF0000h,據此操作系統可以斷定其需要的空間大小是64K字節,然后分配一段空閑的內存空間并向該寄存器的高16位填寫其地址。

其它可能與編程有關的配置空間的定義及地址請參閱參考文獻[1]。

由于PC-AT兼容系統CPU只有內存和I/O兩種空間,沒有專用的配置空間,PCI協議規定利用特定的I/O空間操作驅動PCI橋路轉換成配置空間的操作。目前存在兩種轉換機制,即配置機制1#和配置機制2#。配置機制2#在新的設計中將不再被采用,新的設計應使用配置機制1#來產生配置空間的物理操作。這種機制使用了兩個特定的32位I/O空間,即CF8h和CFCh。這兩個空間對應于PCI橋路的兩個寄存器,當橋路看到CPU在局部總線對這兩個I/O空間進行雙字操作時,就將該I/O操作轉變為PCI總線的配置操作。寄存器CF8h用于產生配置空間的地址(CONFIG-ADDRESS),寄存器CFCh用于保存配置空間的讀寫數據(CONFIG-DATA)。

配置空間地址寄存器的格式如圖1。

CF8H(局部總線):

當CPU發出對I/O空間CFCh的操作時,PCI橋路將檢查配置空間地址寄存器CF8h的31位。如果為1,就在PCI總線上產生一個相應的配置空間讀或寫操作,其地址由PCI橋路根據配置空間地址寄存器的內容作如圖2所示的轉換。

CFCh (局部總線):

設備號被PCI橋路譯碼產生PCI總線地址的高位地址,它們被設計者用作IDSEL信號來區分相應的PCI設備。6位寄存器號用于尋址該PCI設備配置空間62個雙字的配置寄存器(256字節)。功能號用于區分多功能設備的某特定功能的配置空間,對常用的單功能設備為000。某中PCI插槽的總線號隨系統(主板)的不同稍有區別,大多數PC機為1,工控機可能為2或3。為了找到某設備,應在系統的各個總線號上查找,直到定位。如果在0~5號總線上不能發現該設備,即可認為該設備不存在。

理解了上述PCI協議里的配置機制后,就可以直接對CF8h和CFCh兩個雙字的I/O空間進行操作,查找某個PCI設備并訪問其配置空間,從而得到操作系統對該PCI設備的資源分配。

2 用I/O命令訪問PCI總線配置空間

要訪問PCI總線設備的配置空間,必須先查找該設備。查找的基本根據是各PCI設備的配置空間里都存有特定的設備號(Device

ID)及銷售商號(Vendor ID),它們占用配置空間的00h地址。而查找的目的是獲得該設備的總線號和設備號。查找的基本過程如下:用I/O命令寫配置空間的地址寄存器CF8h,使其最高位為1,總線號及設備為0,功能號及寄存器號為0,即往I/O端口CF8h80000000h;然后用I/O命令讀取配置空間的數據寄存器CFCh。如果該寄存器值與該PCI設備的Device

ID及Vendor ID不相符,則依次遞增設備號/總線號,重復上述操作直到找到該設備為止。如果查完所有的設備號/總線號(1~5)仍不能找到該設備,則應當考慮硬件上的問題。對于多功能設備,只要設備配置寄存器相應的功能號值,其余步驟與單功能設備一樣。

如查找設備號為9054h,銷售商號為10b5的單功能PCI設備,用VC++6.0編寫的程序如下:

char bus;char device;

unsigned int ioa0,iod;

int scan( )

{

bus=0;device=0;

for(char i=0;i<5;i++) {

for(char j=0;j<32;j++) {

bus=i; device=j;

ioa0=0x80000000+bus*0x10000

+(device*8)*0x100;

_outpd(0xcf8,ioa0);

iod=_inpd(0xcfc);

if (iod0= =0x905410b5) return 0;

}

}

retrn -1

}

調用子程序scan( ),如果返回值為-1,則沒有找到該PCI設備。如果返回值為0,則找到了該PCI設備。該設備的總線號和設備號分別在全局變量bus和device中,利用這兩個變量即可輕易對該設備的配置空間進行訪問,從而得到分配的資源信息。假設該PCI設備占用了4個資源空間,分別對應于配置空間10h~1ch,其中前兩個為I/O空間,后兩個為內存空間,若定義其基地址分別為ioaddr1,ioaddr2,memaddr1,memaddr2,相應的程序如下:

unsigned short ioaddr1,ioaddr2;

unsigned int memaddr1,memaddr2;

unsigned int iobase,ioa;

void getbaseaddr(char bus,char device);

{

iobase=0x80000000+bus*0x10000+(device*8)*0x100;

ioa=iobase+0x10;/*尋址基地址寄存器0*/

_outpd(0xcf8,ioa);

ioaddr1=(unsigned

short)_inpd(0xcfc)&0xfffc;

/*屏蔽低兩位和高16位*/

ioa=iobase+0x14; /*尋址基地址寄存器1*/

_outpd(0xcf8,ioa);

ioaddr2=(unsigned

short)_inpd(0xcfc)&0xfffc;

ioa=iobase+0x18;/*尋址基地寄存器2*/

_outpd(0xcf8,ioa);

memaddr1=_inpd(0xcfc) & 0xfffffff0;

/*屏蔽低4位*/

ioa=iobase+0x1c; /*尋址基地址寄存器3*/

_outpd(0xcf8,ioa);

memaddr2=_inpd(0xcfc) & 0xfffffff0;

}

對于I/O基地址,最低兩位D0、D1固定為01,對地址本身無效,應當被屏蔽。對PC-AT兼容機,I/O有效地址為16位,因此高位也應被屏蔽。對于內存地址,最低位D0固定為0,而D1~D3用于指示該地址的一些物理特性[1],因此其低4位地址應當被屏蔽。需要指出的是該內存地址是系統的物理地址,在WINDOWS運行于保護模式時,需要經過轉換得到相應的線性地址才能對該內存空間進行直接讀寫。介紹該轉換方法的相關文章較為常見,此處不再贅述。

上述程序給出了讀取配置空間里的基地址的方法。另有相當多PCI設備通過配置空間的設備關聯區來設置該設備的工作狀態,可輕易地用I/O命令進行相應的設置,無須編寫繁雜的驅動程序。在開發PCI視頻圖像采集卡的過程中,該方法得到了實際應用。

如何訪問PCI配置空間

1. 配置事務的產生

PCI協議指出,一般情況下,系統都是通過主橋來實現軟件產生配置事務的,CF8和CFC端口對應主橋的兩個32位寄存器,

對CF8 和 CFC進行32位讀寫操作,即可產生PCI配置事務。

2. PCI兩類配置命令:類型0和類型1

類型0:用于選擇總線上的一個設備

命令格式:

31????? 11 10????????????? 8 7?????????????? 2? 1?? 0

| reserve? | function number | register number | 0 | 0 |

類型1:用于向下級總線傳遞配置請求

命令格式:

31????? 24 23???????? 16 15??????????? 11 10????????????? 8 7?????????????? 2? 1?? 0

| reserve? | bus number? | device number? | function number | register number | 0 | 1 |

3. PCI配置空間訪問流程

所有PCI主橋和PCI-PCI橋都必須能夠產生這兩類配置命令,當發生cf8寄存器32位寫操作時,根據Bus Number,若為0

,主橋則產生類型0配置命令,否則產生類型1配置命令。假設產生類型0配置命令,主橋將其(產生的32位命令數據)放在其

局部總線上,在其局部總線上尋找選擇目標設備,找到目標設備將其IDSEL#有效,所有的PCI設備都要相應類型0配置命令,

在其IDSEL#有效情況下,使其DEVSEL#有效,告訴橋設備自己就是目標設備,再根據寄存器索引來訪問具體的配置寄存器;若

其局部總線上沒有目標設備,則產生類型1配置命令并將其(產生的32位命令數)放在其局部總線上,所有的PCI設備(除

PCI-PCI橋)都要忽略類型1配置命令,只有橋設備響應類型1命令,橋設備譯碼總線號判斷配置事務的目標總線是否在其后,

若目標總線不在其后,忽略該配置事務,否則,它將聲明目標總線就在其后,若總線號不是該橋所掛接的總線,則原封不變

的向下傳遞,否則,將類型1配置命令轉換成類型0配置命令放在其掛接的總線上選擇設備。

如何在DOS中枚舉PCI設備(作者zyl910)07-01-07 12:55??發表于:《VC的夢,VC的結》 分類:B)唧唧復唧唧

http://blog.csdn.net/xqd2006/articles/914267.aspx

File:????? zEnumPCI

Name:????? 如何在DOS中枚舉PCI設備

Author:??? zyl910

Blog:????? http://blog.csdn.net/zyl910/

Version:?? V1.0

Updata:??? 2006-6-30

下載(注意修改下載后的擴展名)

前言

~~~~

學計算機這么多年了,PCI這個名詞不知道叫了幾百遍了。可是,我一直不知道PC機是如何使用PCI總線的、PCI總線設備到底是如何工作的。可是以前我從來沒意識到這個問題,只是麻木的、帶著虛偽的自信活著。

直到前段時間在書店看到《PCI Express 系統體系結構標準教材》,才突然感受到——我對PCI還一無所知,可現在 PCI Express 的時代都快到來了。我很受震撼,所以毫不猶豫地買下了那本書。

回家打開書一看,發現絕大東西看不太懂。當年學接口技術時,那時只有ISA。ISA很簡單,是直接采用電路連線方式將設備與地址總線、各個IRQ及其他控制線路連接起來。而現在PCI-E就很復雜了,而我跳過了PCI,存在著知識斷層。

于是我又跑到書店,去查PCI或接口技術上面的書。后來發現,這十年來,接口技術的書的確更新了,但只為PCI寫個寥寥幾頁簡介,有的書甚至連引腳定義、配置空間等PCI最核心內容都沒有。那樣子還不如不說,浪費了紙張。典型只為了教學大綱,而不考慮學生是否能學會、理解。

我費了好大功夫,才找了幾本關于PCI的書,但主要是英文的。特別是找到了《PCI Express 系統體系結構標準教材》的英文版,這樣就可以對照參考,理解那些英文資料。

看了一段時間之后,發現那些書主要是講硬件電氣特性、通信協議細節,面向的讀者是設計PCI設備的工程師。而我的學習目的是如果在PC機上編程控制PCI設備。還好在網絡上找了一些關于PCI小程序,填補了知識空白。

正文

~~~~

一、PCI配置空間

PCI設備有三個空間——內存地址空間、IO地址空間和配置空間。由于PCI支持即插即用,所以PCI設備不是占用固定的內存地址空間或I/O地址空間,而是可以由操作系統決定其映射的基址。怎么配置呢?這就是配置空間的作用。

DW |??? Byte3??? |??? Byte2??? |??? Byte1??? |???? Byte0???? | Addr

---+---------------------------------------------------------+-----

0 |     Device ID     |     Vendor ID      | 00

---+---------------------------------------------------------+-----

1 |      Status     |      Command      | 04

---+---------------------------------------------------------+-----

2 |        Class Code        | Revision ID | 08

---+---------------------------------------------------------+-----

3 |   BIST  | Header Type | Latency Timer | Cache Line? | 0C

---+---------------------------------------------------------+-----

4 |           Base Address 0           | 10

---+---------------------------------------------------------+-----

5 |           Base Address 1           | 14

---+---------------------------------------------------------+-----

6 |           Base Address 2           | 18

---+---------------------------------------------------------+-----

7 |           Base Address 3           | 1C

---+---------------------------------------------------------+-----

8 |           Base Address 4           | 20

---+---------------------------------------------------------+-----

9 |           Base Address 5           | 24

---+---------------------------------------------------------+-----

10 |          CardBus CIS pointer          | 28

---+---------------------------------------------------------+-----

11 |  Subsystem Device ID  |   Subsystem Vendor ID   | 2C

---+---------------------------------------------------------+-----

12 |        Expansion ROM Base Address        | 30

---+---------------------------------------------------------+-----

13 |        Reserved(Capability List)         | 34

---+---------------------------------------------------------+-----

14 |            Reserved             | 38

---+---------------------------------------------------------+-----

15 |  Max_Lat  |  Min_Gnt  |  IRQ Pin  |  IRQ Line  | 3C

-------------------------------------------------------------------

配置空間中最重要的有:

Vendor ID:廠商ID。知名的設備廠商的ID。FFFFh是一個非法廠商ID,可它來判斷PCI設備是否存在。

Device ID:設備ID。某廠商生產的設備的ID。操作系統就是憑著 Vendor ID和Device ID 找到對應驅動程序的。

Class Code:類代碼。共三字節,分別是 類代碼、子類代碼、編程接口。類代碼不僅用于區分設備類型,還是編程接口的規范,這就是為什么會有通用驅動程序。

IRQ Line:IRQ編號。PC機以前是靠兩片8259芯片來管理16個硬件中斷。現在為了支持對稱多處理器,有了APIC(高級可編程中斷控制器),它支持管理24個中斷。

IRQ Pin:中斷引腳。PCI有4個中斷引腳,該寄存器表明該設備連接的是哪個引腳。

關于配置空間的詳細說明請參考《PCI Local Bus Specification》的第六章。

二、如何訪問配置空間

如何訪問配置空間呢?可通過訪問CF8h、CFCh端口來實現(《PCI Local Bus Specification》的3.2.2.3.2)。

CF8h: CONFIG_ADDRESS。PCI配置空間地址端口。

CFCh: CONFIG_DATA。PCI配置空間數據端口。

CONFIG_ADDRESS寄存器格式:

31 位:Enabled位。

23:16 位:總線編號。

15:11 位:設備編號。

10: 8 位:功能編號。

7: 2 位:配置空間寄存器編號。

1: 0 位:恒為“00”。這是因為CF8h、CFCh端口是32位端口。

現在有個難題——CF8h、CFCh端口是32位端口,可像TurboC之類的16位C語言編譯器都不支持32位端口訪問。怎么辦?我們可以使用__emit__在程序中插入機器碼。每次都__emit__一下肯定很麻煩,所以我們應該將它封裝成函數。代碼如下(注意66h是32位指令前綴):

/* 讀32位端口 */DWORDinpd(intportid) {DWORDdwRet;asm mov dx, portid;asm lea bx, dwRet;__emit__(0x66,0x50,// push EAX0x66,0xED,// in EAX,DX0x66,0x89,0x07,// mov [BX],EAX0x66,0x58);// pop EAXreturn dwRet;}/* 寫32位端口 */voidoutpd(intportid, DWORDdwVal){asm mov dx, portid;asm lea bx, dwVal;__emit__(0x66,0x50,// push EAX0x66,0x8B,0x07,// mov EAX,[BX]0x66,0xEF,// out DX,EAX0x66,0x58);// pop EAXreturn;}

三、枚舉PCI設備

怎么枚舉PCI設備呢?我們可以嘗試所有的 bus/dev/func 組合,然后判斷得到的廠商ID是否為FFFFh。

下面這個程序就是使用該方法枚舉PCI設備的。同時為了便于分析數據,將每個設備的配置空間信息保存到文件,這樣可以慢慢分析。

/*

File:????? epcip.c

Name:????? 訪問CF8h、CFCh端口來枚舉PCI設備

Author:??? zyl910

Blog:????? http://blog.csdn.net/zyl910/

Version:?? V1.0

Updata:??? 2006-6-30*/#include

#include typedef unsigned char?BYTE;

typedef unsigned int?WORD;

typedef unsigned long?DWORD;/* PCI設備索引。bus/dev/func 共16位,為了方便處理可放在一個WORD中 */

#define PDI_BUS_SHIFT?? 8

#define PDI_BUS_SIZE??? 8

#define PDI_BUS_MAX???? 0xFF

#define PDI_BUS_MASK??? 0xFF00#define PDI_DEVICE_SHIFT?? 3

#define PDI_DEVICE_SIZE??? 5

#define PDI_DEVICE_MAX???? 0x1F

#define PDI_DEVICE_MASK??? 0x00F8#define PDI_FUNCTION_SHIFT?? 0

#define PDI_FUNCTION_SIZE??? 3

#define PDI_FUNCTION_MAX???? 0x7

#define PDI_FUNCTION_MASK??? 0x0007#define MK_PDI(bus,dev,func)?(WORD)((bus&PDI_BUS_MAX)<

#define PCI_CONFIG_ADDRESS????? 0xCF8

#define PCI_CONFIG_DATA???????? 0xCFC/* 填充PCI_CONFIG_ADDRESS */

#define MK_PCICFGADDR(bus,dev,func)?(DWORD)(0x80000000L | (DWORD)MK_PDI(bus,dev,func)<<8)/* 讀32位端口 */

DWORD?inpd(int?portid)

{

DWORD?dwRet;

asm mov dx, portid;

asm lea bx, dwRet;

__emit__(

0x66,0x50,?// push EAX

0x66,0xED,?// in EAX,DX

0x66,0x89,0x07,?// mov [BX],EAX

0x66,0x58);?// pop EAX

return dwRet;

}/* 寫32位端口 */

void?outpd(int?portid, DWORD?dwVal)

{

asm mov dx, portid;

asm lea bx, dwVal;

__emit__(

0x66,0x50,?// push EAX

0x66,0x8B,0x07,?// mov EAX,[BX]

0x66,0xEF,?// out DX,EAX

0x66,0x58);?// pop EAX

return;

}int?main(void)

{

int?bus, dev, func;

int?i;

DWORD?dwAddr;

DWORD?dwData;

FILE*?hF;

char?szFile[0x10];printf("\n");

printf("Bus#\tDevice#\tFunc#\tVendor\tDevice\tClass\tIRQ\tIntPin\n");/* 枚舉PCI設備 */

for(bus = 0; bus <= PDI_BUS_MAX; ++bus)?{

for(dev = 0; dev <= PDI_DEVICE_MAX; ++dev)?{

for(func = 0; func <= PDI_FUNCTION_MAX; ++func)?{

/* 計算地址 */

dwAddr = MK_PCICFGADDR(bus, dev, func);

/* 獲取廠商ID */

outpd(PCI_CONFIG_ADDRESS, dwAddr);

dwData = inpd(PCI_CONFIG_DATA);/* 判斷設備是否存在。FFFFh是非法廠商ID */

if ((WORD)dwData != 0xFFFF)?{

/* bus/dev/func */

printf("%2.2X\t%2.2X\t%1X\t", bus, dev, func);/* Vendor/Device */

printf("%4.4X\t%4.4X\t", (WORD)dwData, dwData>>16);/* Class Code */

outpd(PCI_CONFIG_ADDRESS, dwAddr | 0x8);

dwData = inpd(PCI_CONFIG_DATA);

printf("%6.6lX\t", dwData>>8);/* IRQ/intPin */

outpd(PCI_CONFIG_ADDRESS, dwAddr | 0x3C);

dwData = inpd(PCI_CONFIG_DATA);

printf("%d\t", (BYTE)dwData);

printf("%d", (BYTE)(dwData>>8));printf("\n");/* 寫文件 */

sprintf(szFile, "PCI%2.2X%2.2X%X.bin", bus, dev, func);

hF = fopen(szFile, "wb");

if (hF != NULL)?{

/* 256字節的PCI配置空間 */

for (i = 0; i < 0x100; i += 4)?{

/* Read */

outpd(PCI_CONFIG_ADDRESS, dwAddr | i);

dwData = inpd(PCI_CONFIG_DATA);/* Write */

fwrite(&dwData, sizeof(dwData), 1, hF);

}

fclose(hF);

}

}

}

}

}return?0;

}

對于我的電腦的枚舉結果是:

Bus#

Device#

Func#

Vendor

Device

Class

IRQ

IntPin

類代碼的說明

0

0

0

1106

3189

60000

0

0

Host bridge

0

1

0

1106

B168

60400

0

0

PCI-to-PCI bridge(實際上是PCI/AGP橋,AGP可看成一種特殊的PCI設備)

0

9

0

14F1

2013

78000

11

1

Simple communication controllers

0

9

1

14F1

2013

78000

11

1

Simple communication controllers

0

9

2

14F1

2013

78000

11

1

Simple communication controllers

0

9

3

14F1

2013

78000

11

1

Simple communication controllers

0

9

4

14F1

2013

78000

11

1

Simple communication controllers

0

9

5

14F1

2013

78000

11

1

Simple communication controllers

0

9

6

14F1

2013

78000

11

1

Simple communication controllers

0

9

7

14F1

2013

78000

11

1

Simple communication controllers

0

10

0

1106

3038

0C0300

11

1

USB controller: Universal Host Controller Specification

0

10

1

1106

3038

0C0300

5

2

USB controller: Universal Host Controller Specification

0

10

2

1106

3038

0C0300

5

3

USB controller: Universal Host Controller Specification

0

10

3

1106

3104

0C0320

11

4

USB2 controller: Intel Enhanced Host Controller Interface

0

11

0

1106

3177

60100

0

0

ISA bridge

0

11

1

1106

571

01018A

255

1

IDE controller

0

11

5

1106

3059

40100

5

3

Audio device

0

12

0

1106

3065

20000

11

1

Ethernet controller

1

0

0

10DE

110

30000

11

1

VGA-compatible controller

總線編號為0的都是主板上固有的芯片(主要是南橋),非主板設備的典型是——顯卡。

WindowsXP的設備管理器中也可以看到PCI信息。啟動“設備管理器”,最好將查看方式設為“依連接查看設備(V)”。找到我的顯卡,雙擊查看屬性。切換到“詳細信息”頁,定位組合框為“硬件 Id”。可看到其中一行為“PCI/VEN_10DE&DEV_0110&CC_030000”,表示廠商ID為“10DE”、設備ID為“0110”、類代碼為“030000”,與程序得到的結果一致。

[Display.gif]

四、PCI BIOS

直接訪問CF8h、CFCh端口的方法太底層。為了提高兼容性,我們可以使用PCI BIOS。PCI BIOS的中斷號是1Ah,AH為B1,AL為功能號。其功能列表為:

01h: INSTALLATION CHECK

02h: FIND PCI DEVICE

03h: FIND PCI CLASS CODE

06h: PCI BUS-SPECIFIC OPERATIONS

08h: READ CONFIGURATION BYTE

09h: READ CONFIGURATION WORD

0Ah: READ CONFIGURATION DWORD

0Bh: WRITE CONFIGURATION BYTE

0Ch: WRITE CONFIGURATION WORD

0Dh: WRITE CONFIGURATION DWORD

0Eh: GET IRQ ROUTING INFORMATION

0Fh: SET PCI IRQ

81h: INSTALLATION CHECK (32-bit)

82h: FIND PCI DEVICE (32-bit)

83h: FIND PCI CLASS CODE (32-bit)

86h: PCI BUS-SPECIFIC OPERATIONS (32-bit)

88h: READ CONFIGURATION BYTE (32-bit)

89h: READ CONFIGURATION WORD (32-bit)

8Ah: READ CONFIGURATION DWORD (32-bit)

8Bh: WRITE CONFIGURATION BYTE (32-bit)

8Ch: WRITE CONFIGURATION WORD (32-bit)

8Dh: WRITE CONFIGURATION DWORD (32-bit)

8Eh: GET IRQ ROUTING INFORMATION (32-bit)

8Fh: SET PCI IRQ (32-bit)

由于像Turbo C這樣的16位編譯器訪問32位寄存器很麻煩,所以建議使用WORD方式來訪問PCI配置空間。以下是09h號功能的詳細說明(摘自Ralf Brown's Interrupt List):

--------X-1AB109-----------------------------

INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION WORD

AX = B109h

BH = bus number

BL = device/function number (bits 7-3 device, bits 2-0 function)

DI = register number (0000h-00FFh, must be multiple of 2) (see #00878)

Return: CF clear if successful

CX = word read

CF set on error

AH = status (00h,87h) (see #00729)

EAX, EBX, ECX, and EDX may be modified

all other flags (except IF) may be modified

Notes:?this function may require up to 1024 byte of stack; it will not enable

interrupts if they were disabled before making the call

the meanings of BL and BH on entry were exchanged between the initial

drafts of the specification and final implementation

BUG:?the Award BIOS 4.51PG (dated 05/24/96) incorrectly returns FFFFh for

register 00h if the PCI function number is nonzero

SeeAlso: AX=B108h,AX=B10Ah,AX=B189h,INT 2F/AX=1684h/BX=304Ch

代碼如下:

/*

File:????? epcib.c

Name:????? 使用PCI BIOS來枚舉PCI設備

Author:??? zyl910

Blog:????? http://blog.csdn.net/zyl910/

Version:?? V1.0

Updata:??? 2006-6-30

*/

#include

#include

#include

typedef unsigned char?BYTE;

typedef unsigned int?WORD;

typedef unsigned long?DWORD;

/* PCI設備索引。bus/dev/func 共16位,為了方便處理可放在一個WORD中 */

#define PDI_BUS_SHIFT?? 8

#define PDI_BUS_SIZE??? 8

#define PDI_BUS_MAX???? 0xFF

#define PDI_BUS_MASK??? 0xFF00

#define PDI_DEVICE_SHIFT?? 3

#define PDI_DEVICE_SIZE??? 5

#define PDI_DEVICE_MAX???? 0x1F

#define PDI_DEVICE_MASK??? 0x00F8

#define PDI_FUNCTION_SHIFT?? 0

#define PDI_FUNCTION_SIZE??? 3

#define PDI_FUNCTION_MAX???? 0x7

#define PDI_FUNCTION_MASK??? 0x0007

#define MK_PDI(bus,dev,func)?(WORD)((bus&PDI_BUS_MAX)<

int?main(void)

{

int?bus, dev, func;

int?i;

union REGS?regs;

WORD?wAddr;

FILE*?hF;

char?szFile[0x10];

printf("\n");

printf("Bus#\tDevice#\tFunc#\tVendor\tDevice\tClass\tIRQ\tIntPin\n");

/* 枚舉PCI設備 */

for(bus = 0; bus <= PDI_BUS_MAX; ++bus)?{

for(dev = 0; dev <= PDI_DEVICE_MAX; ++dev)?{

for(func = 0; func <= PDI_FUNCTION_MAX; ++func)?{

/* 計算地址 */

wAddr = MK_PDI(bus, dev, func);

/* 獲取廠商ID */

regs.x.ax = 0xB109; // PCI BIOS v2.0c+ - READ CONFIGURATION WORD

regs.x.bx = wAddr;

regs.x.di = 0; // Vendor ID

regs.x.cx = 0xFFFF; // 非法的Vendor ID

int86(0x1A, &regs, &regs);

/* 判斷設備是否存在。FFFFh是非法廠商ID */

if (regs.x.cx != 0xFFFF)?{

/* bus/dev/func */

printf("%2.2X\t%2.2X\t%1X\t", bus, dev, func);

/* Vendor */

printf("%4.4X\t", regs.x.cx);

/* Device */

regs.x.ax = 0xB109; // PCI BIOS v2.0c+ - READ CONFIGURATION WORD

regs.x.bx = wAddr;

regs.x.di = 2; // Device ID

int86(0x1A, &regs, &regs);

printf("%4.4X\t", regs.x.cx);

/* Class Code */

regs.x.ax = 0xB109; // PCI BIOS v2.0c+ - READ CONFIGURATION WORD

regs.x.bx = wAddr;

regs.x.di = 0xA; // Class/SubClass

int86(0x1A, &regs, &regs);

printf("%4.4X\t", regs.x.cx);

/* IRQ/intPin */

regs.x.ax = 0xB109; // PCI BIOS v2.0c+ - READ CONFIGURATION WORD

regs.x.bx = wAddr;

regs.x.di = 0x3C; // IRQ/IntPin

int86(0x1A, &regs, &regs);

printf("%d\t", (BYTE)regs.x.cx);

printf("%d", (BYTE)(regs.x.cx>>8));

printf("\n");

/* 寫文件 */

sprintf(szFile, "PCI%2.2X%2.2X%X.bin", bus, dev, func);

hF = fopen(szFile, "wb");

if (hF != NULL)?{

/* 256字節的PCI配置空間 */

for (i = 0; i < 0x100; i += 2)?{

/* Read */

regs.x.ax = 0xB109; // PCI BIOS v2.0c+ - READ CONFIGURATION WORD

regs.x.bx = wAddr;

regs.x.di = i;

int86(0x1A, &regs, &regs);

/* Write */

fwrite(&regs.x.cx, 2, 1, hF);

}

fclose(hF);

}

}

}

}

}

return?0;

}

五、保護模式下的PCI BIOS

剛才所說的1Ah中斷是實模式下的BIOS,保護模式下怎么辦?

在BIOS內存區(E0000h ~ FFFFFh)可以找到PCI BIOS保護模式入口。其格式為:

0h(dw): “_32_”標志

4h(dw): PCI BIOS保護模式入口

8h(by): Rev Level

9h(by): 長度

Ah(by): 校檢和

Bh ~ Fh: 保留

關于保護模式下PCI BIOS的具體用法可參考《PCI Bus Demystified》的第七章。

由于切換到保護模式的代碼比較復雜,所以就沒有編程測試了。

六、總結

本文章中的代碼能在純DOS下或Windows9X中正常運行,但是不能在WindowsXP等NT平臺下運行:對于訪問端口方式,廠商ID均返回FFFFh;對于調用 PCI BIOS 方式,貌似根本沒有實現該功能。這可能與WindowsXP設計有關——不再使用V86方式執行DOS程序,而是專門做了個DOS虛擬機。而且還有許多這樣的兼容性問題,比如VBE。我都有點懷疑這不是微軟故意這么做,讓我們不能接觸底層,只能使用高層的.Net,這樣不可能對像微軟這樣掌握核心技術的公司造成威脅。

參考文獻

~~~~~~~~

[1] PCI-SIG. PCI Local Bus Specification Revision 3.0. 2002.8.12

[2] Doug Abbott. PCI Bus Demystified. LLH Technology Publishing, 2000

[3] 李貴山、戚德虎. PCI 局部總線開發者指南. 西安電子科技大學出版社, 1997.1

[4] MindShare, Inc , Ravi Budruk, Don Anderson, Tom Shanley. PCI Express System Architecture. Addison Wesley, 2003.9.4

[5] MindShare公司. 田玉敏,王崧,張波 譯. PCI Express 系統體系結構標準教材. 電子工業出版社, 2005.11

[6] Ralf Brown's Interrupt List. http://www.cs.cmu.edu/~ralf/

更新

~~~~

zhuyi108

16篇文章,10W+人氣,0粉絲

Ctrl+Enter?發布

發布

取消

掃一掃,領取大禮包

總結

以上是生活随笔為你收集整理的pci配置基地址_PCI配置空间简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

亚洲欧美精品在线 | 午夜视频免费 | 免费观看午夜视频 | 精品一区二区三区久久 | 欧美精品亚洲精品日韩精品 | 亚洲国产精品一区二区久久hs | 国产成人久久久77777 | 91精品国产自产在线观看 | 美女免费网视频 | 日韩激情第一页 | 国产婷婷精品 | 久久午夜色播影院免费高清 | 日韩精品中文字幕一区二区 | 成人久久网 | 日韩欧美在线高清 | 日韩在线视频二区 | 四虎影视4hu4虎成人 | 久久久久久国产精品久久 | 国产成人精品av在线 | 免费观看一区 | 狠狠干成人 | 久久午夜网 | 国产精品久久久av久久久 | 欧美日韩国产mv | 狠狠操综合网 | 色丁香久久 | 黄色成年| 欧美精品中文字幕亚洲专区 | 亚洲精品资源 | 99热精品在线观看 | 超碰在线观看av | 91传媒在线| 亚洲综合日韩在线 | 久久精品亚洲国产 | 免费日韩一级片 | 国产精品99久久久久人中文网介绍 | 国产又黄又爽无遮挡 | 中文字幕传媒 | 色com| 国产黄色片一级 | 超碰97国产精品人人cao | 日日爽夜夜操 | 欧美综合在线观看 | 国产精品综合在线 | 最近中文字幕大全中文字幕免费 | 99一级片| 日韩av免费一区 | 在线免费av电影 | 天天操天天射天天操 | 啪啪动态视频 | 人人精品久久 | 免费十分钟 | 一区二区三区视频在线 | 成人黄色大片在线免费观看 | 国产精品女人久久久久久 | 麻豆av一区二区三区在线观看 | 99精彩视频 | 免费看片黄色 | 国产精品久久久久久久久久直播 | 日韩欧美在线观看一区 | 亚洲国产欧美一区二区三区丁香婷 | 丁香资源影视免费观看 | av在线播放国产 | 久久久综合香蕉尹人综合网 | 国产精品久久一 | aaaaaa毛片| 91精品在线看 | 成人在线观看免费视频 | 中文不卡视频在线 | 黄色精品视频 | 天天爱av导航 | 狠狠狠狠狠狠操 | 国产精品久久久久久爽爽爽 | 激情综合色综合久久综合 | 2019精品手机国产品在线 | av在线网站免费观看 | 日本久久久亚洲精品 | 日本中文字幕影院 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 午夜影视av | 国产又粗又长又硬免费视频 | 国产精品中文字幕av | 毛片网站免费在线观看 | 免费麻豆| av在线最新 | 综合精品在线 | 日日草天天干 | 一本—道久久a久久精品蜜桃 | 亚洲国产精品激情在线观看 | 国产福利一区二区三区视频 | 日韩av成人免费看 | 国产精品国产三级国产不产一地 | 国产在线a视频 | 欧美久久精品 | 亚洲精品在线观 | 99在线视频免费观看 | 2024av在线播放 | 狠狠色伊人亚洲综合成人 | 亚洲 综合 精品 | 国产麻豆视频网站 | 天天干天天干天天干天天干天天干天天干 | 在线亚洲小视频 | 青青久草在线视频 | 久久精品中文字幕 | 91热精品视频| 免费日韩 精品中文字幕视频在线 | 99精品国产aⅴ | 九月婷婷色 | 国产免费黄色 | 黄色小说网站在线 | 欧美一区二区日韩一区二区 | 国产精品一区二区三区视频免费 | 黄色91在线观看 | 亚洲精品高清在线 | 综合网婷婷 | 中文字幕色播 | 韩国精品一区二区三区六区色诱 | 亚洲精品久久久久久久不卡四虎 | 久久99久久99| 在线观看视频黄色 | 一区二区三区免费在线观看视频 | 在线日韩中文 | 国产成年免费视频 | 玖玖视频免费在线 | 日韩久久久久久久 | 国产一二区视频 | 精品少妇一区二区三区在线 | 亚洲春色综合另类校园电影 | 日韩av一区二区三区 | 国产96在线观看 | 久久精品99久久久久久2456 | 中文字幕日韩高清 | 国产精品白浆视频 | 亚洲精品资源在线观看 | 九九交易行官网 | 欧美视频99| 国际精品久久久 | 97在线资源| 97超碰人人| 首页国产精品 | 国产在线观看你懂的 | 日韩欧美电影在线 | 日韩av视屏 | 天天干天天干天天 | 久久国产视频网站 | 日日干天天爽 | 久久久久久久久免费视频 | 亚州欧美视频 | 91高清免费在线观看 | 国产在线2020 | 99精品国产99久久久久久福利 | 毛片基地黄久久久久久天堂 | 91成版人在线观看入口 | 欧美日韩视频在线播放 | aaawww| 蜜臀aⅴ国产精品久久久国产 | 夜夜高潮夜夜爽国产伦精品 | 国产亚洲欧美精品久久久久久 | 久久午夜视频 | 久久视频在线观看免费 | 国产黄色精品在线 | 久久免费视频在线 | 成人午夜影院在线观看 | 日本久久久久久久久久 | 免费精品 | 日韩a级黄色片 | 国产精品不卡视频 | 四虎影视成人永久免费观看视频 | 九色自拍视频 | 日日爱视频 | 久久久高清一区二区三区 | 久久久www成人免费精品张筱雨 | 欧美日韩精 | 欧美日韩电影在线播放 | 人人玩人人添人人澡97 | 久久综合精品一区 | 亚洲免费在线播放视频 | 永久免费的啪啪网站免费观看浪潮 | 国产精品免费麻豆入口 | 午夜视频免费在线观看 | 免费黄色网址网站 | 九九九九九精品 | 99亚洲国产 | 五月婷婷av在线 | 黄色免费大全 | 9999在线| 黄污网站在线 | 97视频总站 | 99精品99| 国产精品麻豆果冻传媒在线播放 | 精品国产伦一区二区三区 | 国产午夜精品免费一区二区三区视频 | 蜜臀av夜夜澡人人爽人人 | 欧美在线视频a | 亚洲欧美日本一区二区三区 | 国产福利精品在线观看 | 免费观看国产成人 | 日日夜夜天天综合 | 国产精品久久久久亚洲影视 | 日韩av中文字幕在线免费观看 | 黄色免费视频在线观看 | 五月婷婷导航 | 色综合天天爱 | 国产只有精品 | 欧美国产精品一区二区 | 天天操天天干天天操天天干 | 激情久久伊人 | 成人在线播放av | 亚洲激情在线视频 | 国产精品美女毛片真酒店 | 7777精品伊人久久久大香线蕉 | 在线免费观看成人 | 精品国产成人在线影院 | www.激情五月.com | 日韩免费电影 | 免费视频一区二区 | av在线最新 | 在线精品国产 | 国产99久久久国产精品成人免费 | 天天色综合天天 | av免费在线免费观看 | 999久久久欧美日韩黑人 | 日韩有色| 亚洲精品在线免费看 | 97香蕉久久国产在线观看 | 二区在线播放 | 精品国内| www.夜色.com| 在线观看免费高清视频大全追剧 | 日韩激情免费视频 | 就要干b | 色综合久久久久综合体桃花网 | 超碰在线观看av.com | 久久久久久草 | 在线观看中文字幕 | 天天综合网~永久入口 | 婷婷在线网 | 激情中文字幕 | 国产精品久久久久久久久久久杏吧 | 69视频永久免费观看 | 国产成人精品一区二区在线观看 | 国产精品福利无圣光在线一区 | 国产精品自产拍在线观看中文 | 精品欧美一区二区在线观看 | www.99在线观看 | 亚洲人xxx| 日韩特黄一级欧美毛片特黄 | av资源在线看 | 在线探花| 国产99久久久久久免费看 | 婷婷丁香九月 | 久草网在线视频 | 精品在线观看国产 | 成年人免费在线观看 | 亚洲综合在线五月 | 久久久精品综合 | 午夜狠狠干 | 日韩精品久久久 | 成人毛片100免费观看 | 日本成人中文字幕在线观看 | 久久艹欧美 | 国产日韩高清在线 | 91夫妻自拍 | 久久久91精品国产一区二区精品 | 深爱婷婷激情 | 亚洲午夜久久久影院 | 久久99操| 韩国在线一区 | 国产精品毛片一区二区 | 精品国产123 | 十八岁以下禁止观看的1000个网站 | 国产精品成人av久久 | 色天天综合久久久久综合片 | 高潮久久久久久久久 | 日韩一区二区在线免费观看 | 精品乱码一区二区三四区 | 中文字幕日韩国产 | 在线观看视频黄色 | 六月婷婷久香在线视频 | 国产18精品乱码免费看 | 中文字幕av播放 | 九九热视频在线免费观看 | 久久视频免费在线 | 婷婷播播网 | 久久久久久欧美二区电影网 | 操操爽| 久久国产精品网站 | 三上悠亚一区二区在线观看 | 欧美精品久久久久a | 久久人人精品 | 久久理论片 | 中文字幕永久 | 欧美成人h版在线观看 | 色综久久 | 日韩 在线观看 | 午夜在线观看一区 | av动图| 免费合欢视频成人app | 国产日本高清 | 天天操天天射天天 | 500部大龄熟乱视频 欧美日本三级 | 黄色不卡av | 欧美俄罗斯性视频 | 69av网| 国产成人精品综合久久久 | 婷婷丁香激情五月 | 日韩免费不卡av | 五月开心六月婷婷 | 国内视频一区二区 | 久久久久久久久久久久久9999 | 97夜夜澡人人爽人人免费 | 97国产大学生情侣酒店的特点 | av免费看电影 | 亚洲色图色 | www.色午夜.com | 97伊人网| 狠狠色丁香久久婷婷综合五月 | 美女网站在线免费观看 | 国产精品专区h在线观看 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 在线不卡中文字幕播放 | 久久精品国产亚洲精品2020 | av一级二级 | av一区二区三区在线观看 | 久久久久久蜜桃一区二区 | 波多野结衣理论片 | 99免费在线播放99久久免费 | 99夜色 | 亚洲国产中文字幕 | 亚洲精品美女久久17c | 日操干| 欧美性大战 | 五月婷在线 | 日韩专区av | 久亚洲 | 亚洲三级在线播放 | 亚洲四虎 | 91成人欧美| 日韩精品一区二区三区丰满 | 国产精品18久久久久久久久久久久 | 日日夜夜狠狠操 | 男女激情网址 | 国产 视频 高清 免费 | 国产精品99久久久久久宅男 | 国产99久久久国产精品免费看 | 免费在线观看成年人视频 | 国产不卡av在线播放 | 在线视频中文字幕一区 | 最新成人av | 久草视频99 | 久久午夜免费视频 | 久综合网| 久久在草| 日韩精品久久久免费观看夜色 | 久久久久久久久久影视 | 中文字幕日本在线观看 | 色噜噜日韩精品欧美一区二区 | 超碰在线免费福利 | 色黄久久久久久 | 国产又粗又硬又爽视频 | 日日夜夜中文字幕 | 久久国产精品99久久久久久老狼 | 久久久久国产精品午夜一区 | 欧美日韩一区二区三区在线观看视频 | 就色干综合 | 中文字幕在 | 国产成人333kkk | 午夜精品福利影院 | 国内丰满少妇猛烈精品播放 | 人人澡超碰碰 | 色久网 | 久久a国产 | 国产精品96久久久久久吹潮 | 一级淫片在线观看 | 久久久久在线 | 奇米影视四色8888 | 91成年人在线观看 | 日韩三级视频在线观看 | 在线观看中文字幕视频 | 五月婷婷久草 | 91免费网 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 国产一区二区免费在线观看 | 亚洲无毛专区 | 久久综合久久88 | 国产精品成人自拍 | 日韩中文字幕在线不卡 | 新版资源中文在线观看 | 99欧美精品 | 国产视| 国产精品久久久久国产精品日日 | 四虎影视成人永久免费观看亚洲欧美 | 午夜av不卡| 久久久久免费精品视频 | 色七七亚洲影院 | a天堂中文在线 | 日本中文一级片 | 欧美国产视频在线 | 日韩av高清 | 国产一区二区精品 | 9999精品| 国产成人1区 | 狠狠色丁香婷婷综合 | 91大神精品视频 | 精品毛片一区二区免费看 | 丁香电影小说免费视频观看 | 欧美一级激情 | 精品国产一区二区三区四区在线观看 | 欧洲色吧 | 久久午夜免费观看 | 欧美日韩二区三区 | 2019天天干夜夜操 | 国产一区免费 | 最近日本韩国中文字幕 | 国产精品久久久久久久久岛 | 五月婷丁香网 | 99久热在线精品视频成人一区 | 一区二区在线不卡 | a在线v| 91精品视频播放 | 国产亚洲午夜高清国产拍精品 | 欧美日韩不卡一区二区三区 | av片中文 | 久久色亚洲 | 亚洲国产97在线精品一区 | 久章草在线 | 我爱av激情网 | av免费在线看网站 | 亚洲综合网站在线观看 | 国产成人高清 | 精品美女在线观看 | 色爱区综合激月婷婷 | 精品国产精品国产偷麻豆 | 亚洲视频h | 亚洲激情在线视频 | 国产中文字幕网 | 中文字幕在线影视资源 | 免费精品视频 | 亚洲天天摸日日摸天天欢 | 国产福利在线不卡 | 操一草 | 成人三级网站在线观看 | 日韩精品91偷拍在线观看 | 久久久久欠精品国产毛片国产毛生 | 丰满少妇对白在线偷拍 | 国产区网址 | 国产 日韩 在线 亚洲 字幕 中文 | 一区二区三区高清在线观看 | 美女黄频在线观看 | 日韩资源在线观看 | 亚洲精品一区二区18漫画 | 国产 视频 久久 | 国产精品九九久久99视频 | 中文字幕精品一区久久久久 | 国产小视频在线免费观看 | 日韩精品久久久免费观看夜色 | 久久视频免费在线观看 | 天天干天天摸 | 日韩成人在线一区二区 | 久久久久久免费毛片精品 | 国产爽妇网 | 91精品视频免费 | 黄色三级免费网址 | 国产日韩精品在线观看 | 精品欧美一区二区精品久久 | 97视频在线免费播放 | 69视频在线播放 | 伊人亚洲综合网 | 999亚洲国产996395 | 福利网址在线观看 | 色狠狠狠 | 国产亚洲精品久久久久秋 | 天天爽天天碰狠狠添 | 日韩av电影免费观看 | av资源网在线播放 | 日韩精品2区 | 久久在线电影 | 99热在线国产精品 | 在线小视频 | 国产精品24小时在线观看 | 欧美日韩一区二区在线观看 | 一区二区三区 中文字幕 | a色视频 | 97操碰 | 97在线观看免费高清完整版在线观看 | av网站在线观看免费 | 一本一本久久aa综合精品 | 久久久国产一区二区三区 | 蜜臀av网址 | 久久久久国产一区二区三区四区 | 日本精品一二区 | 天堂成人在线 | 久久亚洲专区 | 天堂av在线 | 久草视频网 | 久久九九影视 | 久久免费成人精品视频 | 日韩av电影中文字幕在线观看 | 久热电影 | 五月婷婷视频在线 | 99视频在线精品免费观看2 | 91热精品 | 涩av在线 | 久久精品免费 | 99热精品久久 | 国产专区在线 | 夜夜躁狠狠燥 | 亚洲精品乱码久久久久久久久久 | 在线看片91 | 国内精品福利视频 | 久久久久久久久久亚洲精品 | 欧美激情视频一二区 | 欧美日韩一区二区在线观看 | 91精品影视| 在线精品视频在线观看高清 | 99精品视频在线观看视频 | 国产精品久久久久久久久久久久久久 | 久久露脸国产精品 | www.色五月| 久久久久久久av麻豆果冻 | h视频日本 | 蜜臀av一区二区 | 91cn国产在线 | 碰超人人 | 不卡av免费在线观看 | 日本三级久久久 | 毛片网站观看 | 在线播放精品一区二区三区 | 日本aa在线| av免费在线观看1 | 亚洲热久久 | 国产精品久久久久免费观看 | 国产一区视频在线观看免费 | 五月黄色| 欧美午夜久久 | 国产视频91在线 | 久久9999久久免费精品国产 | 最近字幕在线观看第一季 | 精品少妇一区二区三区在线 | 日韩久久一区 | 久久96| 开心激情五月网 | 91新人在线观看 | 日韩激情小视频 | 超碰人人在线观看 | 99精品一区二区三区 | www国产亚洲精品久久网站 | 婷婷六月在线 | 久久久久国产精品一区二区 | 亚洲天天综合网 | av在线播放观看 | 久久久久黄| 国产精品一区久久久久 | 欧洲激情综合 | 狠狠的操你 | 天天操天天曰 | 婷婷六月综合亚洲 | 国产精品九色 | 黄在线免费看 | 日韩三级不卡 | 永久av免费在线观看 | 激情五月综合 | 激情五月在线观看 | 69视频网站 | 成人久久网 | 欧美一级专区免费大片 | 久草在线视频新 | 欧美日韩中 | 日韩免费一二三区 | 中日韩在线视频 | 亚洲日本色 | 久久国产欧美日韩 | 亚洲欧美激情插 | 西西444www大胆高清图片 | 精品国产一区二区三区在线观看 | 欧美国产高清 | 91视频啊啊啊 | 成年人黄色免费视频 | 午夜视频在线观看一区 | 成人久久18免费网站图片 | 97看片网| 综合在线观看色 | 欧美精品中文字幕亚洲专区 | 超碰国产在线 | 国产免码va在线观看免费 | 亚州精品在线视频 | 91看片一区二区三区 | 在线观看中文字幕一区 | 亚洲天天摸日日摸天天欢 | 久久久av电影 | 91cn国产在线 | 日日操日日操 | 久99久精品| 国产精品久久人 | 精品一区二区三区久久 | 精品福利在线 | 色婷婷狠狠五月综合天色拍 | 亚洲国内精品在线 | 狠狠色伊人亚洲综合成人 | 国产精品日韩高清 | 狠狠五月天 | 久久深夜福利免费观看 | 91精品国产成人 | 亚州av一区| 国产精品久久久久久久久免费 | 国产在线看一区 | 蜜桃av人人夜夜澡人人爽 | 久久涩涩网站 | 国产精品原创av片国产免费 | 国产视频在线免费观看 | 亚洲三级毛片 | 99久e精品热线免费 99国产精品久久久久久久久久 | 国产精品免费观看在线 | 西西444www| 久久国产女人 | 天天人人 | 亚洲国产影院av久久久久 | 久久久久久久影院 | 久久理论片 | www.com黄色 | 女人18毛片a级毛片一区二区 | 特级毛片爽www免费版 | 亚洲va韩国va欧美va精四季 | 成人影音av | 激情在线网站 | 成人a在线| 婷婷色网视频在线播放 | 奇米影视777四色米奇影院 | 麻豆影视网 | 久久久久北条麻妃免费看 | 欧美做受69 | 亚洲精品视频网址 | 中文字幕一区二区三区四区在线视频 | 国产精品粉嫩 | 91丨九色丨首页 | 中日韩欧美精彩视频 | 国产精品美女视频网站 | 欧美精品一区在线 | 欧美综合在线视频 | 中文字幕 国产视频 | 亚洲欧美日韩国产一区二区 | 久久久精品小视频 | a在线观看免费视频 | 国产色一区 | 91在线精品视频 | 国产精品久久久久久久久久 | 日韩网站在线免费观看 | www.黄色网.com | 国产精品免费在线观看视频 | 在线成人欧美 | 亚洲天堂首页 | 亚洲另类久久 | 91私密视频| 丁香久久综合 | 丁香六月网 | bbbb操bbbb| 亚洲精品ww | 一本一道波多野毛片中文在线 | 国产精品综合久久久 | 国产网站色 | 久久a热6| 久久99九九99精品 | 午夜精品一二区 | 中文永久免费观看 | 成人理论在线观看 | 免费在线| 久久另类视频 | 久久久福利 | а天堂中文最新一区二区三区 | 97在线观看免费 | 国产黄色网 | 国内精品久久久久久 | 五月天色婷婷丁香 | 国产精品白虎 | 五月婷婷色 | 国产精品久久久久久一区二区三区 | 99亚洲视频 | 深爱婷婷网| 日韩毛片在线免费观看 | 99国产精品免费网站 | 国产精品一区二区三区久久久 | 久久99热国产 | 欧美国产精品久久久久久免费 | 久久综合色播五月 | 天堂av免费在线 | 免费看片亚洲 | 色妞色视频一区二区三区四区 | 国产一区二区不卡视频 | av在线免费网站 | 久久精品香蕉 | 在线观看不卡的av | av丝袜在线 | 婷婷av色综合 | 国产亚洲欧美日韩高清 | 国产精品久久99综合免费观看尤物 | 国产精品久久99精品毛片三a | 高潮毛片无遮挡高清免费 | 国产一级免费观看 | 亚洲黄色一级电影 | 久久新| 久久优 | 日韩电影在线视频 | 中文字幕在线播放av | 在线免费高清一区二区三区 | 精品日本视频 | 久久免费看a级毛毛片 | 午夜精品久久久久久久99婷婷 | 超碰在线人人 | 国产伦精品一区二区三区无广告 | 黄色www免费| 国精产品999国精产品岳 | 国产福利在线免费观看 | 久草在线久| 国产日本在线观看 | 天天艹天天干天天 | 日本 在线 视频 中文 有码 | 久久久久久久久久伊人 | 九九综合久久 | 激情久久一区二区三区 | 国产精华国产精品 | 日韩av免费一区二区 | 色在线视频网 | 欧美男同网站 | 成人黄色国产 | 精品一区二区三区久久久 | 在线观看黄色国产 | 福利电影一区二区 | www视频在线免费观看 | 国产精品日韩久久久久 | 国产精品视频全国免费观看 | 久久久毛片 | 日韩精品免费在线 | 免费精品久久久 | 中日韩在线视频 | 四虎成人在线 | 中文在线中文资源 | 国产美女视频 | 日韩精品久久久久久久电影竹菊 | 午夜精品久久一牛影视 | 国产成人av网站 | 手机在线永久免费观看av片 | 日韩三级精品 | 国产精品mm| 久久这里只有精品视频首页 | 国产成人一区二区三区免费看 | 欧美激情xxxx性bbbb | 久久欧美在线电影 | 香蕉视频久久久 | 国产精品久久久久国产精品日日 | 国产视频一区在线播放 | 97视频免费观看 | 亚洲高清视频在线观看 | 日韩精品不卡在线 | 一级黄色片在线免费观看 | 亚洲高清在线观看视频 | 91亚洲狠狠婷婷综合久久久 | 久久久久欧美精品999 | 99热这里只有精品国产首页 | 欧美午夜剧场 | 欧美日韩精品在线观看视频 | 国产中文字幕视频在线观看 | 成人国产精品久久久久久亚洲 | 91视频久久久久久 | 精品福利视频在线观看 | 欧美一级久久 | 夜夜躁狠狠躁日日躁 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 国内久久视频 | 免费在线观看日韩视频 | 91高清在线 | 亚洲伊人色 | 日韩欧美高清视频在线观看 | 蜜臀久久99精品久久久无需会员 | 亚洲三级黄色 | 狠狠久久婷婷 | 在线精品在线 | 日韩精品中文字幕在线 | 在线观看涩涩 | 97精品在线视频 | 欧美成人黄色 | 久久人人干 | 国产精品美女视频网站 | 亚洲精品无 | 一区二区三区韩国免费中文网站 | 成人a毛片 | 久久国产免费看 | 国产小视频精品 | 成年人视频在线免费观看 | 久久九九网站 | 精品久久久久久国产 | 在线观看亚洲国产精品 | 探花视频免费观看 | 久久视屏网 | 麻豆一区在线观看 | 国产精品美女久久久久久久网站 | 天天爽天天射 | www.久久91 | 亚洲色图色| 日韩精品欧美专区 | 中文字幕国内精品 | 正在播放久久 | 新av在线| 狠狠干综合网 | 99久久精品久久久久久动态片 | 中文字幕久久久精品 | 青青网视频 | 五月天婷婷免费视频 | 97精品在线视频 | 伊人中文网| 久久精品区 | 国产精品情侣视频 | 日韩免费小视频 | 免费瑟瑟网站 | 欧美日韩高清国产 | 婷婷丁香av| 在线成人免费电影 | 国产免费观看久久黄 | 激情在线网址 | 在线观看日本高清mv视频 | 特黄色大片 | 欧美久久成人 | 免费观看第二部31集 | 91麻豆精品国产 | 免费在线观看黄色网 | 精品国产理论片 | 在线观看av国产 | 天天干天天天 | 天天精品视频 | 欧美激情视频一区二区三区免费 | 精品一区二区三区久久久 | 国产精品久久一区二区三区不卡 | 久久久久久久久久久久久9999 | 国产精品视频地址 | 亚洲人毛片 | 国产传媒中文字幕 | 99中文字幕在线观看 | 成人动漫视频在线 | 成人午夜精品久久久久久久3d | 色综合天天做天天爱 | 在线激情小视频 | 成人资源网 | 九色视频网址 | 在线观看视频你懂得 | 免费在线观看黄网站 | 久久免费电影 | 三级动态视频在线观看 | av三级在线免费观看 | 一级性视频 | 欧美成人理伦片 | av一级二级 | 免费高清在线一区 | 亚洲精品综合久久 | 天天干天天碰 | 97超视频 | 久久久黄色| 青青河边草观看完整版高清 | 国产精成人品免费观看 | 欧美亚洲免费在线一区 | 国内视频 | 国产成人精品久久久 | 天天夜操 | 中文乱幕日产无线码1区 | 激情大尺度视频 | 五月天亚洲综合 | 久草热视频 | 日本99精品 | 丁香在线观看完整电影视频 | 精品在线你懂的 | 久久草草热国产精品直播 | 精品国产一区二区三区免费 | av电影在线观看完整版一区二区 | 五月天综合激情 | www.日韩免费| 久草视频免费观 | 99免费看片 | av日韩国产 | 东方av在线免费观看 | 精品久久久久久国产91 | 成人黄色电影在线观看 | 久久久久久久久久久久国产精品 | av中文字幕在线观看网站 | 亚洲国产一区二区精品专区 | 天天天天射 | av福利在线播放 | 在线观看日韩精品 | 日本最新中文字幕 | 狠狠躁天天躁 | 国产激情久久久 | 日韩久久久久久 | 日日躁你夜夜躁你av蜜 | 亚洲va综合va国产va中文 | 久久这里有 | 中文字幕欲求不满 | 日韩有码中文字幕在线 | 精品一二三四五区 | 91麻豆网站| 日韩视频一区二区三区在线播放免费观看 | 91免费高清视频 | 99精品视频在线观看视频 | 黄色电影在线免费观看 | 国产成人久 | a国产精品| 激情综合交 | 日韩欧美在线一区二区 | 久久av中文字幕片 | 黄色毛片网站在线观看 | 一级黄色在线视频 | 一级片视频在线 | 天天爱天天射 | 久久人人爽人人爽人人片 | 四虎国产精品永久在线国在线 | 色婷婷在线视频 | 91网在线观看 | 久久久九色精品国产一区二区三区 | 天天射天天操天天干 | 五月婷婷毛片 | 亚洲春色奇米影视 | 色婷五月天 | 天天操天天艹 | 欧美精品久久久久a | 青青五月天| 九九九热视频 | 成人午夜在线观看 | 992tv在线观看 | 欧美日本一二三 | 四虎天堂 | 看全黄大色黄大片 | 亚洲精品中文字幕在线观看 | 99视频精品视频高清免费 | 日韩精品久久一区二区 | 久要激情网| 国产区久久 | 超碰av在线免费观看 | 日本黄色免费观看 | av在线电影免费观看 | 久久久色| 99这里精品 | 国产免费叼嘿网站免费 | 国产精品三级视频 | 99热.com | 又黄又爽的视频在线观看网站 | 五月婷婷电影网 | 久久视频99| 欧美日韩高清在线一区 | 视频在线观看一区 | 国产精品美女免费视频 | 国产xxxx| 久久免费毛片视频 | 国产资源中文字幕 | 久久99视频 | 91一区一区三区 | 久久久久久久久毛片精品 | 在线黄色免费 | 国产一级片不卡 | 久久久电影| 久综合网 | 欧美aa一级 | 国产 视频 久久 | 亚洲男人天堂2018 | 99精品一区二区三区 | av丝袜在线 | 欧美激情一区不卡 | 96精品在线 | 中文字幕人成乱码在线观看 | 日韩午夜网站 | 人人舔人人爽 | 国产精品一区二区久久精品爱微奶 | 三级在线播放视频 | 99久久久久免费精品国产 | 波多野结衣电影一区二区 | 草免费视频 | 久久这里只有精品视频首页 | 五月婷激情 | 精品成人在线 | 免费进去里的视频 | 最近的中文字幕大全免费版 | 日韩av一区二区在线播放 | 狠狠色丁婷婷日日 | 精品日本视频 | 亚洲第一区在线观看 | 久草爱视频 | 欧美性色xo影院 | 婷婷四房综合激情五月 | 国偷自产中文字幕亚洲手机在线 | 午夜精品久久 | 久99久精品视频免费观看 | 精品国产成人在线 | 天天爱天天草 | 99色在线观看 | 黄网站app在线观看免费视频 | 成人在线网站观看 | 狠狠干狠狠艹 | 亚洲精品视频偷拍 | 国产成人99久久亚洲综合精品 | 一区二区三区精品在线视频 | 中文字幕高清在线 | 天天干一干 | 中文字幕在线观看免费高清完整版 |