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

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

?? mphy_loopback_pl_eg_rx.uc

?? 開發(fā)Inetl IXP2400平臺所必須的硬件診斷和測試程序。該軟件包支持的功能包括CPU基本功能檢測
?? UC
字號:
/* sys_loopback_eg_rx.uc
 *
 * This file receives CSIX packets and stores them in DRAM. If the number
 * of expected packets is received, it signals the XScale through the
 * mailbox register. If it has not received the expected number of packets,
 * it writes to scratch to infrom the transmit ME that there is a packet in
 * DRAM to be transmitted.
 *
 *---------------------------------------------------------------------------
 *                                                                      
 *                  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 RX_SINGLE_PHY				MSF_SINGLE_PHY
#define RX_MULTI_PHY				MSF_MULTIPLE_PHY
#define RX_WIDTH					MSF_WIDTH_1x32
#define RX_ENABLE_MASK				0x1
#define RX_MODE						MSF_CSIX
#define RX_ELEMENT_SIZE				MSF_ELEMENTSIZE_128
#define RBUF_ELEM_COUNT				(1 << (7 - RX_ELEMENT_SIZE))	// Tot. elements
#define RBUF_DATA_ELEM_COUNT		((RBUF_ELEM_COUNT >> 2) * 3)	// (Tot. elements / 4) * 3
#define RBUF_ADDR_SHF				(6 + RX_ELEMENT_SIZE)
#define RX_ELEMENTSIZE_BYTE			(1 << RBUF_ADDR_SHF)

#define RX_TRANSFER_THREAD			&$TransferReg00
#define RX_SIGNAL_THREAD			&rx_sig

#define ME_NUMBER_RX 				0
#define ME_NUMBER_TX				1
#define TX_THD_NUM					0
#define INTERTHD_SIG_NUM			15

#define MESSAGE_ADDR				0x200
#define DRAM_PCKT_BASE				0x2000000

#define TOTAL_NUM_PACKETS			36

.reg tmp0 tmp1 temp
.reg sopbit eopbit port_num
.reg RxThreadList 
.reg bytecnt elem packet_count ring_num dram_addr packet_num packet_size pkt_buff_addr
.reg RxConfigData0
.reg rbuf Rbufoffset 
.reg MsfAddress MsfAddress0 MsfAddress1
.reg $temp0 $temp1 $scratch_data
.reg $TransferReg00 $TransferReg01
.reg RxConfigData $RxConfigData0
.reg scratch_addr dramPacketBase
.reg $prepend_data0 $prepend_data1
.sig MSF_SIG scratch1 rx_sig sig_dram_xfer1 cap_sig scratch_sig
.xfer_order $TransferReg00 $TransferReg01
.xfer_order $prepend_data0 $prepend_data1

.set_sig rx_sig
.set $TransferReg00 $TransferReg01

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

Init_Value#:
	immed[packet_count, 0]
	immed[packet_num, 0]
	immed[packet_size, 0]
	immed[pkt_buff_addr, 0]
	immed[scratch_addr, MESSAGE_ADDR]
	alu[ring_num, --, B, RING_5, <<2]			// ring number in a register

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


//****************************************
// Configure for ctx0
//***************************************
	immed[MsfAddress0, RX_THREAD_FREELIST_0]
	immed[MsfAddress1, RBUF_ELEMENT_DONE]
	immed[RBuf, RBUF_TBUF ]
	immed[RxThreadList, ((RX_SIGNAL_THREAD << 12) | (ME_NUMBER_RX << 7) | (0 << 4))]
	alu[RxConfigData, RxThreadList,  OR , RX_TRANSFER_THREAD]
	alu[RxConfigData, --, B, RxConfigData, <<16]


//****************************************************
// Configure RX/TX Control
//****************************************************
	immed[RxConfigData0, ((0 << 9) | (RX_ELEMENT_SIZE << 2))]		//put control and data into diff freelist
	immed_w1[RxConfigData0, ((RX_MODE << 6) | (RX_WIDTH << 4) | (RX_MULTI_PHY << 3) | (0<<1)|(1<<0))]
	alu[$RxConfigData0, --, B, RxConfigData0]
	immed[MsfAddress, MSF_RX_CONTROL]
	msf[write, $RxConfigData0, MsfAddress, 0, 1], ctx_swap[MSF_SIG]

	immed[MsfAddress, CSIX_TYPE_MAP]
	alu[$temp1, --, B, MSF_CSIX_RBUF_DATA, <<BIT_SHF_UNICAST]
	msf[write, $temp1, MsfAddress, 0, 1], ctx_swap[MSF_SIG]


//******************************************************
// Initialize RBUF Freelist to add elements to the list
//******************************************************
.begin
	.reg temp_reg temp

	immed[temp_reg, 0]

init_RBUF#:
	alu[temp, --, B, temp_reg, <<16]
	msf[fast_wr, --, temp, RBUF_ELEMENT_DONE]
	alu[temp_reg, temp_reg, +, 1]
	alu[--, RBUF_ELEM_COUNT, -, temp_reg]
	bne[init_RBUF#]
.end


//****************************************************
// Configure RX/TX Control
//****************************************************
	immed[MsfAddress, MSF_RX_CONTROL]
	immed[RxConfigData0, ((0 << 9) | (RX_ELEMENT_SIZE << 2))]		//put control and data into diff freelist
	immed_w1[RxConfigData0, ((RX_ENABLE_MASK << 12) | (RX_MODE << 6) | (RX_WIDTH << 4) | (RX_MULTI_PHY << 3) | (0<<1)|(1<<0))]
	alu[$RxConfigData0, --, B, RxConfigData0]
	msf[write, $RxConfigData0, MsfAddress, 0, 1], ctx_swap[MSF_SIG]


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

//	immed[$scratch_base,0x200]
	immed[$scratch_head,0]
	immed[$scratch_tail,0]

	alu[$scratch_base, --, B, 0, <<9]	// 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]

	alu[$scratch_base, --, B, 2, <<9]	// Use ring size of 128 lw and base 0x400
	cap[write,$scratch_base,SCRATCH_RING_BASE_2],sig_done[scratch_sig1]
	cap[write,$scratch_head,SCRATCH_RING_HEAD_2],sig_done[scratch_sig2]
	cap[write,$scratch_tail,SCRATCH_RING_TAIL_2],sig_done[scratch_sig3]
	ctx_arb[scratch_sig1, scratch_sig2, scratch_sig3]

	alu[$scratch_base, --, B, 3, <<9]	// Use ring size of 128 lw and base 0x600
	cap[write,$scratch_base,SCRATCH_RING_BASE_3],sig_done[scratch_sig1]
	cap[write,$scratch_head,SCRATCH_RING_HEAD_3],sig_done[scratch_sig2]
	cap[write,$scratch_tail,SCRATCH_RING_TAIL_3],sig_done[scratch_sig3]
	ctx_arb[scratch_sig1, scratch_sig2, scratch_sig3]

	alu[$scratch_base, --, B, 4, <<9]	// Use ring size of 128 lw and base 0x800
	cap[write,$scratch_base,SCRATCH_RING_BASE_4],sig_done[scratch_sig1]
	cap[write,$scratch_head,SCRATCH_RING_HEAD_4],sig_done[scratch_sig2]
	cap[write,$scratch_tail,SCRATCH_RING_TAIL_4],sig_done[scratch_sig3]
	ctx_arb[scratch_sig1, scratch_sig2, scratch_sig3]

	alu[$scratch_base, --, B, 5, <<9]	// Use ring size of 128 lw and base 0xA00
	cap[write,$scratch_base,SCRATCH_RING_BASE_5],sig_done[scratch_sig1]
	cap[write,$scratch_head,SCRATCH_RING_HEAD_5],sig_done[scratch_sig2]
	cap[write,$scratch_tail,SCRATCH_RING_TAIL_5],sig_done[scratch_sig3]
	ctx_arb[scratch_sig1, scratch_sig2, scratch_sig3]
.end


context_enable_csr_config#:
//**********************************************************
// Program CSR Context Enables, used by the context arbiter
//**********************************************************

// Initialize CTX_Enables CSR (Put into 8 CTX mode) 
// Bit 31: In-Use contexts: 0 = 8 ctx mode, 1 = 4 ctx mode
// Bit 20: Next Neighbour registers are written from this ME
// Bit  17, 1=LM_ADDR_1 is GLOBAL, 0=LM_ADDR_1 is context_relative
// Bit  16, 1=LM_ADDR_0 is GLOBAL, 0=LM_ADDR_0 is context_relative
// Bits [15:8] CTX enables for contexts 7:0

#define In_Use_Contexts				0
#define Control_Store_Parity_Error	0
#define Control_Store_Parity_Enable	0
#define Breakpoint					0
#define NN_Mode						1
#define NN_Ring_Empty				0
#define LM_ADDR_1_Global			0
#define	LM_ADDR_0_Global			0

#define Enable						0xff

//*******************************************
// Configure Ctx_Enables
//*******************************************
.begin
	.reg CtxEnableData
	immed[CtxEnableData, (Enable << 8)]
	immed_w1[CtxEnableData, ((In_Use_Contexts << 15)|(Control_Store_Parity_Error << 13)|(Control_Store_Parity_Enable << 12)|(Breakpoint << 11)|(NN_Mode << 4)|(NN_Ring_Empty << 2)|(LM_ADDR_1_Global << 1)|(LM_ADDR_0_Global << 0))]
	local_csr_wr[CTX_Enables, CtxEnableData]
.end

	immed[temp, ((ME_NUMBER_TX << 7) | (TX_THD_NUM << 4) | (INTERTHD_SIG_NUM << 0))]
	alu[--, --, B, temp]
	cap[fast_wr, ALU, interthread_sig]


//********************************************************
// Start of Receive	
//********************************************************
ReceivePacket#:
	.set_sig rx_sig
	msf[fast_wr, --, MsfAddress0, RxConfigData] // add thread to freelist
	ctx_arb[rx_sig]


// RSW should be in xfer register
// Transfer RBUF data to sram_in transfer registers
//***************************************
// Extract RSW
//****************************************
RSW#:
	alu[elem, 0x7f, AND, $TransferReg00, >>24] 		// get element number
	alu[bytecnt, 0xff, AND, $TransferReg00, >>16]	// get pkt len
	alu[bytecnt, bytecnt, -, PREPEND_LENGTH]		// calculate packet length without prepend


//*********************************
// Transfer from ME to DRAM
//*********************************	
.begin
	.reg cur_rbuf_addr refcnt

	alu[cur_rbuf_addr, rbuf, OR, elem, <<RBUF_ADDR_SHF]
	msf[read64, $prepend_data0, cur_rbuf_addr, 0, 1], ctx_swap[msf_sig]
	alu[sopbit, 1, AND, $prepend_data1, >>1]
	alu[eopbit, 1, AND, $prepend_data1]
	alu[port_num, --, B, $prepend_data1, >>16]
	
	.if (packet_size == 0)
		alu[pkt_buff_addr, dramPacketBase, OR, packet_num, <<8]	
	.endif

	alu[cur_rbuf_addr, cur_rbuf_addr, +, PREPEND_LENGTH]
	alu[cur_rbuf_addr, --, B, cur_rbuf_addr, <<5]
	alu[cur_rbuf_addr, cur_rbuf_addr, OR, 1, <<4]		// set the overwrite bit for the RBUF addr
	alu[refcnt, --, B, bytecnt, >>3]
	alu[--, bytecnt, 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_rbuf_addr, OR, refcnt]	// indirect ref
	dram[rbuf_rd, --, pkt_buff_addr, packet_size, 8], indirect_ref, sig_done[sig_dram_xfer1]
	ctx_arb[sig_dram_xfer1]
.end

/*
.begin
	.reg scratch_add $s_xfer
	.sig scratch_sig

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

/*
//*****************************************************************
//  Write to MAILBOX0 register to signal completion to XScale code
//*****************************************************************
#ifndef WORKBENCH_SIM
.begin
	.reg pci_base pci_offset
	.reg $pci_rw
	.sig pci_sig

	immed[pci_base, (PCI_LOCAL_CSR_BASE & MASK_16BIT)]
	immed_w1[pci_base, ((PCI_LOCAL_CSR_BASE >> 16) & MASK_16BIT)]
	immed[pci_offset, MAILBOX0_OFFSET]
	alu[$pci_rw, --, B, bytecnt]
	pci[write, $pci_rw, pci_base, pci_offset, 1], ctx_swap[pci_sig]
.end
#endif
*/

