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

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

?? sys_loopback_bd_2_in_tx.uc

?? 開發(fā)Inetl IXP2400平臺所必須的硬件診斷和測試程序。該軟件包支持的功能包括CPU基本功能檢測
?? UC
字號:
/* sys_loopback_bd_2_in_tx.uc
 *
 *---------------------------------------------------------------------------
 *                                                                      
 *                  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"
#include "sys_loopback_bd_2.h"

#define TX_ENABLE_MASK			0x1
#define TX_MODE					MSF_CSIX
#define TX_WIDTH				MSF_WIDTH_1x32
#define TX_SINGLE_PHY			MSF_SINGLE_PHY
#define TX_ELEMENTSIZE			MSF_ELEMENTSIZE_128
#define TBUF_ELEM_COUNT			(((1 << (7 - TX_ELEMENTSIZE)) >> 2) * 3)	// Tot. elements
#define TBUF_ADDR_SHF			(6 + TX_ELEMENTSIZE)
#define Tx_ELEMENTSIZE_BYTE		(1 << TBUF_ADDR_SHF)
#define TBUF_CTRL_ADDR_SHF		(3 + TX_ELEMENTSIZE)

#define CSIX_TYPE_UNICAST		1			// CSIX Type = Unicast

#define EXT_HDR					0

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

#define ME_NUMBER_RX			0
#define ME_NUMBER_TX			1
#define RX_THD_NUM				0
#define TX_THD_NUM				0
#define INTER_ME_SIG_NUM		15

#define NEXT_CTX_SIGNAL			&next_ctx_sig
#define SIG_CTX					(0x80 | NEXT_CTX_SIGNAL << 3)
#define BUFFER_ADDR_MASK		0xFFFFFF

.reg sram_addr
.reg temp $temp
.reg MsfAddress MsfAddress0 MsfAddress1
.reg byte_count ring_num mask_qa
.reg TxConfigData0
.reg $TxConfigData0
.reg $TxControlWord0 $TxControlWord1
.reg $scratch_data0 $scratch_data1
.reg @tbuf_element cur_tbuf_elem
.reg buf_addr pkt_buff_addr tbuf tbuf_mask cur_tbuf_addr
.reg @sramDescBase @dramPacketBase @t0
.sig dram_sig msf_sig interthd_sig cap_sig scratch_sig next_ctx_sig
.sig sram_sig
.reg @total_tx

.xfer_order $TxControlWord0 $TxControlWord1
.xfer_order $scratch_data0 $scratch_data1

.addr interthd_sig INTER_ME_SIG_NUM
.set_sig interthd_sig next_ctx_sig

init_common#:
	immed[mask_qa, (BUFFER_ADDR_MASK & MASK_16BIT)]
	immed_w1[mask_qa, ((BUFFER_ADDR_MASK >> 16) & MASK_16BIT)]		// Used to mask out the buffer address on dequeue
	immed[ring_num, RING_0]
	immed[tbuf, RBUF_TBUF]
	immed[tbuf_mask, TBUF_Elem_Count]
	alu[tbuf_mask, tbuf_mask, -, 1]

	br!=ctx[0, wait_for_next_ctx_sig#]

init#:
	immed[@tbuf_element, 0]
	immed[@total_tx, 0]

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

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

.begin
	.reg channel_number
	alu[channel_number, --, B, CHAN_NUMBER, <<SRAM_CHANNEL_NUMBER_FIELD]
	alu[channel_number, channel_number, OR, Q_NUMBER, <<SRAM_Q_ARRAY_NUMBER_FIELD]
	alu[@t0, --, B, channel_number]
.end


//****************************************************
// Configure TX Control
//****************************************************
	immed[MsfAddress, MSF_TX_CONTROL]
	immed[TxConfigData0, (TX_ELEMENTSIZE << 2)]	// put control and data into diff freelist
	immed_w1[TxConfigData0, ((TX_ENABLE_MASK << 8) | (TX_MODE << 6) | (TX_WIDTH << 4) | (TX_SINGLE_PHY << 3) | (0<<1)|(1<<0))]
	alu[$TxConfigData0, --, B, TxConfigData0]
	msf[write, $TxConfigData0, MsfAddress, 0, 1], ctx_swap[msf_sig]

	immed[MsfAddress, MSF_TX_CONTROL]
	immed[TxConfigData0, (TX_ELEMENTSIZE << 2)]	// put control and data into diff freelist
	immed_w1[TxConfigData0, ((TX_ENABLE_MASK << 12) | (TX_ENABLE_MASK << 8) | (TX_MODE << 6) | (TX_WIDTH << 4) | (TX_SINGLE_PHY << 3) | (0<<1)|(1<<0))]
	alu[$TxConfigData0, --, B, TxConfigData0]
	msf[write, $TxConfigData0, MsfAddress, 0, 1], ctx_swap[msf_sig]

		
//**************************************************
// Configure Scratch Ring
//**************************************************
.begin
	.reg $scratch_base $scratch_head $scratch_tail
	.sig scratch_sig1 scratch_sig2 scratch_sig3

//	immed[$scratch_base,0x200]
	alu[$scratch_base, --, B, 0xC, <<28]	// Use ring size of 1024 lw and base 0x0
	immed[$scratch_head,0]
	immed[$scratch_tail,0]

	cap[write,$scratch_base,SCRATCH_RING_BASE_0],sig_done[scratch_sig1]
	cap[write,$scratch_head,SCRATCH_RING_HEAD_0],sig_done[scratch_sig2]
	cap[write,$scratch_tail,SCRATCH_RING_TAIL_0],sig_done[scratch_sig3]
	ctx_arb[scratch_sig1, scratch_sig2, scratch_sig3]
.end


	immed[temp, ((ME_NUMBER_RX << 7) | (RX_THD_NUM << 4) | (INTER_ME_SIG_NUM << 0))]
	alu[--, --, B, temp]
	cap[fast_wr, ALU, interthread_sig]	// to signal Rx ME that Tx has finished its init
	br[wait_for_assignment#]

wait_for_next_ctx_sig#:
	.set_sig next_ctx_sig
	ctx_arb[next_ctx_sig]

wait_for_assignment#:
//	scratch[get, $scratch_data0, ring_num, 0, 1], ctx_swap[scratch_sig]
	scratch[get, $scratch_data0, ring_num, 0, 1], sig_done[scratch_sig]
waiting_for_signal#:
	br_!signal[scratch_sig, waiting_for_signal#]
	alu[--, $scratch_data0, -, 0]
	beq[wait_for_assignment#]		// branch to label if there is no new assignment

	local_csr_wr[SAME_ME_SIGNAL, SIG_CTX]
	alu[buf_addr, mask_qa, AND, $scratch_data0]
	alu[byte_count, --, B, $scratch_data0, >>24]
	alu[cur_tbuf_elem, --, B, @tbuf_element]
	alu[@tbuf_element, @tbuf_element, +, 1]
	alu[--, TBUF_ELEM_COUNT, -, @tbuf_element]
	bne[transmit#]
	alu[@tbuf_element, --, B, 0]


transmit#:
//****************************************************
// Move data to TBUF from DRAM
//****************************************************
.begin
	.reg refcnt pkt_buf_addr
	.set_sig next_ctx_sig

	alu[pkt_buf_addr, --, B, buf_addr, <<5]
	alu[pkt_buf_addr, pkt_buf_addr, +, @dramPacketBase]

	alu[cur_tbuf_addr, tbuf, OR, cur_tbuf_elem, <<TBUF_ADDR_SHF]
	alu[cur_tbuf_addr, --, B, cur_tbuf_addr, <<5]
	alu[cur_tbuf_addr, cur_tbuf_addr, OR, 1, <<4]		// set the overwrite bit for the TBUF addr
	alu[refcnt, --, B, byte_count, >>3]
	alu[--, byte_count, AND, 0x7]
	bne[cont1#]
	alu[refcnt, refcnt, -, 1]			// Calculate the refcnt for indirect ref
cont1#:
//	local_csr_wr[SAME_ME_SIGNAL, SIG_CTX]
	alu[refcnt, --, B, refcnt, <<21]	// Shift to appropriate bit
	alu[refcnt, refcnt, OR, 1, <<25]	// Set the overwrite bit for refcnt
	alu[--, cur_tbuf_addr, OR, refcnt]	// indirect ref
	dram[tbuf_wr, --, pkt_buf_addr, 0, 8], indirect_ref, sig_done[dram_sig]
	ctx_arb[dram_sig/*, next_ctx_sig*/]	
