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

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

?? sys_loopback_bw_eg_tx.uc

?? 開發Inetl IXP2400平臺所必須的硬件診斷和測試程序。該軟件包支持的功能包括CPU基本功能檢測
?? UC
字號:
/* sys_loopback_eg_tx.uc
 *
 * This file transmits POS packets from DRAM. If the number of transmitted
 * packets is not equals to the number that have to be transmitted, it polls
 * on scratch for a signal from the receive ME. When it receives the signal
 * from the receive ME, it extracts the DRAM address where the packet to be
 * transmitted is stored and transmits it. If the number of transmitted
 * packets is equal to the number that have to be transmitted, it signals the
 * XScale that it has completed all the transmitting.
 *
 *---------------------------------------------------------------------------
 *                                                                      
 *                  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 TX_ELEMENT_SIZE				MSF_ELEMENTSIZE_128
#define TX_ENABLE_MASK				0xF
#define TX_MODE						MSF_POS_UTOPIA
#define TX_WIDTH					MSF_WIDTH_4x8
#define TX_SINGLE_PHY				MSF_SINGLE_PHY

#define TX_CONTROL_EOP				(1 << 8)
#define TX_CONTROL_SOP				(1 << 9)
#define SOPEOP_SHF					8

#define TBUF_ELEM_COUNT				(1 << (7 - TX_ELEMENT_SIZE))
#define TBUF_ELEM_COUNT_4PORT		(TBUF_ELEM_COUNT >> 2)
#define TBUF_ELEM_MASK_4PORT		((TBUF_ELEM_COUNT >> 2) - 1)
#define TBUF_ADDR_SHF				(6 + TX_ELEMENT_SIZE)
#define TX_ELEMENTSIZE_BYTE			(1 << TBUF_ADDR_SHF)

#define ME_NUMBER_RX				0
#define ME_NUMBER_TX				1
#define RX_THD_NUM					0
#define INTERTHD_SIG_NUM			15
#define SCRATCH_MESSAGE_BASE		0x1000

#ifdef WORKBENCH_SIM
#define ORIG_PKT_DRAM_ADDR			0x1000000		// Original packet stored in 16 Meg
#define ORIG_PACKET_SIZE			64
#define MESSAGE_ADDR				0x1200
#endif

.reg scratch_addr get_ring_num put_ring_num
.reg total_byte_count byte_count tx_count @total_pkt_count
.reg cur_me cur_ctx
.reg packet_status packet_size sopeop
.reg $TxControlWord0 $TxControlWord1
.reg tbuf tbuf_element tbuf_mask tbuf_1st_element
.reg dram_base dram_addr 
.reg $scratch_data0 $scratch_data1
.sig dram_sig msf_sig interthd_sig cap_sig scratch_sig

.addr interthd_sig INTERTHD_SIG_NUM

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

.set_sig interthd_sig

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

init#:
	.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[tbuf, RBUF_TBUF]
	immed[tbuf_mask, TBUF_ELEM_MASK_4PORT]
	alu[tbuf_1st_element, --, B, cur_ctx, <<(TBUF_ELEM_COUNT_4PORT >> SHIFT_2)]

	immed[tx_count, 0]
	immed[@total_pkt_count, 0]

#ifdef WORKBENCH_SIM
	immed[dram_base, (ORIG_PKT_DRAM_ADDR & MASK_16BIT)]
	immed_w1[dram_base, ((ORIG_PKT_DRAM_ADDR >> SHIFT_16) & MASK_16BIT)]
#else
	immed[scratch_addr, SCRATCH_MESSAGE_BASE]
	scratch[read, $scratch_data0, scratch_addr, 0, 1], ctx_swap[scratch_sig]
	alu[dram_base, --, B, $scratch_data0]
#endif

	immed[packet_status, 0]
	alu[get_ring_num, --, B, cur_ctx, <<2]
	alu[put_ring_num, --, B, RING_4, <<2]

	.set_sig interthd_sig
	ctx_arb[interthd_sig]

	br!=ctx[0, get_packet_data#]

.local MsfAddress TxConfigData0 $TxConfigData0
//****************************************************
// Configure TX Control
//****************************************************
	immed[MsfAddress, MSF_TX_CONTROL]
	immed[TxConfigData0, (TX_ELEMENT_SIZE << 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]


//******************************************************
// Configure TX UP Control CSRs 
//******************************************************
	immed[TxConfigData0, (UP_CTRL_CP_MODE | UP_CTRL_PARITY | UP_CTRL_CELLSIZE | UP_CTRL_DRTIME)]
	immed[MsfAddress, TX_UP_CONTROL_0]
	alu[$TxConfigData0, --, B, TxConfigData0]
	msf[write, $TxConfigData0, MsfAddress, 0, 1], ctx_swap[msf_sig]
	immed[MsfAddress, TX_UP_CONTROL_1]
	alu[$TxConfigData0, --, B, TxConfigData0]
	msf[write, $TxConfigData0, MsfAddress, 0, 1], ctx_swap[msf_sig]
	immed[MsfAddress, TX_UP_CONTROL_2]
	alu[$TxConfigData0, --, B, TxConfigData0]
	msf[write, $TxConfigData0, MsfAddress, 0, 1], ctx_swap[msf_sig]
	immed[MsfAddress, TX_UP_CONTROL_3]
	alu[$TxConfigData0, --, B, TxConfigData0]
	msf[write, $TxConfigData0, MsfAddress, 0, 1], ctx_swap[msf_sig]


//****************************************************
// Configure TX Control
//****************************************************
	immed[MsfAddress, MSF_TX_CONTROL]
	immed[TxConfigData0, (TX_ELEMENT_SIZE << 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]
.endlocal

	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)]
	

get_packet_data#:
#ifdef WORKBENCH_SIM
	.if (cur_ctx == 0)
		immed[packet_size, 48]
		immed[dram_addr, 0]
		alu[dram_addr, dram_base, +, dram_addr]
	.elif (cur_ctx == 1)
		immed[packet_size, 64]
		immed[dram_addr, 0x200]
		alu[dram_addr, dram_base, +, dram_addr]
	.elif (cur_ctx == 2)
		immed[packet_size, 136]
		immed[dram_addr, 0x400]
		alu[dram_addr, dram_base, +, dram_addr]
	.else
		immed[packet_size, 64]
		immed[dram_addr, 0x600]
		alu[dram_addr, dram_base, +, dram_addr]
	.endif
#else
	scratch[get, $scratch_data0, get_ring_num, 0, 1], ctx_swap[scratch_sig]
	alu[--, $scratch_data0, -, 0]
	beq[get_packet_data#]		// branch to label if there is no new assignment

	alu[packet_size, 0, +16, $scratch_data0]
	alu[dram_addr, --, B, $scratch_data0, >>16]
	alu[dram_addr, --, B, dram_addr, <<8]
	alu[dram_addr, dram_base, +, dram_addr]
#endif

/*
.begin
	.reg scratch_add $s_xfer tmp_val

	immed[scratch_add, 0x1200]
	alu[scratch_add, scratch_add, OR, cur_ctx, <<2]
	alu[tmp_val, --, B, dram_addr]
	alu[$s_xfer, --, B, tmp_val]
	scratch[write, $s_xfer, scratch_add, 0, 1], ctx_swap[scratch_sig]
.end
*/


