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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? line_rate_bw_eg_tx.uc

?? 開發Inetl IXP2400平臺所必須的硬件診斷和測試程序。該軟件包支持的功能包括CPU基本功能檢測
?? UC
字號:
/* line_rate_bw_in_rx.uc
 *
 *
 *
 * NOTE: THIS IS NOT A PERFORMANCE BENCHMARK!!!! IT IS JUST TO CHECK IF THE
 *       HARDWARE IS ABLE TO HANDLE DATA AT THE LINERATE THAT IS BEING
 *       PUMPED INTO THE SYSTEM
 *
 *---------------------------------------------------------------------------
 *                                                                      
 *                  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, November 11, 2002
 *  revisions:
 * 
 * 
 * --------------------------------------------------------------------------
 */

#include "line_rate_bw.h"

#define BUFFER_ADDR_MASK				0xFFFFFF

#define NEXT_CTX_SIGNAL_NUM				EG_SAME_ME_SIG_NUM
#define NEXT_CTX_SIG_DATA				((1 << 7) | (NEXT_CTX_SIGNAL_NUM << 3))

.reg cur_me cur_ctx
.reg ring_num
.reg TBuf_Base @tbuf_element
.reg sram_channel_number t0
.reg @sramDescBase @dramPacketBase @mask_qa
.reg buf_addr buf_offset byte_count
.reg base_element_for_port cur_tbuf_elem
.reg tbuf_count @tx_count TxSequenceAddr
.reg $TxControlWord0 $TxControlWord1

.sig scratch_sig sram_sig dram_sig msf_sig
.sig next_ctx_sig inter_me_sig

.xfer_order $TxControlWord0 $TxControlWord1

.addr next_ctx_sig EG_SAME_ME_SIG_NUM
.addr inter_me_sig EG_INTER_ME_SIG_NUM


// *****************************************
// Get current ME and ctx info
// *****************************************
.begin
	.reg temp
	local_csr_rd[ACTIVE_CTX_STS]
	immed[temp, 0]
	alu[cur_me, 0x1F, AND, temp, >>3]	// Extract the current ME number
	alu[cur_ctx, 0x7, AND, temp]		// Extract the current context number
.end

	.if (cur_me > 4)
		ctx_arb[kill]
	.endif

	immed[TxSequenceAddr, TX_SEQUENCE_0]
	alu[TxSequenceAddr, TxSequenceAddr, OR, cur_me, <<2]