.end


//*******************************************************
// Write the Transmit Control Word with appropriate data
//*******************************************************
.begin 
	.reg MsfAddress
	.set_sig next_ctx_sig

//	local_csr_wr[SAME_ME_SIGNAL, SIG_CTX]
	immed[MsfAddress, TBUF_ELEMENT_CONTROL_V]
	alu[MsfAddress, MsfAddress, OR, cur_tbuf_elem, <<3] //TBUF_CTRL_ADDR_SHF

	immed[temp, CSIX_TYPE_UNICAST]
	alu[$TxControlWord0, temp, OR, byte_count, <<24]		// For Tx Control Word

	immed[temp, (EXT_HDR & MASK_16BIT)]
	immed_w1[temp, ((EXT_HDR >> 16) & MASK_16BIT)]
	alu[$TxControlWord1, --, B, temp]		 // Setting extension header

	msf[write, $TxControlWord0, MsfAddress, 0, 2], sig_done[msf_sig]
	ctx_arb[msf_sig, next_ctx_sig]
/*
	alu[@total_tx, @total_tx, +, 1]
	.begin
		.reg temp_scratch_addr $pkt_number

		alu[$pkt_number, --, B, @total_tx]
		immed[temp_scratch_addr, (SCRATCH_MSG_ADDR + PKTS_TX_OFFSET)]
		scratch[write, $pkt_number, temp_scratch_addr, 0, 1], ctx_swap[scratch_sig]
	.end
*/
.end


