diff options
Diffstat (limited to 'cpu/ixp/npe/include/IxNpeDlNpeMgrUtils_p.h')
-rw-r--r-- | cpu/ixp/npe/include/IxNpeDlNpeMgrUtils_p.h | 405 |
1 files changed, 405 insertions, 0 deletions
diff --git a/cpu/ixp/npe/include/IxNpeDlNpeMgrUtils_p.h b/cpu/ixp/npe/include/IxNpeDlNpeMgrUtils_p.h new file mode 100644 index 0000000000..a752f26e88 --- /dev/null +++ b/cpu/ixp/npe/include/IxNpeDlNpeMgrUtils_p.h @@ -0,0 +1,405 @@ +/** + * @file IxNpeDlNpeMgrUtils_p.h + * + * @author Intel Corporation + * @date 18 February 2002 + * @brief This file contains the private API for the NpeMgr module. + * + * + * @par + * IXP400 SW Release version 2.0 + * + * -- Copyright Notice -- + * + * @par + * Copyright 2001-2005, Intel Corporation. + * All rights reserved. + * + * @par + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Intel Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * @par + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @par + * -- End of Copyright Notice -- +*/ + + +/** + * @defgroup IxNpeDlNpeMgrUtils_p IxNpeDlNpeMgrUtils_p + * + * @brief The private API for the IxNpeDl NpeMgr Utils module + * + * @{ + */ + +#ifndef IXNPEDLNPEMGRUTILS_P_H +#define IXNPEDLNPEMGRUTILS_P_H + + +/* + * Put the user defined include files required. + */ +#include "IxNpeDl.h" +#include "IxOsalTypes.h" +#include "IxNpeDlNpeMgrEcRegisters_p.h" + + +/* + * Function Prototypes + */ + +/** + * @fn IX_STATUS ixNpeDlNpeMgrInsMemWrite (UINT32 npeBaseAddress, + UINT32 insMemAddress, + UINT32 insMemData, + BOOL verify) + * + * @brief Writes a word to NPE Instruction memory + * + * @param UINT32 [in] npeBaseAddress - Base Address of NPE + * @param UINT32 [in] insMemAddress - NPE instruction memory address to write + * @param UINT32 [in] insMemData - data to write to instruction memory + * @param BOOL [in] verify - if TRUE, verify the memory location is + * written successfully. + * + * This function is used to write a single word of data to a location in NPE + * instruction memory. If the <i>verify</i> option is ON, NpeDl will read back + * from the memory location to verify that it was written successfully + * + * @pre + * + * @post + * + * @return + * - IX_FAIL if verify is TRUE and the memory location was not written + * successfully + * - IX_SUCCESS otherwise + */ +IX_STATUS +ixNpeDlNpeMgrInsMemWrite (UINT32 npeBaseAddress, UINT32 insMemAddress, + UINT32 insMemData, BOOL verify); + + +/** + * @fn IX_STATUS ixNpeDlNpeMgrDataMemWrite (UINT32 npeBaseAddress, + UINT32 dataMemAddress, + UINT32 dataMemData, + BOOL verify) + * + * @brief Writes a word to NPE Data memory + * + * @param UINT32 [in] npeBaseAddress - Base Address of NPE + * @param UINT32 [in] dataMemAddress - NPE data memory address to write + * @param UINT32 [in] dataMemData - data to write to NPE data memory + * @param BOOL [in] verify - if TRUE, verify the memory location is + * written successfully. + * + * This function is used to write a single word of data to a location in NPE + * data memory. If the <i>verify</i> option is ON, NpeDl will read back from + * the memory location to verify that it was written successfully + * + * @pre + * + * @post + * + * @return + * - IX_FAIL if verify is TRUE and the memory location was not written + * successfully + * - IX_SUCCESS otherwise + */ +IX_STATUS +ixNpeDlNpeMgrDataMemWrite (UINT32 npeBaseAddress, UINT32 dataMemAddress, + UINT32 dataMemData, BOOL verify); + + +/** + * @fn void ixNpeDlNpeMgrExecAccRegWrite (UINT32 npeBaseAddress, + UINT32 regAddress, + UINT32 regData) + * + * @brief Writes a word to an NPE Execution Access register + * + * @param UINT32 [in] npeBaseAddress - Base Address of NPE + * @param UINT32 [in] regAddress - NPE Execution Access register address + * @param UINT32 [in] regData - data to write to register + * + * This function is used to write a single word of data to an NPE Execution + * Access register. + * + * @pre + * + * @post + * + * @return none + */ +void +ixNpeDlNpeMgrExecAccRegWrite (UINT32 npeBaseAddress, UINT32 regAddress, + UINT32 regData); + + +/** + * @fn UINT32 ixNpeDlNpeMgrExecAccRegRead (UINT32 npeBaseAddress, + UINT32 regAddress) + * + * @brief Reads the contents of an NPE Execution Access register + * + * @param UINT32 [in] npeBaseAddress - Base Address of NPE + * @param UINT32 [in] regAddress - NPE Execution Access register address + * + * This function is used to read the contents of an NPE Execution + * Access register. + * + * @pre + * + * @post + * + * @return The value read from the Execution Access register + */ +UINT32 +ixNpeDlNpeMgrExecAccRegRead (UINT32 npeBaseAddress, UINT32 regAddress); + + +/** + * @fn void ixNpeDlNpeMgrCommandIssue (UINT32 npeBaseAddress, + UINT32 command) + * + * @brief Issues an NPE Execution Control command + * + * @param UINT32 [in] npeBaseAddress - Base Address of NPE + * @param UINT32 [in] command - Command to issue + * + * This function is used to issue a stand-alone NPE Execution Control command + * (e.g. command to Stop NPE execution) + * + * @pre + * + * @post + * + * @return none + */ +void +ixNpeDlNpeMgrCommandIssue (UINT32 npeBaseAddress, UINT32 command); + + +/** + * @fn void ixNpeDlNpeMgrDebugInstructionPreExec (UINT32 npeBaseAddress) + * + * @brief Prepare to executes one or more NPE instructions in the Debug + * Execution Stack level. + * + * @param UINT32 [in] npeBaseAddress - Base Address of NPE + * + * This function should be called once before a sequence of calls to + * ixNpeDlNpeMgrDebugInstructionExec(). + * + * @pre + * + * @post + * - ixNpeDlNpeMgrDebugInstructionPostExec() should be called to restore + * registers values altered by this function + * + * @return none + */ +void +ixNpeDlNpeMgrDebugInstructionPreExec (UINT32 npeBaseAddress); + + +/** + * @fn IX_STATUS ixNpeDlNpeMgrDebugInstructionExec (UINT32 npeBaseAddress, + UINT32 npeInstruction, + UINT32 ctxtNum, + UINT32 ldur) + * + * @brief Executes a single instruction on the NPE at the Debug Execution Stack + * level + * + * @param UINT32 [in] npeBaseAddress - Base Address of NPE + * @param UINT32 [in] npeInstruction - Value to write to INSTR (Instruction) + * register + * @param UINT32 [in] ctxtNum - context the instruction will be executed + * in and which context store it may access + * @param UINT32 [in] ldur - Long Immediate Duration, set to non-zero + * to use long-immediate mode instruction + * + * This function is used to execute a single instruction in the NPE pipeline at + * the debug Execution Context Stack level. It won't disturb the state of other + * executing contexts. Its useful for performing NPE operations, such as + * writing to NPE Context Store registers and physical registers, that cannot + * be carried out directly using the Configuration Bus registers. This function + * will return TIMEOUT status if NPE not responding due to NPS is hang / halt. + * + * @pre + * - The NPE should be stopped and in a clean state + * - ixNpeDlNpeMgrDebugInstructionPreExec() should be called once before + * a sequential of 1 or more calls to this function + * + * @post + * - ixNpeDlNpeMgrDebugInstructionPostExec() should be called after + * a sequence of calls to this function + * + * @return + * - IX_NPEDL_CRITICAL_NPE_ERR if execution of instruction failed / timeout + * - IX_SUCCESS otherwise + */ +IX_STATUS +ixNpeDlNpeMgrDebugInstructionExec (UINT32 npeBaseAddress, + UINT32 npeInstruction, + UINT32 ctxtNum, UINT32 ldur); + + +/** + * @fn void ixNpeDlNpeMgrDebugInstructionPostExec (UINT32 npeBaseAddress) + * + * @brief Clean up after executing one or more NPE instructions in the + * Debug Stack Level + * + * @param UINT32 [in] npeBaseAddress - Base Address of NPE + * + * This function should be called once following a sequence of calls to + * ixNpeDlNpeMgrDebugInstructionExec(). + * + * @pre + * - ixNpeDlNpeMgrDebugInstructionPreExec() was called earlier + * + * @post + * - The Instruction Pipeline will cleared + * + * @return none + */ +void +ixNpeDlNpeMgrDebugInstructionPostExec (UINT32 npeBaseAddress); + + +/** + * @fn IX_STATUS ixNpeDlNpeMgrPhysicalRegWrite (UINT32 npeBaseAddress, + UINT32 regAddr, + UINT32 regValue, + BOOL verify) + * + * @brief Write one of the 32* 32-bit physical registers in the NPE data + * register file + * + * @param UINT32 [in] npeBaseAddress - Base Address of NPE + * @param UINT32 [in] regAddr - number of the physical register (0-31)* + * @param UINT32 [in] regValue - value to write to the physical register + * @param BOOL [in] verify - if TRUE, verify the register is written + * successfully. + * + * This function writes a physical register in the NPE data register file. + * If the <i>verify</i> option is ON, NpeDl will read back the register to + * verify that it was written successfully + * *Note that release 1.0 of this software supports 32 physical + * registers, but 64 may be supported in future versions. + * + * @pre + * - The NPE should be stopped and in a clean state + * - ixNpeDlNpeMgrDebugInstructionPreExec() should be called once before + * a sequential of 1 or more calls to this function + * + * @post + * - Contents of REGMAP Context Store register for Context 0 will be altered + * - ixNpeDlNpeMgrDebugInstructionPostExec() should be called after + * a sequence of calls to this function + * + * @return + * - IX_FAIL if verify is TRUE and the Context Register was not written + * successfully + * - IX_SUCCESS if Context Register was written successfully + * - IX_NPEDL_CRITICAL_NPE_ERR if Context Register was not written + * successfully due to timeout error where NPE is not responding + */ +IX_STATUS +ixNpeDlNpeMgrPhysicalRegWrite (UINT32 npeBaseAddress, UINT32 regAddr, + UINT32 regValue, BOOL verify); + + +/** + * @fn IX_STATUS ixNpeDlNpeMgrCtxtRegWrite (UINT32 npeBaseAddress, + UINT32 ctxtNum, + IxNpeDlCtxtRegNum ctxtReg, + UINT32 ctxtRegVal, + BOOL verify) + * + * @brief Writes a value to a Context Store register on an NPE + * + * @param UINT32 [in] npeBaseAddress - Base Address of NPE + * @param UINT32 [in] ctxtNum - context store to access + * @param IxNpeDlCtxtRegNum [in] ctxtReg - which Context Store reg to write + * @param UINT32 [in] ctxtRegVal - value to write to the Context Store + * register + * @param BOOL [in] verify - if TRUE, verify the register is + * written successfully. + * + * This function writes the contents of a Context Store register in the NPE + * register file. If the <i>verify</i> option is ON, NpeDl will read back the + * register to verify that it was written successfully + * + * @pre + * - The NPE should be stopped and in a clean state + * - ixNpeDlNpeMgrDebugInstructionPreExec() should be called once before + * a sequential of 1 or more calls to this function + * + * @post + * - ixNpeDlNpeMgrDebugInstructionPostExec() should be called after + * a sequence of calls to this function + * + * @return + * - IX_FAIL if verify is TRUE and the Context Register was not written + * successfully + * - IX_SUCCESS if Context Register was written successfully + * - IX_NPEDL_CRITICAL_NPE_ERR if Context Register was not written + * successfully due to timeout error where NPE is not responding + */ +IX_STATUS +ixNpeDlNpeMgrCtxtRegWrite (UINT32 npeBaseAddress, UINT32 ctxtNum, + IxNpeDlCtxtRegNum ctxtReg, UINT32 ctxtRegVal, + BOOL verify); + + +/** + * @fn void ixNpeDlNpeMgrUtilsStatsShow (void) + * + * @brief This function will display the statistics of the IxNpeDl NpeMgrUtils + * module + * + * @return none + */ +void +ixNpeDlNpeMgrUtilsStatsShow (void); + + +/** + * @fn void ixNpeDlNpeMgrUtilsStatsReset (void) + * + * @brief This function will reset the statistics of the IxNpeDl NpeMgrUtils + * module + * + * @return none + */ +void +ixNpeDlNpeMgrUtilsStatsReset (void); + + +#endif /* IXNPEDLNPEMGRUTILS_P_H */ |