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

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

?? line_rate_pl_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 "common_uc.h"
#include "line_rate_pl.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 $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

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_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


//****************************************************
// 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色图| 中文字幕亚洲区| 亚洲欧洲精品一区二区精品久久久| 欧美国产在线观看| 日本一区二区成人| 亚洲人成网站影音先锋播放| 亚洲色图一区二区| 五月婷婷久久综合| 丝袜美腿成人在线| 精品一区二区三区在线播放 | 久久精品无码一区二区三区| 久久亚洲精华国产精华液| 久久伊人蜜桃av一区二区| 久久人人97超碰com| 国产精品免费人成网站| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲影视资源网| 日韩av电影一区| 风流少妇一区二区| 91福利小视频| 欧美电视剧在线看免费| 国产精品色一区二区三区| 亚洲午夜三级在线| 国产在线观看一区二区| av电影天堂一区二区在线观看| 欧美性生活影院| 久久久久国产精品麻豆ai换脸| 亚洲天堂中文字幕| 美腿丝袜亚洲一区| 95精品视频在线| 精品国产精品一区二区夜夜嗨| 国产精品麻豆99久久久久久| 婷婷亚洲久悠悠色悠在线播放| 国产在线精品一区二区三区不卡 | 色老汉av一区二区三区| 日韩午夜电影av| 亚洲欧美另类综合偷拍| 久久精品噜噜噜成人av农村| 91丨九色丨国产丨porny| 日韩一区二区三区四区| 亚洲精品美国一| 岛国精品在线观看| 91精品国产综合久久国产大片| 日韩伦理免费电影| 国产一区二区剧情av在线| 欧美男人的天堂一二区| 日韩美女视频一区二区 | 洋洋av久久久久久久一区| 老司机精品视频线观看86| 在线观看三级视频欧美| 国产精品国产精品国产专区不蜜| 久久疯狂做爰流白浆xx| 欧美日韩亚洲国产综合| 亚洲人成电影网站色mp4| 国产精品18久久久久久久久| 欧美一区二区三区播放老司机| 亚洲精品写真福利| 成人国产精品免费观看动漫| 精品蜜桃在线看| 麻豆精品国产91久久久久久| 欧美高清视频不卡网| 一区二区免费在线播放| 91老师片黄在线观看| 亚洲欧洲无码一区二区三区| 国产精品一区一区| 久久免费的精品国产v∧| 久久99精品久久久久久久久久久久| 91精品啪在线观看国产60岁| 亚洲五码中文字幕| 欧美视频在线不卡| 亚洲中国最大av网站| 在线看日本不卡| 亚洲高清视频中文字幕| 在线一区二区视频| 亚洲激情校园春色| 欧美日韩你懂得| 亚洲地区一二三色| 91精品欧美综合在线观看最新 | 国产精品一二二区| 国产亲近乱来精品视频| 99视频超级精品| 亚洲一区在线播放| 日韩欧美自拍偷拍| 国产在线精品一区二区夜色| 国产欧美日韩在线| 91尤物视频在线观看| 亚洲不卡一区二区三区| 91精品婷婷国产综合久久 | 色综合久久88色综合天天免费| 亚洲另类中文字| 欧美顶级少妇做爰| 国产乱码精品一品二品| 国产精品女主播av| 91麻豆国产福利在线观看| 亚洲高清视频的网址| 日韩女优制服丝袜电影| 国产成人综合亚洲91猫咪| 亚洲色图20p| 在线不卡免费av| 成人免费观看视频| 亚洲成人精品影院| 国产亚洲一区二区三区四区 | 在线播放91灌醉迷j高跟美女| 开心九九激情九九欧美日韩精美视频电影 | 国产日韩精品视频一区| 日本精品一区二区三区四区的功能| 日韩av在线播放中文字幕| 国产亚洲欧美日韩在线一区| 91女厕偷拍女厕偷拍高清| 亚洲成人激情av| 国产日产欧产精品推荐色| 欧美久久一二区| 成人av在线资源网站| 人人爽香蕉精品| 一色屋精品亚洲香蕉网站| 日韩女优制服丝袜电影| 91免费国产视频网站| 国产真实乱对白精彩久久| 亚洲一区国产视频| 国产精品久久福利| 26uuu另类欧美亚洲曰本| 欧美三级日韩三级| www.成人在线| 国产一区二区视频在线| 秋霞成人午夜伦在线观看| 中文字幕综合网| 国产欧美精品区一区二区三区| 欧美一区二区三区四区五区| 色综合久久中文综合久久牛| 春色校园综合激情亚洲| 久久精品国产一区二区三区免费看| 亚洲精品第1页| 亚洲天堂a在线| 国产女人18毛片水真多成人如厕| 精品日韩在线观看| 欧美区在线观看| 欧美日韩一本到| 欧美日韩精品一区二区三区四区 | 亚洲va韩国va欧美va| 亚洲人吸女人奶水| 国产精品国产三级国产专播品爱网| 日韩女优视频免费观看| 日韩一卡二卡三卡国产欧美| 欧美精品乱码久久久久久按摩 | 国产露脸91国语对白| 精品一区二区三区免费毛片爱| 秋霞电影一区二区| 欧美aaaaaa午夜精品| 日本人妖一区二区| 天堂av在线一区| 青青国产91久久久久久 | 国产精品麻豆久久久| 亚洲特黄一级片| 亚洲综合成人在线| 天天影视色香欲综合网老头| 首页欧美精品中文字幕| 日本伊人精品一区二区三区观看方式| 亚洲18色成人| 蜜臀av性久久久久av蜜臀妖精| 久久av中文字幕片| 国产美女在线精品| 成人高清免费在线播放| 91亚洲午夜精品久久久久久| 在线观看日韩毛片| 日韩一区二区视频在线观看| 精品久久久久99| 中文字幕+乱码+中文字幕一区| 亚洲四区在线观看| 午夜久久久久久| 国产一区二区三区免费| 99免费精品视频| 欧美人动与zoxxxx乱| 精品电影一区二区| 中文字幕日韩欧美一区二区三区| 一卡二卡三卡日韩欧美| 日韩精品乱码av一区二区| 国产综合色在线视频区| av电影在线观看不卡| 6080日韩午夜伦伦午夜伦| 久久一夜天堂av一区二区三区| 亚洲视频在线一区观看| 日韩电影一二三区| 大陆成人av片| 这里是久久伊人| 国产精品每日更新| 麻豆精品久久精品色综合| 成人18精品视频| 欧美成人欧美edvon| 亚洲欧美另类综合偷拍| 激情国产一区二区| 91久久精品网| 国产清纯在线一区二区www| 亚洲福利视频一区二区| 国产麻豆成人精品| 欧美日韩国产成人在线91| 欧美国产一区二区|