//**************************************************************
//  Free up Element by writing to RBUF_ELEMENT_DONE{Channel}
//**************************************************************
	alu[$temp0, --, B, elem]
	msf[write, $temp0, MsfAddress1, 0, 1], ctx_swap[msf_sig]

	alu[packet_size, packet_size, +, bytecnt]
	.if (eopbit == 0)
		br[next_packet#]
	.endif

	.local temp
	alu[temp, packet_size, OR, port_num, <<8]
	alu[$scratch_data, temp, OR, packet_num, <<16]
	.endlocal

fill#:
	br_inp_state[SCR_Ring1_Full, fill#]
	scratch[put, $scratch_data, ring_num, 0, 1], ctx_swap[scratch_sig]
	immed[packet_size, 0]

	alu[packet_num, packet_num, +, 1]
	.if (packet_num == TOTAL_NUM_PACKETS)
		immed[packet_num, 0]
	.endif
	
next_packet#:
	br[ReceivePacket#]

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩日欧美一区二区三区| 这里只有精品99re| 久久99国产精品尤物| 日韩在线a电影| 日韩激情一区二区| 日本欧美韩国一区三区| 日韩不卡在线观看日韩不卡视频| 亚洲午夜电影在线观看| 一区二区免费看| 亚洲自拍另类综合| 亚洲图片欧美视频| 日韩精品电影一区亚洲| 蜜臀91精品一区二区三区| 精品一区二区三区欧美| 韩国av一区二区三区四区| 国产精品一区专区| 成人深夜福利app| 99久久综合狠狠综合久久| 色婷婷综合久久久久中文| 欧美在线制服丝袜| 日韩国产在线观看一区| 美国av一区二区| 亚洲国产成人av网| 免费在线看成人av| 久久av中文字幕片| 国产69精品久久久久毛片| 成人a免费在线看| 欧洲另类一二三四区| 在线播放国产精品二区一二区四区| 欧美一区二区三区思思人| 99精品视频中文字幕| 欧美国产成人精品| 欧美精品色综合| 911精品国产一区二区在线| 99久久er热在这里只有精品15| 欧美自拍丝袜亚洲| 日韩小视频在线观看专区| 欧美国产一区二区| 亚洲成人资源在线| 国产一区二区三区不卡在线观看 | 国产日韩精品一区二区三区| 亚洲天堂网中文字| 久色婷婷小香蕉久久| 国产精品一区免费在线观看| 91亚洲精品久久久蜜桃网站| 这里只有精品免费| 18欧美亚洲精品| 欧美a级一区二区| 97精品视频在线观看自产线路二| 91精品国产综合久久精品图片| 国产午夜一区二区三区| 亚洲国产精品久久久男人的天堂| 精品一区二区三区久久| 91国偷自产一区二区三区成为亚洲经典 | 欧美性感一区二区三区| 亚洲精品一区二区三区蜜桃下载| 亚洲欧美激情视频在线观看一区二区三区| 日韩精品一区第一页| 9色porny自拍视频一区二区| 日韩一区二区三| 国产精品久久久久久久裸模| 蜜臀91精品一区二区三区| 色天使久久综合网天天| www国产精品av| 无吗不卡中文字幕| 99久久精品久久久久久清纯| 欧美xxxxx裸体时装秀| 一区二区不卡在线播放| 国产91精品露脸国语对白| 欧美一区二区三区性视频| 一区二区三区在线观看动漫| 懂色av中文字幕一区二区三区| 91精品国产色综合久久不卡电影 | 成人手机在线视频| 精品日韩一区二区三区免费视频| 亚洲一区中文在线| 95精品视频在线| 欧美激情艳妇裸体舞| 韩国理伦片一区二区三区在线播放| 欧美日韩你懂得| 亚洲精品国产无天堂网2021| voyeur盗摄精品| 国产日产精品一区| 国产在线视频一区二区三区| 欧美一区二区三区成人| 亚洲h动漫在线| 在线观看国产一区二区| 亚洲欧洲综合另类| 成人av片在线观看| 国产精品久久久久影院| 国产福利91精品一区| 久久综合五月天婷婷伊人| 美女脱光内衣内裤视频久久网站 | 精品毛片乱码1区2区3区| 性做久久久久久免费观看| 色8久久人人97超碰香蕉987| 自拍偷拍欧美激情| 99re视频这里只有精品| 国产精品人成在线观看免费| 国产精品996| 中文av一区二区| 不卡大黄网站免费看| 国产精品久久久久aaaa樱花 | 国产精品久久毛片a| www.日韩精品| 亚洲丝袜精品丝袜在线| 91福利在线播放| 亚洲与欧洲av电影| 欧美日韩国产成人在线91| 婷婷综合久久一区二区三区| 欧美一区二区三区人| 精品一区二区三区免费播放| wwwwww.欧美系列| 国产99久久久精品| 国产精品毛片久久久久久| 91在线视频官网| 亚洲自拍偷拍网站| 欧美精品精品一区| 美女网站视频久久| 国产三级精品三级| 成人av动漫网站| 一区二区三区在线看| 欧美精品亚洲一区二区在线播放| 蜜臀av性久久久久蜜臀aⅴ流畅| 337p粉嫩大胆噜噜噜噜噜91av| 成人高清在线视频| 亚洲欧美日韩国产手机在线 | 日本一区二区免费在线观看视频 | 国产乱国产乱300精品| 精品国产乱码久久久久久牛牛| 国产一本一道久久香蕉| 国产精品美女久久久久久| 91视视频在线观看入口直接观看www | 亚洲精品一区二区三区四区高清| 成人在线综合网| 亚洲成人激情综合网| 日韩一级二级三级| 高清国产一区二区三区| 亚洲一级二级在线| 欧美成人福利视频| 97久久精品人人澡人人爽| 日日摸夜夜添夜夜添国产精品| 久久亚洲二区三区| 91免费在线视频观看| 日韩二区三区四区| 午夜精品久久久久久久久久久| 日韩三级精品电影久久久| 国产99一区视频免费| 午夜欧美在线一二页| 国产三区在线成人av| 欧美精品在欧美一区二区少妇| 国产精一品亚洲二区在线视频| 一区二区三区精品视频| 欧美xxxxx牲另类人与| 一本色道久久综合亚洲aⅴ蜜桃 | 日本不卡一区二区三区高清视频| 欧美精彩视频一区二区三区| 欧美日韩mp4| 成人晚上爱看视频| 日本不卡一区二区| 1000部国产精品成人观看| 日韩精品一区二区三区三区免费| 91麻豆精品视频| 国内精品国产三级国产a久久| 亚洲综合视频在线| 国产精品美女久久久久久久网站| 91麻豆精品国产自产在线观看一区| 成人性生交大片免费看视频在线 | 舔着乳尖日韩一区| 亚洲欧美怡红院| 日韩免费电影一区| 欧美性受xxxx| 91在线视频网址| 国产成人午夜高潮毛片| 蜜臀av在线播放一区二区三区 | 91国产免费看| 成人永久免费视频| 国内精品伊人久久久久av影院| 亚洲成av人片一区二区三区| 亚洲欧美视频在线观看视频| 国产网站一区二区| 欧美精品一区二区高清在线观看| 欧美日韩国产三级| 日本高清不卡aⅴ免费网站| 丁香婷婷综合色啪| 国产在线视频一区二区三区| 美国十次了思思久久精品导航| 天天色天天操综合| 一区二区高清免费观看影视大全| 日韩一区日韩二区| 欧美国产精品一区二区三区| 26uuu另类欧美亚洲曰本| 欧美电影免费观看完整版| 欧美一级日韩免费不卡| 欧美高清dvd| 国产精品女主播av| 国产女人18毛片水真多成人如厕 | 欧美激情一区二区三区四区| 26uuu另类欧美| 久久精品男人天堂av|