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

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

?? sf_loopback_tx.uc

?? 開發Inetl IXP2400平臺所必須的硬件診斷和測試程序。該軟件包支持的功能包括CPU基本功能檢測
?? UC
字號:
/* sf_loopback_tx.uc
 *
 * This code transmits a flow control packet and then waits for data at the
 * FCIFIFO. When it is received, a check is done on how many packets have
 * been received. If it has not received the expected number of packets,
 * it signals the XScale to extract the payload of the flow control packet
 * received through the FCIFIFO. Then is polls for a signal from the XScale
 * for the DRAM addres for the next packet to transmit. And the code loops
 * around to transmit another low control packet until the expected number
 * of received packets is met. 
 *
 *---------------------------------------------------------------------------
 *                                                                      
 *                  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, March, 2002
 *  revisions:
 * 
 * 
 * --------------------------------------------------------------------------
 */

#include "common_uc.h"

#define TX_ELEMENT_SIZE			MSF_ELEMENTSIZE_128
#define TX_ENABLE_MASK			0x1
#define TX_MODE					MSF_CSIX
#define TX_WIDTH				MSF_WIDTH_1x32
#define TX_SINGLE_PHY			MSF_SINGLE_PHY
#define TBUF_ADDR_SHF			(6 + TX_ELEMENT_SIZE)
#define TX_ELEMENT_SIZE_BYTE	(1 << TBUF_ADDR_SHF)
#define TBUF_ELEM_COUNT			(1 << (7 - TX_ELEMENT_SIZE))				// Tot. elements
#define TBUF_DATA_ELEM_COUNT	((TBUF_ELEM_COUNT >> 2) * 3)		// (Tot. elements / 4) * 3
#define TBUF_CTRL_ELEM_COUNT	(TBUF_ELEM_COUNT - TBUF_DATA_ELEM_COUNT)

#define SCRATCH_ADDRESS			0x400
#define DRAM_BASE_SRC			0x1000000
#define SRAM_BASE_DEST			0x100000

.reg temp offset $pci_rw loops get_ring_num put_ring_num $scratch_data
.reg pkt_count_tx pkt_count_rx refcnt byte_cnt
.reg MsfAddress MsfAddress0 MsfAddress1 tbuf_addr
.reg TxConfigData0
.reg $TxConfigData0
.reg $TxControlWord0 $TxControlWord1
.reg tbuf_element
.reg dram_addr tbuf scratch_addr sram_addr pci_base
.reg payload_len $temp_xfer
.sig dram_sig msf_sig pci_sig sram_sig scratch_sig

.xfer_order $TxControlWord0 $TxControlWord1

br=ctx[0, init#]
ctx_arb[kill]

init#:

#ifdef WORKBENCH_SIM
.begin
	.reg tmp_addr $tmp_data
	.sig scratch_sig

	immed[tmp_addr, 0x200]
wait_for_signal#:
	scratch[read, $tmp_data, tmp_addr, 0, 1], ctx_swap[scratch_sig]
	alu[--, $tmp_data, -, 0]
	bne[wait_for_signal#]
.end
#endif

	immed[tbuf_element, 0]
	immed[pkt_count_tx, 0]

	immed[scratch_addr, SCRATCH_ADDRESS]

	immed[sram_addr, (SRAM_BASE_DEST & MASK_16BIT)]
	immed_w1[sram_addr, ((SRAM_BASE_DEST >> 16) & MASK_16BIT)]
	alu[sram_addr, sram_addr, OR, CHAN_NUMBER, <<SRAM_CHANNEL_NUMBER_FIELD]

	immed[dram_addr, (DRAM_BASE_SRC & MASK_16BIT)]
	immed_w1[dram_addr, ((DRAM_BASE_SRC >> 16) & MASK_16BIT)]

	immed[pci_base, (PCI_LOCAL_CSR_BASE & MASK_16BIT)]
	immed_w1[pci_base, ((PCI_LOCAL_CSR_BASE >> 16) & MASK_16BIT)]

	alu[get_ring_num, --, B, RING_0, <<2]			// ring number in a register
	alu[put_ring_num, --, B, RING_1, <<2]			// ring number in a register


//****************************************************
// Configure TX Control
//****************************************************
	immed[tbuf, RBUF_TBUF]
	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]

	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_head,0]
	immed[$scratch_tail,0]

	alu[$scratch_base, --, B, 0]	// Use ring size of 128 lw and base 0x0
	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]

	alu[$scratch_base, --, B, 1, <<9]	// Use ring size of 128 lw and base 0x200
	cap[write, $scratch_base, SCRATCH_RING_BASE_1], sig_done[scratch_sig1]
	cap[write, $scratch_head, SCRATCH_RING_HEAD_1], sig_done[scratch_sig2]
	cap[write, $scratch_tail, SCRATCH_RING_TAIL_1], sig_done[scratch_sig3]
	ctx_arb[scratch_sig1, scratch_sig2, scratch_sig3]
