| /** | 
 |  * @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 */ |