transmit#:
//****************************************************
// Move data to TBUF from DRAM
//****************************************************
.begin
	.reg cur_tbuf_addr refcnt

	alu[tbuf_element, tbuf_1st_element, +, tx_count]

	.if (packet_status == 0)
		.if (packet_size <= TX_ELEMENTSIZE_BYTE)
			alu[byte_count, --, B, packet_size]
			immed[sopeop, SOP_EOP]
		.else
			immed[byte_count, TX_ELEMENTSIZE_BYTE]
			immed[sopeop, SOP_NOEOP]
		.endif
	.else
		alu[byte_count, packet_size, -, packet_status]
		.if (byte_count > TX_ELEMENTSIZE_BYTE)
			immed[byte_count, TX_ELEMENTSIZE_BYTE]
			immed[sopeop, MOP]
		.else
			immed[sopeop, NOSOP_EOP]
		.endif
	.endif

	alu[cur_tbuf_addr, tbuf, OR, tbuf_element, <<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]
	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_tbuf_addr, OR, refcnt]	// indirect ref
	dram[tbuf_wr, --, dram_addr, packet_status, 8], indirect_ref, sig_done[dram_sig]
	ctx_arb[dram_sig]
.end


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

	immed[MsfAddress, TBUF_ELEMENT_CONTROL_V]
	alu[MsfAddress, MsfAddress, OR, tbuf_element, <<3] //TBUF_CTRL_ADDR_SHF
	alu[temp, --, B, sopeop, <<SOPEOP_SHF]
	alu[$TxControlWord0, temp, OR, byte_count, <<24]

	immed[$TxControlWord1, 0]

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

	alu[tx_count, tx_count, +, 1]
	alu[tx_count, tbuf_mask, AND, tx_count]
	alu[packet_status, packet_status, +, byte_count]

	.if (packet_size != packet_status)
		br[transmit#]
	.endif

	immed[packet_status, 0]
	alu[@total_pkt_count, @total_pkt_count, +, 1]


#ifndef WORKBENCH_SIM

ring_full#:
	br_inp_state[SCR_Ring4_Full, ring_full#]
	alu[$scratch_data0, --, B, @total_pkt_count]
	scratch[put, $scratch_data0, put_ring_num, 0, 1], ctx_swap[scratch_sig]
#endif

	br[get_packet_data#]

/*
.begin
	.reg scratch_add $s_xfer tmp_val

//	alu[tmp_val, dram_addr, +, packet_status]
	alu[$s_xfer, --, B, $scratch_data0]
	scratch[write, $s_xfer, scratch_add, 0, 1], ctx_swap[scratch_sig]
	alu[scratch_add, scratch_add, +, 4]
.end
*/

/*
.begin
	.reg scratch_add $s_xfer

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人一区在线看| 日本欧美久久久久免费播放网| 亚洲激情六月丁香| 日本二三区不卡| 国产真实乱子伦精品视频| 欧美精品一区二区三区在线播放| 午夜精品在线看| 欧美色图在线观看| 亚洲另类在线一区| 精品久久五月天| 99热99精品| 日本中文字幕一区| 一二三四社区欧美黄| 久久嫩草精品久久久精品一| 在线精品视频免费播放| 国产精品亚洲一区二区三区妖精| 午夜国产精品影院在线观看| 亚洲欧洲性图库| 亚洲国产精品99久久久久久久久| 精品视频一区三区九区| 色香蕉成人二区免费| 成人性色生活片免费看爆迷你毛片| 五月综合激情网| 午夜精品一区在线观看| 亚洲第一在线综合网站| 亚洲成人自拍一区| 奇米色一区二区| 蜜臀av性久久久久av蜜臀妖精| 日韩主播视频在线| 亚洲国产视频一区二区| 亚洲大尺度视频在线观看| 夜夜爽夜夜爽精品视频| 亚洲人成精品久久久久久| 亚洲免费观看高清完整版在线观看熊| 亚洲三级免费观看| 亚洲国产另类av| 麻豆成人在线观看| 国产精品原创巨作av| 国产传媒久久文化传媒| 美女高潮久久久| 日韩电影在线一区二区三区| 久久99热99| 91在线看国产| 精品国产人成亚洲区| 亚洲美女淫视频| 理论片日本一区| 99在线精品观看| 日韩三级视频在线看| 国产精品二三区| 麻豆精品久久精品色综合| 丰满放荡岳乱妇91ww| 欧美精品tushy高清| 国产女主播一区| 免费观看日韩av| 在线观看视频一区二区| 国产丝袜欧美中文另类| 亚洲综合小说图片| 97久久久精品综合88久久| 日韩视频免费观看高清完整版 | 亚洲成人www| caoporm超碰国产精品| 日韩天堂在线观看| 午夜精品一区二区三区免费视频| 成人综合婷婷国产精品久久免费| 在线综合视频播放| 亚洲电影欧美电影有声小说| 成人动漫中文字幕| 精品免费视频一区二区| 婷婷夜色潮精品综合在线| 99久久精品费精品国产一区二区| 26uuu亚洲综合色| 国产尤物一区二区| www国产成人免费观看视频 深夜成人网| 国产精品久久久久久久久图文区| 国产精品亚洲成人| 久久久久久久网| 国产成人午夜视频| 久久精品一区二区| 盗摄精品av一区二区三区| 国产精品久久久久久久蜜臀| 成人午夜av影视| **网站欧美大片在线观看| 99久久国产综合精品女不卡| 亚洲欧美另类图片小说| 欧美专区亚洲专区| 美女视频黄 久久| 久久久不卡网国产精品一区| 国内久久精品视频| 日韩精品一区二区三区视频播放 | 日韩色视频在线观看| 日韩av在线发布| 日韩女优av电影| 国产在线不卡视频| 国产精品国产a级| 欧美性受xxxx| 秋霞午夜av一区二区三区| 欧美卡1卡2卡| 激情综合一区二区三区| 337p日本欧洲亚洲大胆精品 | 欧美色综合天天久久综合精品| 亚洲免费av高清| 欧美一级艳片视频免费观看| 成人国产在线观看| 国产精品久久久久桃色tv| 91在线视频观看| 免费观看一级特黄欧美大片| 久久久久99精品一区| 色婷婷精品久久二区二区蜜臂av| 国产精品久久精品日日| 欧美一级一级性生活免费录像| 国产成人啪免费观看软件| 亚洲九九爱视频| 久久综合色之久久综合| 91黄视频在线| 国产成人午夜精品影院观看视频| 一区二区三区国产精品| 日韩欧美成人激情| 91国产视频在线观看| 激情综合色综合久久综合| 国产精品私人自拍| 精品国产麻豆免费人成网站| 成人动漫一区二区在线| 久久精品国产精品青草| 亚洲一区精品在线| 国产亚洲成av人在线观看导航| 欧美日韩精品专区| 欧美性极品少妇| 91免费看片在线观看| jizzjizzjizz欧美| 国产精品一区在线观看你懂的| 日韩不卡一二三区| 免费国产亚洲视频| 亚洲午夜久久久久久久久电影网| 亚洲午夜久久久久久久久电影网 | 国产精品伦一区| 国产精品网站在线观看| 国产精品毛片久久久久久| 国产欧美日韩亚州综合| 精品国产一二三区| 欧美一区二区三区婷婷月色 | 欧美性感一类影片在线播放| 在线视频你懂得一区| 欧美色综合影院| 欧美高清激情brazzers| 日韩欧美一区二区三区在线| 日韩午夜激情免费电影| 精品人伦一区二区色婷婷| 26uuu成人网一区二区三区| 欧美国产精品一区| 中文字幕不卡在线观看| 亚洲精品国产一区二区精华液| 亚洲色图欧洲色图| 日韩av网站在线观看| 国产精品一区二区三区四区| 成人国产精品免费观看| 欧美亚洲禁片免费| 日韩精品一区二区三区视频在线观看 | 国产精品色在线| 麻豆一区二区三区| 91蜜桃在线观看| 精品奇米国产一区二区三区| 国产欧美精品区一区二区三区| 亚洲超丰满肉感bbw| 日韩一区二区麻豆国产| 欧美情侣在线播放| 91国在线观看| 久久激情五月婷婷| 欧美日韩一区小说| 久久视频一区二区| 欧美精彩视频一区二区三区| 日韩欧美在线综合网| 中文字幕在线不卡一区| 国产精品美女久久福利网站| 久久久99精品免费观看不卡| 制服视频三区第一页精品| 欧美一级专区免费大片| 欧美韩日一区二区三区四区| 亚洲h动漫在线| 久久成人18免费观看| 欧美日韩激情一区二区| 国产人成一区二区三区影院| 午夜成人在线视频| 色成年激情久久综合| 久久精品在线免费观看| 麻豆国产91在线播放| 欧美一二三区在线观看| 日本美女视频一区二区| 97se亚洲国产综合自在线观| 欧美疯狂做受xxxx富婆| 蜜桃视频一区二区| 精品国产电影一区二区 | 不卡欧美aaaaa| 中文字幕+乱码+中文字幕一区| 精品一二三四在线| 久久综合九色综合欧美就去吻| 久久91精品久久久久久秒播| 日韩欧美的一区二区| 成人综合在线视频| 中文在线一区二区| 91免费精品国自产拍在线不卡|