//*******************************************************
// Free buffer
//*******************************************************
.begin
	.reg temp cellcount t0

	local_csr_wr[SAME_ME_SIGNAL, SIG_CTX]
	alu[t0, --, B, @t0]
	alu[temp, @sramDescBase, +, buf_addr]
	alu[temp, --, B, temp, >>2]

	immed[cellcount, 0x1c, <<16]		// set OV EOP, and SOP
	
	alu[--, cellcount, OR, 0]
	sram[enqueue,  --, t0, temp], indirect_ref
.end


br[wait_for_assignment#]

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆精品视频在线观看| 国产精品一区在线| 一本色道久久综合亚洲aⅴ蜜桃 | 欧美精品一区二区三区久久久| 日本视频中文字幕一区二区三区 | 蜜臀久久99精品久久久画质超高清 | 国产一区二区三区在线观看免费| 久久精品人人爽人人爽| 一本大道综合伊人精品热热| 天天综合网 天天综合色| 91精品在线麻豆| 福利电影一区二区三区| 中文字幕永久在线不卡| 欧美视频一区在线| 国产乱子轮精品视频| 亚洲综合男人的天堂| 日韩免费看的电影| 欧美日本一区二区三区四区| 日韩影院免费视频| 亚洲欧洲国产日韩| 欧美一级高清片| 岛国精品一区二区| 狠狠色丁香久久婷婷综| 亚洲一区二区美女| 中文字幕制服丝袜成人av | 一本大道久久a久久精品综合| 成熟亚洲日本毛茸茸凸凹| 成人午夜av电影| 久久综合99re88久久爱| 欧美日韩免费不卡视频一区二区三区| 欧美亚洲丝袜传媒另类| 伊人色综合久久天天| 欧美视频完全免费看| 国产69精品一区二区亚洲孕妇| 国产成人啪免费观看软件| 欧美午夜宅男影院| 欧美精品一区二区三区在线播放| 欧美变态口味重另类| 国产精品卡一卡二卡三| wwwwww.欧美系列| 精品成人一区二区| 精品捆绑美女sm三区| 精品99久久久久久| 精品久久久三级丝袜| 亚洲少妇30p| 国产精品国产a级| 国产精品免费av| 亚洲欧洲制服丝袜| 亚洲成av人片在www色猫咪| 亚洲一二三专区| 日韩和欧美一区二区三区| 精品一区二区三区不卡 | 欧美日韩免费在线视频| 91精品国产综合久久国产大片| 欧美高清www午色夜在线视频| 欧美va亚洲va香蕉在线| 国产丶欧美丶日本不卡视频| 成人av免费观看| 91麻豆免费在线观看| 欧美在线不卡视频| 精品国产一区二区三区久久影院 | 欧美三级中文字| 欧美一区二区视频观看视频| 国产亚洲精品精华液| 自拍av一区二区三区| 午夜成人免费电影| 国产一区二区视频在线播放| 日韩欧美一区电影| 欧美日产在线观看| 国产网站一区二区三区| 秋霞影院一区二区| 成人国产精品免费观看视频| 日韩欧美国产一区在线观看| 国产精品乱子久久久久| 视频一区视频二区中文字幕| 99麻豆久久久国产精品免费| 日韩一区二区在线观看| 亚洲五码中文字幕| 成人蜜臀av电影| 欧美精品一区二区三| 日本欧美一区二区三区| 欧美午夜精品一区| 色婷婷一区二区三区四区| 国产色综合一区| 久久国内精品自在自线400部| 欧美这里有精品| 午夜免费欧美电影| ww亚洲ww在线观看国产| 日韩成人精品在线| 日韩欧美一级二级三级| 成人一区二区视频| 亚洲欧美在线aaa| 成人精品免费看| 国产精品久久久久久久久免费樱桃| 国产一区二区伦理片| 精品国产乱码久久久久久老虎 | 精品视频一区二区不卡| 日本一区二区三区电影| 成人午夜私人影院| 中文子幕无线码一区tr| 99综合电影在线视频| 亚洲人吸女人奶水| 欧美日韩在线观看一区二区 | 天天做天天摸天天爽国产一区 | 成人小视频在线| 一区二区三区高清| 久久66热re国产| 欧美r级电影在线观看| 风间由美一区二区av101| 亚洲欧美在线aaa| 91精品国产综合久久久久久久| 韩国三级中文字幕hd久久精品| 国产精品网站导航| 在线一区二区视频| 久久国产免费看| 日韩毛片精品高清免费| 制服丝袜亚洲色图| 高清免费成人av| 日韩成人午夜精品| 五月天精品一区二区三区| 日韩午夜精品视频| 91国产免费观看| 91精品在线观看入口| 成人国产精品免费观看动漫| av亚洲精华国产精华精| 国产在线精品免费| 亚洲国产成人精品视频| 国产精品毛片久久久久久| 欧美xxx久久| 欧美巨大另类极品videosbest| www.亚洲国产| 成人av在线资源网站| 国产传媒日韩欧美成人| 青草av.久久免费一区| 一区二区三区日韩精品视频| 国产精品久久久久毛片软件| 欧美变态口味重另类| 91精品国产高清一区二区三区蜜臀| 波多野结衣在线一区| 国产一区二区三区四区在线观看| 日韩成人午夜精品| 日本一道高清亚洲日美韩| 亚洲一区二区三区四区在线免费观看 | 午夜伊人狠狠久久| 亚洲va国产天堂va久久en| 亚洲精品福利视频网站| 一区二区三区在线观看动漫| 亚洲欧美一区二区不卡| 亚洲午夜羞羞片| 久久成人免费电影| 国产成人无遮挡在线视频| 国产999精品久久| 色婷婷av一区二区三区软件 | 国产成人免费9x9x人网站视频| 成人在线综合网| 欧亚一区二区三区| 国产欧美日韩中文久久| 久久新电视剧免费观看| 亚洲精品欧美激情| 日韩av午夜在线观看| 国产精品中文字幕日韩精品| k8久久久一区二区三区| 欧美日韩成人在线| 国产欧美日韩精品一区| 亚洲国产婷婷综合在线精品| 久久99精品久久久久| 99国产精品一区| 久久这里只精品最新地址| 亚洲激情综合网| 成人午夜激情片| 欧美电影精品一区二区| 亚洲国产日日夜夜| 成年人国产精品| 精品人伦一区二区色婷婷| 婷婷成人激情在线网| 色狠狠av一区二区三区| 日本一二三不卡| 风流少妇一区二区| 日韩一区二区在线看片| 亚洲国产精品综合小说图片区| 国产99久久久国产精品潘金网站| 欧美剧在线免费观看网站| 亚洲精品国产无天堂网2021| 高清成人免费视频| 欧美国产1区2区| 成人精品国产一区二区4080| 久久色在线观看| 国产精品99久久久| 国产精品麻豆99久久久久久| 春色校园综合激情亚洲| 国产精品久久久久aaaa| av在线不卡网| 亚洲免费高清视频在线| 日本大香伊一区二区三区| 一区二区三区加勒比av| 欧美色成人综合| 日韩电影一二三区| 久久久亚洲国产美女国产盗摄 | 精品成人一区二区三区四区| 中文字幕欧美国产|