init_common#:
.local jump_offset
	alu[jump_offset, --, B, cur_me, <<2]
	jump[jump_offset, port0#], targets[port0#, port1#, port2#, port3#]
.endlocal

port0#:
	alu[ring_num, --, B, RING_0, <<2]
	immed[base_element_for_port, ((EG_TBUF_ELEM_COUNT / NUMBER_OF_PORTS) * PORT_0)]
	br[me_specific_init_done#]
	nop

port1#:
	alu[ring_num, --, B, RING_1, <<2]
	immed[base_element_for_port, ((EG_TBUF_ELEM_COUNT / NUMBER_OF_PORTS) * PORT_1)]
	br[me_specific_init_done#]
	nop

port2#:
	alu[ring_num, --, B, RING_2, <<2]
	immed[base_element_for_port, ((EG_TBUF_ELEM_COUNT / NUMBER_OF_PORTS) * PORT_2)]
	br[me_specific_init_done#]
	nop

port3#:
	alu[ring_num, --, B, RING_3, <<2]
	immed[base_element_for_port, ((EG_TBUF_ELEM_COUNT / NUMBER_OF_PORTS) * PORT_3)]
	br[me_specific_init_done#]


me_specific_init_done#:
	immed[TBuf_Base, RBUF_TBUF]

	alu[sram_channel_number, --, B, CHAN_NUMBER, <<SRAM_CHANNEL_NUMBER_FIELD]
	alu[t0, sram_channel_number, OR, Q_NUMBER, <<SRAM_Q_ARRAY_NUMBER_FIELD]

	ctx_arb[voluntary]
	br!=ctx[0, wait_for_next_ctx_sig#]

init#:
	immed[@tbuf_element, 0]

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

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

	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

	.set_sig inter_me_sig
	ctx_arb[inter_me_sig]
	br[wake_up_next_thread_after_init#]


wait_for_next_ctx_sig#:
	.set_sig next_ctx_sig
	ctx_arb[next_ctx_sig]

wake_up_next_thread_after_init#:
	br=ctx[7, wait_for_assignment#]
	local_csr_wr[SAME_ME_SIGNAL, NEXT_CTX_SIG_DATA]

.begin
	.reg $scratch_data
// Get new assignment, i.e. the buf addr from scratch ring
wait_for_assignment#:
	scratch[get, $scratch_data, ring_num, 0, 1], ctx_swap[scratch_sig]
	alu[--, $scratch_data, -, 0]
	beq[wait_for_assignment#]		// branch to label if there is no new assignment
	alu[buf_addr, --, B, $scratch_data]
.end

.begin
	.reg $sram_data
	sram[read, $sram_data, buf_addr, sram_channel_number, 1], sig_done[sram_sig]
	alu[cur_tbuf_elem, base_element_for_port, +, @tbuf_element]
	alu[tbuf_count, --, B, @tbuf_element]
	alu[@tbuf_element, @tbuf_element, +, 1]
	alu[--, EG_TBUF_ELEM_COUNT_PER_PORT, -, @tbuf_element]
	bne[wait_for_sram_sig#]
	alu[@tbuf_element, --, B, 0]
/*	sram[read, $sram_data, buf_addr, sram_channel_number, 1], sig_done[sram_sig]
	alu[cur_tbuf_elem, base_element_for_port, +, @tbuf_element]
	alu[tbuf_count, --, B, @tx_count]
	alu[@tbuf_element, @tbuf_element, +, 1]
	alu[--, EG_TBUF_ELEM_COUNT_PER_PORT, -, @tbuf_element]
	bne[check_tx_count_wrap_around#]
	alu[@tbuf_element, --, B, 0]
check_tx_count_wrap_around#:
	alu[@tx_count, @tx_count, +, 1]
	alu[--, EG_TBUF_ELEM_COUNT, -, @tx_count]
	bne[wait_for_sram_sig#]
	alu[@tx_count, --, B, 0]
*/
/*	.reg $sram_data
	sram[read, $sram_data, buf_addr, sram_channel_number, 1], sig_done[sram_sig]
	alu[cur_tbuf_elem, base_element_for_port, +, @tbuf_element]
	alu[@tbuf_element, @tbuf_element, +, 1]
	alu[--, EG_TBUF_ELEM_COUNT_PER_PORT, -, @tbuf_element]
	bne[wait_for_sram_sig#]
	alu[@tbuf_element, --, B, 0]
*/

wait_for_sram_sig#:
	ctx_arb[sram_sig], defer[1]
	alu[buf_offset, buf_addr, -, @sramDescBase]
	alu[byte_count, --, B, $sram_data]
.end

/*
//*******************************************************
// Read the Transmit Sequence
//*******************************************************
.begin	
	.reg result tmp_val tmp_tbuf $TxSequenceData

read_tx_sequence_loop#:
	msf[read, $TxSequenceData, TxSequenceAddr, 0, 1], ctx_swap[msf_sig]

	alu[result, EG_TBUF_ELEM_COUNT_MASK, AND, $TxSequenceData]	// get mpkts actually sent
	alu[tmp_val, EG_TBUF_ELEM_COUNT_PER_PORT_MASK, AND, tbuf_count]
	alu[--, tmp_val, -, result]
	bge[cont_comp_tbuf_tx_sequnce#], defer[1]
	alu[tmp_tbuf, --, b, tmp_val]		
	alu[tmp_tbuf, tmp_tbuf, +, EG_TBUF_ELEM_COUNT]	// wrap around, add tbuf element number
cont_comp_tbuf_tx_sequnce#:
	alu[result, tmp_tbuf, -, result]			// compare with totals in tbuf
	alu[--, result, -, 8]						// compare with threshold
	bge[read_tx_sequence_loop#] 				// loop again
.end
*/
//*******************************************************
// Read the Transmit Sequence
//*******************************************************
.begin	
	.reg result tmp_val tmp_tbuf $TxSequenceData

read_tx_sequence_loop#:
	msf[read, $TxSequenceData, TxSequenceAddr, 0, 1], ctx_swap[msf_sig]

	alu[result, EG_TBUF_ELEM_COUNT_PER_PORT_MASK, AND, $TxSequenceData]	// get mpkts actually sent
	alu[tmp_val, EG_TBUF_ELEM_COUNT_PER_PORT_MASK, AND, tbuf_count]
	alu[--, tmp_val, -, result]
	bge[cont_comp_tbuf_tx_sequnce#], defer[1]
	alu[tmp_tbuf, --, b, tmp_val]		
	alu[tmp_tbuf, tmp_tbuf, +, EG_TBUF_ELEM_COUNT_PER_PORT]	// wrap around, add tbuf element number
cont_comp_tbuf_tx_sequnce#:
	alu[result, tmp_tbuf, -, result]			// compare with totals in tbuf
	alu[--, result, -, 8]						// compare with threshold
	bge[read_tx_sequence_loop#] 				// loop again
.end //result tmp_tbuf


//****************************************************
// Move data to TBUF from DRAM
//****************************************************
.begin
	.reg refcnt pkt_buf_addr cur_tbuf_addr

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

	alu[cur_tbuf_addr, TBuf_Base, OR, cur_tbuf_elem, <<EG_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[refcnt_calc_done#]
	alu[refcnt, refcnt, -, 1]			// Calculate the refcnt for indirect ref
refcnt_calc_done#:
	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]	
.end


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

	immed[MsfAddress, TBUF_ELEMENT_CONTROL_V]
	alu[MsfAddress, MsfAddress, OR, cur_tbuf_elem, <<EG_TBUF_CTRL_ADDR_SHF]

	immed[temp, (TX_CONTROL_SOP | TX_CONTROL_EOP)]
	alu[$TxControlWord0, temp, OR, byte_count, <<24]		// For Tx Control Word

	immed[$TxControlWord1, 0]

	msf[write, $TxControlWord0, MsfAddress, 0, 2], ctx_swap[msf_sig]
.end


//*******************************************************
// Free buffer
//*******************************************************
.begin
	.reg cellcount enqueue_data

	alu[enqueue_data, --, B, buf_addr, >>2]
	immed[cellcount, 0x1c, <<16]		// set cell count to 1, set OV EOP, and SOP
	
	alu[--, cellcount, OR, 0]
	sram[enqueue,  --, t0, enqueue_data], indirect_ref
.end


br[wait_for_assignment#]

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色av一区二区| 亚洲美女精品一区| 91超碰这里只有精品国产| 成人小视频免费在线观看| 久久99精品国产91久久来源| 偷拍日韩校园综合在线| 亚洲自拍偷拍图区| 亚洲电影一区二区| 亚洲国产成人va在线观看天堂| 亚洲一区二区免费视频| 亚洲成人av免费| 美女视频第一区二区三区免费观看网站| 亚洲国产日韩综合久久精品| 午夜日韩在线电影| 国产真实乱偷精品视频免| 精品一二线国产| 国产乱码精品一区二区三区av| 国产精品乡下勾搭老头1| 国产精品一区二区黑丝| thepron国产精品| 欧美亚洲国产怡红院影院| 欧美日韩综合在线| 日韩一区二区免费在线电影 | 国产成a人亚洲| 成人一二三区视频| 91福利视频在线| 日韩一区和二区| 国产精品人妖ts系列视频| 一区二区高清免费观看影视大全| 亚洲激情男女视频| 免费国产亚洲视频| 成人黄色片在线观看| 一本大道av一区二区在线播放| 在线不卡中文字幕播放| 国产校园另类小说区| 亚洲男人的天堂在线aⅴ视频| 丝袜国产日韩另类美女| 国产福利一区在线| 欧美性猛交xxxx乱大交退制版| 91麻豆精品国产91久久久使用方法| 久久免费国产精品| 亚洲第一激情av| 成人三级伦理片| 91麻豆精品国产91久久久久| 国产精品卡一卡二卡三| 免费日韩伦理电影| 色偷偷成人一区二区三区91| 精品日韩欧美一区二区| 亚洲靠逼com| 国产a级毛片一区| 日韩一区二区精品| 一区二区视频免费在线观看| 黑人巨大精品欧美一区| 91黄色在线观看| 中文字幕久久午夜不卡| 青青草视频一区| 91日韩精品一区| 久久久精品日韩欧美| 日韩黄色小视频| 91黄视频在线观看| 日本一区免费视频| 日韩成人精品视频| 日本久久一区二区| ㊣最新国产の精品bt伙计久久| 久久精品72免费观看| 欧美日韩在线播放三区| 亚洲人成人一区二区在线观看| 国产成人啪午夜精品网站男同| 欧美年轻男男videosbes| 亚洲另类在线一区| 99精品久久只有精品| 日本一区二区三区四区| 国产酒店精品激情| 久久久精品日韩欧美| 国产美女精品一区二区三区| 日韩三级电影网址| 蜜桃av噜噜一区二区三区小说| 欧美精品第1页| 日本亚洲视频在线| 精品精品国产高清一毛片一天堂| 午夜精彩视频在线观看不卡| 91福利资源站| 日韩电影一区二区三区| 91精品国产综合久久香蕉的特点| 亚洲第一搞黄网站| 日韩一区二区三区四区五区六区| 日本v片在线高清不卡在线观看| 欧美丰满嫩嫩电影| 日韩电影在线免费看| 555夜色666亚洲国产免| 久久精品国产秦先生| 久久久久久9999| jiyouzz国产精品久久| 亚洲人成在线观看一区二区| 成人国产电影网| 亚洲综合免费观看高清完整版在线 | 一本一道波多野结衣一区二区| 一区在线播放视频| 欧美老肥妇做.爰bbww视频| 日韩av一级片| 国产午夜亚洲精品不卡| 99久久国产综合精品女不卡| 亚洲国产一区二区视频| 日韩一二三区视频| 国产v综合v亚洲欧| 亚洲成人一区二区在线观看| 日韩免费高清av| 成人国产精品免费观看| 亚洲午夜精品在线| 日韩欧美色综合| 不卡的av网站| 日韩精品亚洲专区| 国产精品女上位| 麻豆精品视频在线观看| 精品国产网站在线观看| 亚洲午夜国产一区99re久久| 五月婷婷久久综合| 成人免费看的视频| 亚洲视频小说图片| 粉嫩一区二区三区性色av| 成人动漫中文字幕| 中文字幕日韩av资源站| 麻豆91精品91久久久的内涵| 欧美日韩成人一区| 国产精品一级片| 一区二区三区不卡视频在线观看| 91精彩视频在线| 亚洲国产精品一区二区久久恐怖片| 99久久精品99国产精品| 亚洲天堂精品在线观看| 99久久精品免费| 国产精品久99| eeuss鲁片一区二区三区 | 中文字幕欧美区| 国产传媒一区在线| 精品久久久久久亚洲综合网 | 97se狠狠狠综合亚洲狠狠| 一本一道久久a久久精品综合蜜臀| 亚洲国产精品精华液2区45| 天天影视涩香欲综合网| 欧美综合久久久| 国产精品一区二区你懂的| 91精品福利在线一区二区三区 | 国产成人在线观看| 日韩一区二区三区精品视频| 免费观看91视频大全| 中文字幕免费观看一区| 国产丶欧美丶日本不卡视频| 亚洲大型综合色站| 国产精品系列在线| 国产一区二区福利| 波多野洁衣一区| 99综合影院在线| 韩国av一区二区三区| 国产精品久久久久桃色tv| 日韩精品在线看片z| 51久久夜色精品国产麻豆| 精品视频在线免费看| 欧美三级一区二区| 91免费观看在线| 91麻豆产精品久久久久久| 99久久99久久精品国产片果冻| 国产成人啪免费观看软件| 国产曰批免费观看久久久| 久久精品国产澳门| 国产综合一区二区| 岛国精品在线播放| 成人福利视频网站| 色先锋资源久久综合| 色综合天天视频在线观看| 一本大道久久a久久精二百| 色综合久久久久久久久| 欧美在线观看视频一区二区| 91黄色小视频| 日韩欧美色综合| 国产网红主播福利一区二区| 成人欧美一区二区三区白人| 怡红院av一区二区三区| 偷拍自拍另类欧美| 韩国av一区二区三区四区| www.色精品| 欧美日韩国产综合一区二区三区| 日韩三级电影网址| 国产欧美视频一区二区| 亚洲最大成人综合| 丝袜亚洲另类欧美| 国产福利一区二区三区| 色综合久久中文字幕| 欧美一级午夜免费电影| 日本一区二区三区在线观看| 亚洲国产日韩精品| 国产69精品一区二区亚洲孕妇| 91免费看`日韩一区二区| 日韩一区二区三区免费观看| 国产精品免费观看视频| 日韩和欧美的一区| av在线播放不卡| 久久亚洲春色中文字幕久久久| 亚洲欧美日韩国产综合在线| 精品无码三级在线观看视频 |