📄 pl_free_buf.uc
字号:
/* pl_free_buf.uc
*
*---------------------------------------------------------------------------
*
* 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, December, 2002
* revisions:
*
*
* --------------------------------------------------------------------------
*/
#include "common_uc.h"
#define SRAM_DESC_BASE 0x200000 // 2 Meg onwards
.reg ring_num $scratch_data
.reg sram_channel_number t0
.sig scratch_sig
br=ctx[0, context0#]
ctx_arb[kill]
context0#:
alu[sram_channel_number, --, B, CHAN_NUMBER, <<SRAM_CHANNEL_NUMBER_FIELD]
alu[t0, sram_channel_number, OR, Q_NUMBER, <<SRAM_Q_ARRAY_NUMBER_FIELD]
alu[ring_num, --, B, RING_1, <<2]
//**************************************************
// 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, 1, <<12] // Use ring size of 128 lw and base 0x1000
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
check_ring#:
scratch[get, $scratch_data, ring_num, 0, 1], ctx_swap[scratch_sig]
alu[--, $scratch_data, -, 0]
beq[check_ring#]
//*******************************************************
// Free buffer
//*******************************************************
.begin
.reg temp cellcount
alu[temp, --, B, $scratch_data]
immed[cellcount, 0x1c, <<16] // set OV EOP, and SOP
alu[--, cellcount, OR, 0]
sram[enqueue, --, t0, temp], indirect_ref
.end
br[check_ring#]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -