亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sys_loopback_bw_in_rx.uc

?? 開發(fā)Inetl IXP2400平臺所必須的硬件診斷和測試程序。該軟件包支持的功能包括CPU基本功能檢測
?? UC
字號:
/* sys_loopback_in_rx.uc
 *
 * This file receives POS packets and stores them in DRAM. Once it receives
 * a packet, it writes the DRAM address to scratch and sends a signal to
 * the transmit ME through an interthread signal. It than checks the number
 * of received packets. If the expected number of packets is reached, it
 * signals the XScale through the mailbox register
 *
 *---------------------------------------------------------------------------
 *                                                                      
 *                  I N T E L   P R O P R I E T A R Y                   
 *                                                                      
 *     COPYRIGHT (c)  2002 BY  INTEL  CORPORATION.  ALL RIGHTS          
 *     RESERVED.   NO  PART  OF THIS PROGRAM  OR  PUBLICATION  MAY      
 *     BE  REPRODUCED,   TRANSMITTED,   TRANSCRIBED,   STORED  IN  A    
 *     RETRIEVAL SYSTEM, OR TRANSLATED INTO ANY LANGUAGE OR COMPUTER    
 *     LANGUAGE IN ANY FORM OR BY ANY MEANS, ELECTRONIC, MECHANICAL,    
 *     MAGNETIC,  OPTICAL,  CHEMICAL, MANUAL, OR OTHERWISE,  WITHOUT    
 *     THE PRIOR WRITTEN PERMISSION OF :                                
 *                                                                      
 *                        INTEL  CORPORATION                            
 *                                                                     
 *                     2200 MISSION COLLEGE BLVD                        
 *                                                                      
 *               SANTA  CLARA,  CALIFORNIA  95052-8119                  
 *                                                                      
 *---------------------------------------------------------------------------
 *
 *
 *  system: IXDP2400
 *  subsystem: DIAG
 *  author: dalsraja, April, 2002
 *  revisions: dalsraja, May 8, 2002
 * 
 * 
 * --------------------------------------------------------------------------
 */

#include "common_uc.h"

#define RX_SINGLE_PHY					MSF_SINGLE_PHY
#define RX_WIDTH						MSF_WIDTH_4x8
#define RX_ENABLE_MASK					0xF
#define RX_MODE							MSF_POS_UTOPIA
#define RX_ELEMENTSIZE					MSF_ELEMENTSIZE_128
#define RBUF_ELEM_COUNT					(1 << (7 - RX_ELEMENTSIZE))
#define RBUF_ADDR_SHF					(6 + RX_ELEMENTSIZE)
#define RX_ELEMENTSIZE_BYTE				(1 << RBUF_ADDR_SHF)

#define ME_NUMBER_RX					0
#define ME_NUMBER_TX					1
#define TX_THD_NUM						0
#define INTERTHD_SIG_NUM				15

#define RX_TRANSFER_THREAD				&$TransferReg00
#define RX_SIGNAL_THREAD				&rx_sig

#define SRAM_DESC_BASE					0x200000		// 2 Meg onwards
#define DRAM_PCKT_BASE					0x1000000		// 16 Meg onwards

.reg cur_me cur_ctx ThreadFreelist_Addr
.reg ring_num packet_size pkt_buff_addr bdptr
.reg $TransferReg00 $TransferReg01 $scratch_data
.reg t0 packet_count
.reg RxThreadList sopeop sopbit eopbit bytecnt elem rx_channel_num
.reg RxConfigData
.reg rbuf
.reg sramDescBase dramPacketBase 
.reg mask_qa error
.reg RxUPControl0
.reg $sr0 $sr1 $sr2 $sr3
.sig msf_sig scratch_sig dram_sig sram_sig
.sig rx_sig interthd_sig
.xfer_order $TransferReg00 $TransferReg01
.xfer_order $sr0 $sr1 $sr2 $sr3