.end

immed[pkt_count_rx, 0]

next_packet#:
#ifndef WORKBENCH_SIM
wait_for_data#:
	scratch[get, $scratch_data, get_ring_num, 0, 1], ctx_swap[scratch_sig]
	alu[--, $scratch_data, -, 0]
	beq[wait_for_data#]			// If 0, check again

	alu[byte_cnt, --, B, $scratch_data]
#else
	immed[byte_cnt, 64]
#endif


//****************************************************
// Move data to TBUF from DRAM
//****************************************************
transmit#:
	alu[tbuf_addr, tbuf, OR, tbuf_element, <<TBUF_ADDR_SHF]

	alu[tbuf_addr, --, B, tbuf_addr, <<5]
	alu[tbuf_addr, tbuf_addr, OR, 1, <<4]		// set the overwrite bit for the TBUF addr
	alu[refcnt, --, B, byte_cnt, >>3]
	alu[--, byte_cnt, AND, 0x7]
	beq[cont1#]
	alu[refcnt, refcnt, +, 1]			// Calculate the refcnt for indirect ref
cont1#:
	alu[refcnt, --, B, refcnt, <<21]	// Shift to appropriate bit
	alu[refcnt, refcnt, OR, 1, <<25]	// Set the overwrite bit for refcnt
	alu[--, tbuf_addr, OR, refcnt]	// indirect ref
	dram[tbuf_wr, --, dram_addr, 0, 8], indirect_ref, sig_done[dram_sig]
	ctx_arb[dram_sig]

#ifdef MSF_WORKAROUND
	alu[--, --, B, tbuf_addr]	// indirect ref
	dram[tbuf_wr, --, dram_addr, 0, 2], indirect_ref, sig_done[dram_sig]
	ctx_arb[dram_sig]
#endif


//*******************************************************
// Write the Transmit Control Word with appropriate data
//*******************************************************
	immed[$TxControlWord1, 0]		// No extension header for flow control packet
	immed[temp, CSIX_FLOWCONTROL]
	alu[$TxControlWord0, temp, OR, byte_cnt, <<24]
	immed[MsfAddress, TBUF_ELEMENT_CONTROL_V]
	alu[MsfAddress, MsfAddress, OR, tbuf_element, <<3] //TBUF_CTRL_ADDR_SHF
	msf[write, $TxControlWord0, MsfAddress, 0, 2], ctx_swap[msf_sig]		// Write control word and validate

	alu[pkt_count_tx, pkt_count_tx, +, 1]
	alu[tbuf_element, tbuf_element, +, 1]
	
	.if (tbuf_element == TBUF_DATA_ELEM_COUNT)
		immed[tbuf_element, 0]
	.endif
	
// Wait for FCIFIFO data (through CBUS)
	immed[byte_cnt, 0]
	immed[MsfAddress, FCIFIFO]

wait_for_fcififo#:
	br_!inp_state[fci_not_empty, wait_for_fcififo#]		// Branch to label is FCIFIFO empty
	msf[read, $temp_xfer, MsfAddress, 0, 1], ctx_swap[msf_sig]	// Read FCIFIFO
	alu[payload_len, 0xFF, AND, $temp_xfer, >>16]				// extract payload length

process_fcififo_data#:
	alu[$temp_xfer, --, B, $temp_xfer]
	scratch[write, $temp_xfer, scratch_addr, byte_cnt, 1], ctx_swap[scratch_sig]
	alu[byte_cnt, byte_cnt, +, 4]	// Inc byte count by 4 as a long word was read from FCIFIFO

read_fcififo#:
	br_!inp_state[fci_not_empty, fcififo_empty#]	// Branch to label if FCIFIFO empty
	msf[read, $temp_xfer, MsfAddress, 0, 1], ctx_swap[msf_sig]		// Read FCIFIFO
	br[process_fcififo_data#]

fcififo_empty#:				// FCIFIFO is now empty
#ifndef WORKBENCH_SIM
	alu[$scratch_data, --, B, byte_cnt]
	scratch[put, $scratch_data, put_ring_num, 0, 1], ctx_swap[scratch_sig]
#endif
	
	alu[pkt_count_rx, pkt_count_rx, +, 1]	// Increment the received packet count

	br[next_packet#]

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一品视频| 精品国产乱码久久久久久夜甘婷婷| 国产激情视频一区二区在线观看| 另类小说欧美激情| 国产一区视频在线看| 国产一级精品在线| 成人精品免费网站| 99re66热这里只有精品3直播| 成人黄色电影在线| 91色乱码一区二区三区| 日本高清不卡视频| 欧美日韩一卡二卡三卡| 91麻豆精品国产自产在线 | 亚洲男人天堂av网| 亚洲一区在线看| 日韩不卡一区二区三区| 美女视频一区二区| 高清成人免费视频| 色综合久久久久久久| 欧美三级资源在线| 欧美一级在线视频| 国产亚洲人成网站| 一区二区在线观看免费视频播放| 国产美女视频91| 国产成人自拍高清视频在线免费播放| 国产91在线|亚洲| 欧美亚洲国产怡红院影院| 4438亚洲最大| 国产欧美日韩三级| 亚洲无线码一区二区三区| 男女激情视频一区| 成人av午夜电影| 欧美日韩在线精品一区二区三区激情| 欧美一区二区三区啪啪| 久久精品在线免费观看| 一区二区三区在线观看视频| 日韩av电影一区| 懂色一区二区三区免费观看 | 欧美精品一区二区三区久久久| 日韩一区二区三区在线观看| 久久这里只有精品6| 亚洲精品成人悠悠色影视| 毛片av一区二区三区| 99视频在线观看一区三区| 欧美伦理电影网| 国产精品嫩草99a| 天堂久久一区二区三区| 成人免费av资源| 91精品国模一区二区三区| 中文字幕欧美三区| 日韩精品一区第一页| av亚洲精华国产精华精| 欧美一区二区三区免费在线看 | 国产成人午夜精品5599| 91福利国产成人精品照片| 久久亚洲精华国产精华液| 一区二区三区国产精品| 国产一区二区三区av电影| 在线一区二区三区| 久久精品视频网| 日韩激情中文字幕| 91在线看国产| 久久夜色精品一区| 五月天激情小说综合| 成人av片在线观看| 欧美精品一区二区在线播放| 一区二区三区免费网站| 粉嫩aⅴ一区二区三区四区五区| 91精品国产福利在线观看| 亚洲丝袜制服诱惑| 国产激情91久久精品导航| 91精品国产色综合久久久蜜香臀| 亚洲日韩欧美一区二区在线| 国产在线看一区| 欧美一级一区二区| 亚洲成人免费在线| 91影院在线观看| 国产日本欧洲亚洲| 精品一区二区三区日韩| 欧美美女bb生活片| 亚洲国产美女搞黄色| 欧美成人精品1314www| 亚洲第一狼人社区| 欧美怡红院视频| 亚洲美女屁股眼交3| heyzo一本久久综合| 欧美激情一二三区| 国产成人av电影在线观看| 欧美成人三级在线| 精品一区二区三区视频在线观看| 3atv在线一区二区三区| 日韩高清电影一区| 欧美精品日日鲁夜夜添| 亚洲午夜在线视频| 欧美色综合天天久久综合精品| 亚洲美女屁股眼交3| 色成年激情久久综合| 亚洲欧美另类久久久精品2019| www.亚洲精品| 中文字幕一区二区三区精华液| 成人精品亚洲人成在线| 国产精品卡一卡二卡三| 99国产精品国产精品久久| 国产精品久久精品日日| 99免费精品视频| 亚洲视频你懂的| 色婷婷亚洲婷婷| 亚洲成年人影院| 日韩一区二区在线播放| 久久99国产精品麻豆| 久久精品一区二区三区不卡牛牛| 国产成人啪免费观看软件| 国产清纯白嫩初高生在线观看91 | 国产亚洲一区二区三区在线观看| 狠狠色狠狠色合久久伊人| 国产视频一区二区在线| 成人免费高清视频在线观看| 亚洲日本护士毛茸茸| 91精彩视频在线观看| 日韩综合在线视频| 欧美xfplay| 丁香婷婷综合激情五月色| 国产精品你懂的| 欧美性一级生活| 天堂av在线一区| 精品嫩草影院久久| 波多野洁衣一区| 亚洲自拍都市欧美小说| 日韩一二三四区| 国产伦精品一区二区三区在线观看| 国产午夜精品久久| 欧洲av在线精品| 蜜乳av一区二区三区| 国产精品午夜免费| 欧美亚洲日本国产| 国内成人自拍视频| 国产精品成人在线观看| 欧美精品vⅰdeose4hd| 国产在线一区观看| 亚洲激情图片一区| 7777精品伊人久久久大香线蕉超级流畅 | 日韩欧美国产综合在线一区二区三区| 国产在线视频不卡二| 成人欧美一区二区三区| 欧美一区午夜精品| 成人国产视频在线观看| 天天亚洲美女在线视频| 国产日韩欧美a| 在线播放一区二区三区| 国产成人免费视频一区| 午夜久久久久久久久| 欧美韩国日本不卡| 91麻豆精品91久久久久同性| 成人18精品视频| 看电视剧不卡顿的网站| 亚洲欧美日韩中文播放| 精品国产在天天线2019| 在线免费观看日本欧美| 国产成人精品亚洲日本在线桃色| 精品福利一二区| 日韩精品视频网| 国产精品蜜臀av| 欧美一区二区精美| 国产 欧美在线| 另类的小说在线视频另类成人小视频在线 | 色激情天天射综合网| 久久99九九99精品| 一级中文字幕一区二区| 欧美激情艳妇裸体舞| 日韩欧美精品在线视频| 欧美日韩在线播| 99久久99久久免费精品蜜臀| 久久精品国产亚洲高清剧情介绍| 亚洲三级小视频| 久久久另类综合| 欧美不卡激情三级在线观看| 欧美三级日本三级少妇99| 成人av网址在线| 国产精品影视天天线| 日本午夜一区二区| 亚洲综合免费观看高清完整版在线 | 亚洲欧美色图小说| 国产精品久久一卡二卡| 久久九九国产精品| 亚洲午夜在线视频| **欧美大码日韩| 国产午夜精品一区二区三区嫩草| 日韩精品一区二区在线| 在线不卡a资源高清| 精品视频一区三区九区| 91浏览器在线视频| av亚洲精华国产精华| 岛国av在线一区| 国产高清精品网站| 国产美女在线观看一区| 国产剧情在线观看一区二区| 国内精品国产成人国产三级粉色 | 日韩三级免费观看| 91精品国产一区二区三区香蕉| 欧美日韩国产三级|