.addr interthd_sig INTERTHD_SIG_NUM
.set $TransferReg00
.set_sig interthd_sig

	ctx_arb[interthd_sig]

	br=ctx[0, Init_Value#]
	br=ctx[1, Init_Value#]
	br=ctx[2, Init_Value#]
	br=ctx[3, Init_Value#]
	ctx_arb[kill]

Init_Value#:
	.local temp
	local_csr_rd[ACTIVE_CTX_STS]
	immed[temp, 0]
	alu[cur_me, MASK_4BIT, AND, temp, >>SHIFT_3]	// Extract the current ME number
	alu[cur_ctx, MASK_3BIT, AND, temp]				// Extract the current context number
	.endlocal

	immed[packet_count, 0]
	immed[packet_size, 0]
	immed[pkt_buff_addr, 0]
	immed[bdptr, 0]
	alu[ring_num, --, B, RING_0, <<2]			// ring number in a register

.local channel_number
	alu[channel_number, --, B, CHAN_NUMBER, <<SRAM_CHANNEL_NUMBER_FIELD]
	alu[t0, channel_number, OR, Q_NUMBER, <<SRAM_Q_ARRAY_NUMBER_FIELD]
.endlocal

	immed[dramPacketBase, (DRAM_PCKT_BASE & MASK_16BIT)]
	immed_w1[dramPacketBase, ((DRAM_PCKT_BASE >> 16) & MASK_16BIT)]

	immed[sramDescBase, (SRAM_DESC_BASE & MASK_16BIT)]
	immed_w1[sramDescBase, ((SRAM_DESC_BASE >> 16) & MASK_16BIT)]

	immed[RBuf, RBUF_TBUF ]
	
	.local RxThreadList
	immed[RxThreadList, (RX_SIGNAL_THREAD << 12)]
	alu[RxThreadList, RxThreadList, OR, cur_me, <<7]
	alu[RxThreadList, RxThreadList, OR, cur_ctx, <<4]
	alu[RxConfigData, RxThreadList,  OR , RX_TRANSFER_THREAD]
	alu[RxConfigData, --,  B, RxConfigData, <<16]
	.endlocal

	.if (cur_ctx == 0)
		immed[ThreadFreelist_Addr, RX_THREAD_FREELIST_0]
		br[cont_init#]
	.elif (cur_ctx == 1)
		immed[ThreadFreelist_Addr, RX_THREAD_FREELIST_1]
	.elif (cur_ctx == 2)
		immed[ThreadFreelist_Addr, RX_THREAD_FREELIST_2]
	.else
		immed[ThreadFreelist_Addr, RX_THREAD_FREELIST_3]
	.endif

	br[ReceivePacket#]


cont_init#:
//****************************************************
// Configure RX/TX Control
//****************************************************
.local RxConfigData0 $RxConfigData0 MsfAddress
	immed[MsfAddress, MSF_RX_CONTROL]
	immed[RxConfigData0, ((0 << 9) | (RX_ELEMENTSIZE << 2))]
	immed_w1[RxConfigData0, ((RX_MODE << 6) | (RX_WIDTH << 4) | (RX_SINGLE_PHY << 3) | (0<<1)|(1<<0))]
	alu[$RxConfigData0, --, B, RxConfigData0]
	msf[write, $RxConfigData0, MsfAddress, 0, 1], ctx_swap[msf_sig]
.endlocal


//******************************************************
// Initialize RBUF Freelist to add elements to the list
//******************************************************
.begin
	.reg temp_reg temp

	immed[temp_reg, 0]

init_RBUF#:
	alu[temp, --, B, temp_reg, <<16]
	msf[fast_wr, --, temp, RBUF_ELEMENT_DONE]
	alu[temp_reg, temp_reg, +, 1]
	alu[--, RBUF_ELEM_COUNT, -, temp_reg]
	bne[init_RBUF#]
.end


//******************************************************
// Configure RX UP Control CSRs 
//******************************************************
.local RxUPControl0 $RxConfigData0 MsfAddress
	immed[RxUPControl0, (UP_CTRL_PP_MODE | UP_CTRL_CP_MODE | UP_CTRL_PARITY | UP_CTRL_CELLSIZE | UP_CTRL_DRTIME)]
	immed[MsfAddress, RX_UP_CONTROL_0]
	alu[$RxConfigData0, --, B, RxUPControl0]
	msf[write, $RxConfigData0, MsfAddress, 0, 1], ctx_swap[msf_sig]
	immed[MsfAddress, RX_UP_CONTROL_1]
	alu[$RxConfigData0, --, B, RxUPControl0]
	msf[write, $RxConfigData0, MsfAddress, 0, 1], ctx_swap[msf_sig]
	immed[MsfAddress, RX_UP_CONTROL_2]
	alu[$RxConfigData0, --, B, RxUPControl0]
	msf[write, $RxConfigData0, MsfAddress, 0, 1], ctx_swap[msf_sig]
	immed[MsfAddress, RX_UP_CONTROL_3]
	alu[$RxConfigData0, --, B, RxUPControl0]
	msf[write, $RxConfigData0, MsfAddress, 0, 1], ctx_swap[msf_sig]
.endlocal


//****************************************************
// Configure RX/TX Control
//****************************************************
.local RxConfigData0 $RxConfigData0 MsfAddress
	immed[MsfAddress, MSF_RX_CONTROL]
	immed[RxConfigData0, ((0 << 9) | (RX_ELEMENTSIZE << 2))]
	immed_w1[RxConfigData0, ((RX_ENABLE_MASK << 12) | (RX_MODE << 6) | (RX_WIDTH << 4) | (RX_SINGLE_PHY << 3) | (0<<1)|(1<<0))]
	alu[$RxConfigData0, --, B, RxConfigData0]
	msf[write, $RxConfigData0, MsfAddress, 0, 1], ctx_swap[msf_sig]
.endlocal


//****************************************************
// Configure freelist
//****************************************************
.begin
	.reg sw0 sw1 sw2 sw3 cellcount freelist sr0
	.reg $s0 $s1 $s2
	.reg tmp spin
	.sig qa_init addr
	.xfer_order $s0 $s1 $s2

	alu[tmp, --, B, CHAN_NUMBER, <<SRAM_CHANNEL_NUMBER_FIELD]
	alu[tmp, tmp, OR, sramDescBase]
	immed[$s0, 0]
	immed[$s1, 0]
	immed[$s2, 0]
	
	sram[write, $s0, tmp, 0, 3], ctx_swap[qa_init]
	
	alu[tmp, --, B, sramDescBase]
	alu[tmp, --, B, tmp, >>2]
	sram[rd_qdesc_head, $sr0, t0, tmp, 2], ctx_swap[qa_init]
	sram[rd_qdesc_other, --, t0, tmp]

	immed[freelist, 20]
//	immed[freelist, (FREELIST_SIZE & MASK_16BIT)]
//	immed_w1[freelist, ((FREELIST_SIZE >> 16) & MASK_16BIT)]
	 
	immed[cellcount, 0x1c, <<16]		//set cell count to 1, set OV EOP, and SOP
	
addfreelist#:
	alu[--, cellcount, OR, 0]
	sram[enqueue,  --, t0, tmp], indirect_ref
	alu[tmp, tmp, +, 1]
	alu[freelist, freelist, -, 1]
	bne[addfreelist#]
.end


//*****************************************************************
//  Write to MAILBOX0 register to signal completion to XScale code
//*****************************************************************
#ifndef WORKBENCH_SIM
.begin
	.reg pci_base pci_offset temp
	.reg $pci_rw
	.sig pci_sig

	immed[pci_base, (PCI_LOCAL_CSR_BASE & 0xFFFF)]
	immed_w1[pci_base, (PCI_LOCAL_CSR_BASE >> 16)]
	immed[pci_offset, MAILBOX0_OFFSET]
	immed[temp, INIT_COMPLETE]
	alu[$pci_rw, --, B, temp]
	pci[write, $pci_rw, pci_base, pci_offset, 1], ctx_swap[pci_sig]
.end
#endif

	local_csr_wr[SAME_ME_SIGNAL, ((INTERTHD_SIG_NUM << 3) | 1)]
	local_csr_wr[SAME_ME_SIGNAL, ((INTERTHD_SIG_NUM << 3) | 2)]
	local_csr_wr[SAME_ME_SIGNAL, ((INTERTHD_SIG_NUM << 3) | 3)]


//********************************************************
// Start of Receive	
//********************************************************
ReceivePacket#:
	.set_sig rx_sig
	msf[fast_wr, --, ThreadFreelist_Addr, RxConfigData] // add thread to freelist
	ctx_arb[rx_sig]
	

// RSW should be in xfer register
// Transfer RBUF data to sram_in transfer registers
//***************************************
// Extract RSW
//****************************************
RSW#:
	alu_shf[elem, --, B, $TransferReg00, >>24]		// Get element number
	alu[sopbit, 0x1, AND, $TransferReg00, >>15]		// Check SOP
	alu[eopbit, 0x1, AND, $TransferReg00, >>14]		// Check EOP
	alu[bytecnt, 0xFF, AND, $TransferReg00, >>16]	// Extract byte count
	alu[rx_channel_num, 0xf, AND, $TransferReg00]	// Extract channel

.begin
	.reg cur_rbuf_addr refcnt $scratch_data0 $scratch_data1
	.reg rel freebuffer
	.xfer_order $scratch_data0 $scratch_data1
	.sig sig_free_buf

	.if (packet_size == 0)
		sram[dequeue, $sr0, t0, 0], ctx_swap[sig_free_buf]
		alu[freebuffer, --, B, $sr0, <<2]		// Shift 2 as address obtained is longword address
		alu[bdptr, freebuffer, -, sramDescBase]
		alu[rel, --, B, bdptr, <<6]
		alu[pkt_buff_addr, dramPacketBase, +, rel]	
	.endif


//*********************************
// Transfer from ME to DRAM
//*********************************	
	alu[cur_rbuf_addr, rbuf, OR, elem, <<RBUF_ADDR_SHF]
	alu[cur_rbuf_addr, --, B, cur_rbuf_addr, <<5]
	alu[cur_rbuf_addr, cur_rbuf_addr, OR, 1, <<4]	// set the overwrite bit for the RBUF addr
	alu[refcnt, --, B, bytecnt, >>3]
	alu[--, bytecnt, AND, 0x7]
	beq[cont1#]
	alu[refcnt, refcnt, +, 1]			// Calculate the refcnt for indirect ref

cont1#:
	.if (refcnt > 15)		// This is assuming that the RBUF Element are always 128 bytes
		immed[refcnt, 15]
	.endif

	alu[refcnt, --, B, refcnt, <<21]	// Shift to appropriate bit
	alu[refcnt, refcnt, OR, 1, <<25]	// Set the overwrite bit for refcnt
	alu[--, cur_rbuf_addr, OR, refcnt]	// indirect ref

	dram[rbuf_rd, --, pkt_buff_addr, packet_size, 8], indirect_ref, sig_done[dram_sig]

//	alu[$scratch_data0, --, B, dramPacketBase]
//	alu[$scratch_data1, --, B, bytecnt]
//	scratch[write, $scratch_data0, scratch_addr, 0, 2], sig_done[scratch_sig]

	ctx_arb[dram_sig]
.end


//**************************************************************
//  Free up Element by writing to RBUF_ELEMENT_DONE{Channel}
//**************************************************************
	.local temp
	alu[temp, --, B, elem, <<16]
	msf[fast_wr, --, temp, RBUF_ELEMENT_DONE]
	.endlocal

	alu[packet_size, packet_size, +, bytecnt]
	.if (eopbit == 0)
		br[next_packet#]
	.endif

	.local temp
	alu[temp, bdptr, OR, packet_size, <<16]
	alu[$scratch_data, temp, OR, rx_channel_num, <<24]
	.endlocal

fill#:
	br_inp_state[SCR_Ring0_Full, fill#]
	scratch[put, $scratch_data, ring_num, 0, 1], ctx_swap[scratch_sig]
	immed[packet_size, 0]
	
next_packet#:
	br[ReceivePacket#]		// loop around and wait for next packet

/*
.begin
	.reg scratch_add $s_xfer
	.sig scratch_sig

	alu[packet_count, packet_count, +, 1]
	immed[scratch_add, 0x400]
	alu[$s_xfer, --, B, packet_count]
	scratch[write, $s_xfer, scratch_add, 0, 1], ctx_swap[scratch_sig]
.end
*/

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产色产综合色产在线视频| 亚洲精品乱码久久久久久日本蜜臀| 欧美色综合网站| 色综合夜色一区| 色综合久久久久| 日本精品视频一区二区| 欧洲日韩一区二区三区| 在线观看国产精品网站| 欧美久久一区二区| 日韩一本二本av| 日韩精品一区二区三区在线播放| 日韩欧美电影在线| 精品免费国产一区二区三区四区| 久久夜色精品国产欧美乱极品| 欧美一级在线观看| 精品国产成人在线影院| 久久亚洲精品小早川怜子| 中文字幕欧美激情| 亚洲天堂中文字幕| 亚洲图片有声小说| 18涩涩午夜精品.www| 国产亚洲美州欧州综合国| 国产999精品久久| 视频一区中文字幕国产| 久久国产精品99精品国产| 狠狠狠色丁香婷婷综合久久五月| 高潮精品一区videoshd| 色综合视频在线观看| 欧美精品少妇一区二区三区| 日韩欧美高清dvd碟片| 国产日韩精品久久久| 亚洲欧美在线另类| 日本强好片久久久久久aaa| 国产精品自拍在线| 91久久国产最好的精华液| 91精品国产91久久久久久最新毛片| 精品国产亚洲在线| 亚洲欧美区自拍先锋| 午夜不卡av免费| 国产激情视频一区二区三区欧美| youjizz国产精品| 精品视频在线视频| 久久综合久久综合久久综合| 亚洲欧美一区二区三区极速播放 | 日本二三区不卡| 欧美日本韩国一区| 99热精品一区二区| 欧美男生操女生| 国产拍揄自揄精品视频麻豆| 亚洲另类在线视频| 韩国成人福利片在线播放| 91视频xxxx| 精品欧美一区二区久久| 一区二区三区欧美在线观看| 精品一区二区免费| 欧美最猛性xxxxx直播| 欧美videos大乳护士334| 最新国产成人在线观看| 精品在线免费视频| 欧美日韩黄色一区二区| 中文字幕不卡在线播放| 免费在线观看精品| 色94色欧美sute亚洲线路一久| 26uuu精品一区二区在线观看| 亚洲一区二区三区四区在线 | caoporn国产一区二区| 69久久夜色精品国产69蝌蚪网| 国产午夜精品福利| 色婷婷综合久久久久中文一区二区| 午夜精品成人在线| 成人激情免费网站| 精品国产免费一区二区三区四区 | 亚洲色图20p| 国产麻豆一精品一av一免费 | 久久麻豆一区二区| 午夜久久福利影院| 99免费精品在线观看| 久久免费偷拍视频| 青草av.久久免费一区| 欧美手机在线视频| 日韩码欧中文字| 不卡一区在线观看| 欧美精品一区二区蜜臀亚洲| 天堂av在线一区| 91麻豆产精品久久久久久 | 久久精品噜噜噜成人av农村| 色婷婷综合视频在线观看| 亚洲欧洲精品成人久久奇米网| 国产乱子轮精品视频| 欧美日产国产精品| 亚洲成人一二三| 欧美少妇xxx| 亚洲午夜电影在线| 欧美丝袜第三区| 亚洲国产精品久久人人爱蜜臀 | 成人av网站免费观看| 久久综合九色综合欧美就去吻| 韩国av一区二区三区| 欧美一区二区免费观在线| 亚洲综合网站在线观看| 日本乱人伦aⅴ精品| 国产精品伦理一区二区| 国产福利一区二区三区在线视频| 精品国产免费人成电影在线观看四季 | 久久精品日产第一区二区三区高清版 | 成人美女视频在线观看18| 国产亚洲精品资源在线26u| 国产乱码精品1区2区3区| 久久久亚洲综合| 狠狠色狠狠色综合| 欧美一级免费观看| 日本欧美肥老太交大片| 欧美一区二区三区男人的天堂| 亚洲综合清纯丝袜自拍| 97se亚洲国产综合自在线观| 亚洲三级在线看| 色老综合老女人久久久| 亚洲精品视频一区| 色香蕉成人二区免费| 亚洲免费看黄网站| 欧美亚洲丝袜传媒另类| 视频一区在线播放| 精品电影一区二区| 夫妻av一区二区| 亚洲免费观看高清完整版在线| 在线一区二区视频| 性感美女久久精品| 日韩欧美在线影院| 成人高清在线视频| 亚洲福利电影网| 日韩欧美激情一区| 成人激情免费视频| 亚洲成av人**亚洲成av**| 欧美一级二级三级乱码| 国产成人av一区二区三区在线| 亚洲乱码中文字幕综合| 欧美高清视频www夜色资源网| 国产综合一区二区| 自拍偷拍国产亚洲| 欧美一区二区精品久久911| 国产一区二区不卡在线 | 97精品国产97久久久久久久久久久久| 一级女性全黄久久生活片免费| 欧美日本不卡视频| 国产不卡视频在线播放| 亚洲图片有声小说| 久久久久久久性| 91国产成人在线| 国产在线观看一区二区| 亚洲免费看黄网站| 精品盗摄一区二区三区| 在线观看视频一区二区欧美日韩| 理论片日本一区| 一区二区在线看| 久久久www成人免费无遮挡大片| 91年精品国产| 精品在线播放免费| 亚洲一级二级三级在线免费观看| 久久综合色婷婷| 欧美日韩不卡视频| 95精品视频在线| 国产在线不卡一卡二卡三卡四卡| 亚洲综合在线电影| 国产欧美一区视频| 欧美美女一区二区| 99国产精品99久久久久久| 久久99久久久久久久久久久| 亚洲激情在线播放| 中文在线一区二区| 91麻豆精品国产91久久久久久久久| 99re这里只有精品6| 久久精品国产久精国产| 一区二区三区欧美| 国产精品网站在线观看| 日韩欧美美女一区二区三区| 欧美在线观看一二区| 成人精品电影在线观看| 蜜桃视频在线观看一区| 亚洲综合清纯丝袜自拍| 最新欧美精品一区二区三区| 欧美精品一区二区三区蜜桃| 欧美肥大bbwbbw高潮| 一本色道久久综合亚洲aⅴ蜜桃 | 在线播放日韩导航| 日本欧洲一区二区| 久久色在线视频| 午夜国产不卡在线观看视频| 亚洲嫩草精品久久| 国产精品全国免费观看高清| 精品国产一二三| 日韩一区二区三区av| 欧美欧美午夜aⅴ在线观看| 91黄色激情网站| 色综合久久综合网97色综合 | 91精品免费在线观看| 欧美日韩中文国产| 欧美色老头old∨ideo| 欧美中文字幕久久| 91国产免费观看| 欧美亚洲丝袜传媒另类|