]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - keystone-rtos/pa-lld.git/commitdiff
verified EOAM control packet verification and send to host queue
authorAravind Batni <aravindbr@ti.com>
Wed, 24 Dec 2014 20:26:22 +0000 (15:26 -0500)
committerAravind Batni <aravindbr@ti.com>
Wed, 24 Dec 2014 20:26:22 +0000 (15:26 -0500)
67 files changed:
fw/v1/classify1.p
fw/v1/classify2.p
fw/v1/classify3.p
fw/v1/efp.p
fw/v1/eg0_pdsp0.bib
fw/v1/eg0_pdsp1.bib
fw/v1/eg0_pdsp2.bib
fw/v1/eg1_pdsp0.bib
fw/v1/eg2_pdsp0.bib
fw/v1/in0_pdsp0.bib
fw/v1/in0_pdsp0.p
fw/v1/in0_pdsp1.bib
fw/v1/in0_pdsp1.p
fw/v1/in1_pdsp0.bib
fw/v1/in1_pdsp0.p
fw/v1/in1_pdsp1.bib
fw/v1/in1_pdsp1.p
fw/v1/in2_pdsp0.bib
fw/v1/in2_pdsp0.p
fw/v1/in3_pdsp0.bib
fw/v1/in4_pdsp0.bib
fw/v1/in4_pdsp0.p
fw/v1/in4_pdsp1.bib
fw/v1/meminit.p
fw/v1/pa2_eg0_pdsp0_bin.c
fw/v1/pa2_eg0_pdsp1_bin.c
fw/v1/pa2_eg0_pdsp2_bin.c
fw/v1/pa2_eg1_pdsp0_bin.c
fw/v1/pa2_eg2_pdsp0_bin.c
fw/v1/pa2_in0_pdsp0_bin.c
fw/v1/pa2_in0_pdsp1_bin.c
fw/v1/pa2_in1_pdsp0_bin.c
fw/v1/pa2_in1_pdsp1_bin.c
fw/v1/pa2_in2_pdsp0_bin.c
fw/v1/pa2_in3_pdsp0_bin.c
fw/v1/pa2_in4_pdsp0_bin.c
fw/v1/pa2_in4_pdsp1_bin.c
fw/v1/pa2_post_pdsp0_bin.c
fw/v1/pa2_post_pdsp1_bin.c
fw/v1/pacfgcmn.p
fw/v1/pam.p
fw/v1/parse1.p
fw/v1/parsescope.h
fw/v1/pdsp_ethproto.h
fw/v1/pdsp_mem.h
fw/v1/pdsp_mem2.h
fw/v1/pdsp_pa.h
fw/v1/pdsp_subs.h
fw/v1/post_pdsp0.bib
fw/v1/post_pdsp1.bib
makefile
pa.h
pasahost.h [changed mode: 0755->0644]
src/v0/pa.c
src/v1/pa.c
src/v1/pafrm.h
src/v1/painit.c
src/v1/paloc.h
test/PAUnitTest/k2e/c66/bios/PA_UnitTest_K2E_testProject.txt
test/PAUnitTest/k2l/c66/bios/PA_UnitTest_K2L_testProject.txt
test/PAUnitTest/src/armv7/linux/fw_init.c
test/PAUnitTest/src/c66x/bios/framework.c
test/PAUnitTest/src/c66x/bios/testMain.c
test/PAUnitTest/src/c66x/bios/testmem.c [changed mode: 0755->0644]
test/PAUnitTest/src/common/common.c
test/PAUnitTest/src/pautest.h
test/PAUnitTest/src/tests/test3.c

index b31d7fa682f1d4565735027e69d0abe6301f6eb9..b9f406064e69c1a4be49052b258d3c7f77e76050 100644 (file)
@@ -48,7 +48,7 @@ f_c1Start:
     mov   r2, 1
     sbco  r2, cMailbox, 0, 4
 
-       // Wait for the set command to take hold
+    // Wait for the set command to take hold
     wbs  s_flags.info.tStatus_Command0
 
     // The host will clear mailbox slot 0 when it is ready for this PDSP to run
@@ -70,11 +70,12 @@ l_c1Start0:
 
     zero  &s_runCxt,      SIZE(s_runCxt)
 
+    // Need not store PDSP ID as it is replaced with #define
     // Store the PDSP ID
     // TBD: To be replaced with #define (from image build)
-    mov   s_runCxt.pdspId, PASS_PDSP_ID
-    sbco  s_runCxt.pdspId, PAMEM_CONST_PDSP_INFO,  OFFSET_ID,  1
-    
+    mov   r2.b0, PASS_PDSP_ID
+    sbco  r2.b0, PAMEM_CONST_PDSP_INFO,  OFFSET_ID,  1
+
 #ifdef PASS_PROC_RA
     // Temporary debug code
     //set s_runCxt.flag2.t_raEn, 
@@ -129,8 +130,9 @@ l_c1Start0:
    .using  cdeScope    
 
 f_mainLoop:
-
 #ifdef PASS_TIMESTAMP_OP 
+    // Only when the timer feature is enabled
+    // qbbc l_mainLoop000, s_runCxt.flag3.t_eoamEn
     // look for timer roll over
     qbbc l_mainLoop000, s_flags.info.tStatus_Timer
         set  s_flags.info.tStatus_Timer // set to clear timer event 
@@ -143,10 +145,38 @@ l_mainLoop000:
 
 #endif
 
-#ifdef PASS_PROC_IP_REASSEM    
 
-   // Look for command (FIRMWARE_CMD_IP_REASSEM_CFG only) 
+#ifdef PASS_PROC_CMD1
+   // Look for command 
     qbbc l_mainLoop001, s_flags.info.tStatus_Command1
+     // If there is a command, differentiate between EOAM and IP Reassem
+     // in the PDSP that has both features
+#ifdef PASS_PROC_IP_REASSEM    
+     lbco  r1.b0, cMailbox, FIRMWARE_CMD_IP_REASSEM_CFG_OFFSET, 1
+     qbeq  l_mainLoop00_ipReassem_0, r1.b0, FIRMWARE_CMD_IP_REASSEM_CFG
+#endif     
+#ifdef PASS_PROC_EOAM_CMD
+        // Process EOAM config command
+        lbco  r1, cMailbox, FIRMWARE_CMD_EOAM_CFG_OFFSET, 4
+        
+        // Clear the valid bit fields 
+        not r1.b2, r1.b1
+        // force clear valid bits to zero and retain valid bits positions
+        and s_runCxt.flag3, s_runCxt.flag3, r1.b2
+
+        // Clear garbage ctrl bit fields (since the sender already cleard it no need */
+        // and r1.b0, r1.b0, r1.b1
+        
+        // set the run time flags
+        or  s_runCxt.flag3, s_runCxt.flag3, r1.b0
+
+        // clear the command flag
+        mov   r1, 0           
+        sbco  r1, cMailbox, FIRMWARE_CMD_EOAM_CFG_OFFSET, 4
+        jmp   l_mainLoop001
+#endif
+#ifdef PASS_PROC_IP_REASSEM          
+l_mainLoop00_ipReassem_0:
         // Process IP Reassembly Configuration Update
         mov  r0.w0, FIRMWARE_INNER_IP_PDSP 
         qbeq l_mainLoop00_ipReassem_1, r0.w0,   PASS_PDSP_ID            
@@ -176,11 +206,11 @@ l_mainLoop00_ipReassem_4:
         
         // clear command flag
         mov  r1, 0
-           sbco  r1, cMailbox, FIRMWARE_CMD_IP_REASSEM_CFG_OFFSET, 4
+        sbco  r1, cMailbox, FIRMWARE_CMD_IP_REASSEM_CFG_OFFSET, 4
         
-        // pass through
-        
-#endif 
+        // pass through        
+#endif        
+#endif
 
 l_mainLoop001:
 
@@ -264,6 +294,12 @@ l_mainLoop00:
                     #ifndef PASS_PROC_FIREWALL
                     call  f_c1ForwardHeldPacketMatch
                     #else
+                        #ifdef PASS_PROC_EOAM
+                            qbbc  l_c1FwdFirewallMatch, s_runCxt.flag3.t_eoamEn                     
+                            call  f_c1ForwardHeldEoamPktMatch
+                            jmp   l_mainLoop1
+                        #endif  
+l_c1FwdFirewallMatch:                      
                     call  f_c1ForwardHeldFirewallPktMatch
                     #endif
                     jmp   l_mainLoop1
@@ -272,6 +308,12 @@ l_mainLoop0:
                #ifndef PASS_PROC_FIREWALL
                call  f_c1ForwardHeldPacketNoMatch
                #else
+                        #ifdef PASS_PROC_EOAM
+                            qbbc  l_c1FwdFirewallNoMatch, s_runCxt.flag3.t_eoamEn                     
+                            call  f_c1ForwardHeldEoamPktNoMatch
+                            jmp   l_mainLoop1
+                        #endif  
+l_c1FwdFirewallNoMatch:                  
                call  f_c1ForwardHeldFirewallPktNoMatch
                #endif
 l_mainLoop1:
@@ -753,7 +795,8 @@ f_c1ForwardHeldPacketMatch:
     // and then patched in
   
     // The run context has the PDSP ID 
-    lsl    s_pktCxt.phyLink,  s_runCxt.pdspId,    PKT_PDSP_ID_SHIFT
+    //lsl    s_pktCxt.phyLink,  s_runCxt.pdspId,    PKT_PDSP_ID_SHIFT
+    mov      s_pktCxt.phyLink,  PASS_PDSP_ID << PKT_PDSP_ID_SHIFT
    
     //  Or in the LUT1 matching index
     or     s_pktCxt.phyLink,  s_pktCxt.phyLink,   s_l1Status.index
@@ -1469,7 +1512,8 @@ f_errCurrentPktForward:
     jmp f_c1CurPktForward
 
     .leave currentFwdScope
-    
+
+#ifndef PASS_PROC_FIREWALL    
 // ******************************************************************************************************
 // * FUNCTION PURPOSE: Standard routing of the current packet
 // ******************************************************************************************************
@@ -1525,9 +1569,7 @@ f_errCurrentPktForward:
 f_nextFailPktForward:
 
     // Inc the no match stat
-    #ifndef PASS_PROC_FIREWALL
     mov s_stats.value,  PA_STATS_UPDATE_REQ | PA_STATS_LUT1_NO_MATCH 
-    #endif   
     mov r30.w0, fci_c1Parse14_1
 
     // Broadcast and multicast check if no match found 
@@ -1586,7 +1628,8 @@ l_nextFailPktForward0:
     .leave lut1MatchScope
 
     .leave currentFwdScope
-    
+#endif
+
 // *********************************************************************************************
 // * FUNCTION PURPOSE: C1 Current packet forwarding
 // *********************************************************************************************
@@ -2260,9 +2303,9 @@ l_BcMcCurrentPktForward_end:
 
 f_c1Parse:
 
-       lbco  r1, cMailbox, 0, 4
-       add   r1, r1, 1
-       sbco  r1, cMailbox, 0, 4
+    lbco  r1, cMailbox, 0, 4
+    add   r1, r1, 1
+    sbco  r1, cMailbox, 0, 4
 
     // Read the descriptor
     xin  XID_CDEDATA,  s_pktDescr,   SIZE(s_pktDescr)
@@ -2270,6 +2313,85 @@ f_c1Parse:
     // Read packet extended info
     xin  XID_PINFO_SRC, s_pktExtDescr, SIZE(s_pktExtDescr)
     
+#ifdef PASS_PROC_EOAM
+    // ignore the bypass flag when EOAM feature is enabled
+    qbbc l_c1Parse0, s_runCxt.flag3.t_eoamEn
+    // The context is read from the control section. Advance
+    // to the control section
+    mov   s_cdeCmdWd.operation,  CDE_CMD_ADVANCE_TO_CONTROL
+    xout  XID_CDECTRL,           s_cdeCmdWd,            4
+
+    // Insert 32 bytes of PS info
+    // This is legal even though the window has advanced to control
+    //mov s_cdeInsert.operation,  CDE_CMD_INSERT_PSDATA
+    //mov s_cdeInsert.byteCount,  32
+    ldi  r4,        CDE_CMD_INSERT_PSDATA | (32 << 8)
+    xout XID_CDECTRL,           s_cdeCmdWd,             4
+
+    // below check is not needed since the packet is not from Ethernet OR SRIO
+    // qbeq  l_c1Parse6,   s_pktDescr.ctrlDataSize,    0   // Packet is from ethernet
+    // qbne  l_c1Parse3a,  s_pktDescr.ctrlDataSize,    8   // Only SRIO packet contains 8-byte PS Info
+        // Extract pkt type
+        // lsr   r1.b0,        s_pktDescr.pktType_pvtFlags,  PA_PKT_TYPE_SHIFT 
+        // qbeq  l_c1Parse8,   r1.b0,  PA_PKT_TYPE_SRIO_TYPE_9    
+        // qbeq  l_c1Parse8,   r1.b0,  PA_PKT_TYPE_SRIO_TYPE_11    
+
+// l_c1Parse3a:
+    // l_c1Parse3a - l_c1Parse5: command and re-entry packet
+    // Read in the whole packet context. This is the largest command size
+    // There is no cost if this is not a data packet. 
+    xin  XID_CDEDATA,        s_pktCxt,          SIZE(s_pktCxt)
+
+    // extract the command ID 
+    lsr  r1.b0,  s_pktCxt.paCmdId_Length, SUBS_CMD_WORD_ID_SHIFT
+
+    // qbeq  l_c1Parse9,         r1.b0,   PSH_CMD_PA_RX_PARSE
+    qbeq  f_paConfigure,      r1.b0,   PSH_CMD_CONFIG
+    
+// l_c1Parse9:
+    // Delete the control information. It will be replace with the packet context during parse
+    //mov   s_cdeCmdWd.operation,  CDE_CMD_FLUSH_TO_PACKET
+    //xout  XID_CDECTRL,           s_cdeCmdWd,                SIZE(s_cdeCmdWd)
+    
+    // Delete only the pktCxt from the control info
+    mov  s_cdeCmdWd.operation,  CDE_CMD_FLUSH
+    //mov  s_cdeCmdWd.byteCount,  (SIZE(s_pktCxt) + 7) & 0xf8     // Round up to multiple of 8 bytes
+    sub  s_cdeCmdWd.byteCount,  s_pktDescr.ctrlDataSize,    8 
+    xout XID_CDECTRL,           s_cdeCmdWd,                 4
+     
+    mov   s_cdeCmdWd.operation,  CDE_CMD_ADVANCE_TO_PACKET 
+    xout  XID_CDECTRL,           s_cdeCmdWd,                4
+
+    // save  Extended Header to be examined later
+    xout   XID_PINFO_A, s_pktExtDescr, SIZE(s_pktExtDescr)  
+
+// l_c1Parse10:
+   // Default RA setting 
+   // TBD: priority settings
+  zero &s_raInfo,   SIZE(s_raInfo)
+  qbbc l_c1Parse0_set_ra_threadId_1, s_runCxt.flag2.t_raToQueue
+    // RA output is host queue
+    mov  s_raInfo.flags, THREADID_CDMA0
+    jmp  l_c1Parse0_set_ra_threadId_end
+l_c1Parse0_set_ra_threadId_1:  
+    mov  s_raInfo.flags, PASS_RA_DEST_THREAD_ID 
+    // pass through  
+l_c1Parse0_set_ra_threadId_end:
+  wbs   s_flags.info.tStatus_CDEOutPacket
+  sbco  s_raInfo,  cCdeOutPkt,  SIZE(s_pktDescr) + 24,  SIZE(s_raInfo)
+
+  // s_l1View1(16), s_l1View2 (16) and s_l1View3 (16) share the same area
+  // Clear the LUT1 view areas
+  // Note: packet descriptor will still reside at r6-r13
+    zero &s_l1ViewD,     SIZE(s_l1ViewD)
+    xout  XID_LUT1V1,     s_l1ViewD,         SIZE(s_l1ViewD)
+    xout  XID_LUT1V2,     s_l1ViewD,         SIZE(s_l1ViewD)
+    xout  XID_LUT1V3,     s_l1ViewD,         SIZE(s_l1ViewD)
+
+    jmp  f_c1ParseMac
+
+l_c1Parse0:    
+#endif
     // Check drop/bypass flag
     qbbc l_c1Parse1,  s_pktDescr.pktFlags.t_pktBypass
         // Clear Bypass at the last PDSP
@@ -2601,7 +2723,7 @@ l_c1Parse9a:
     and s_next.Hdr,  s_pktCxt.eId_portNum_nextHdr.b0,  0x3f
 
     mov s_param.action,     SUBS_ACTION_PARSE
-    
+
 #ifndef PASS_PROC_FIREWALL    
     // non-Firewall operation
     
@@ -2655,7 +2777,7 @@ l_c1Parse9b:
     qbeq l_c1Parse9b, s_next.Hdr, PA_HDR_CUSTOM_C1
     qbeq l_c1Parse9b, s_next.Hdr, PA_HDR_CUSTOM_C2
     qble l_c1Parse9b, s_next.Hdr, PA_HDR_TCP
-        // Firmwall parsing preparation
+        // Firewall parsing preparation
         and  s_pktCxt.eId_portNum_nextHdr.b1,  s_pktCxt.eId_portNum_nextHdr.b1,  NOT_PKT_EIDX_MASK
         mov  r28.b0, s_pktCxt.startOffset
         set  s_runCxt.flags.t_l4Avil
@@ -2697,7 +2819,6 @@ l_c1Parse10_set_ra_threadId_end:
     xout  XID_LUT1V1,     s_l1ViewD,         SIZE(s_l1ViewD)
     xout  XID_LUT1V2,     s_l1ViewD,         SIZE(s_l1ViewD)
     xout  XID_LUT1V3,     s_l1ViewD,         SIZE(s_l1ViewD)
-    
     set   s_runCxt.flags.t_firstLookup
 l_c1Parse11:
     //  The main parse loop
@@ -2731,7 +2852,7 @@ l_c1Parse12:
         // default route is enabled globally
         // Update r1 with offset for interface (get to zero base)
         lsr   r1.w0, s_pktCxt.eId_portNum_nextHdr, PKT_EMACPORT_SHIFT
-           and   r1.w0, r1.w0, PKT_EMACPORT_MASK
+        and   r1.w0, r1.w0, PKT_EMACPORT_MASK
         
         qbeq  l_c1Parse14, r1.w0, 0
         mov   r1.w2, OFFSET_DEFAULT_ROUTE_CFG_BASE 
@@ -2769,7 +2890,8 @@ l_c1Parse14_DFR_end:
     // Restore the stratOffset
     mov  s_pktCxt.startOffset,   r28.b0 
 #endif    
-            
+
+fci_c1Parse14:            
 l_c1Parse14:
     // Restore the latest extended Packet Info
     xin   XID_PINFO_A, s_pktExtDescr, SIZE(s_pktExtDescr)  
@@ -2930,12 +3052,259 @@ l_c1Parse18:
     .leave  checkScope
     .leave  pktCaptureScope
 
+
+#ifdef  PASS_PROC_EOAM
+// **************************************************************************************************
+// * FUNCTION PURPOSE: Forward a packet that had a match in the EOAM LUT1 search
+// **************************************************************************************************
+// * DESCRIPTION:  On entry r5 contains the LUT1 status, which indicated a match for the
+// *               held packet, and the match index value. The packet is forwarded as required.
+// *    
+// *   Register Usage:  
+// * 
+// *   R0:
+// *   R1:    scratch
+// *   R2:
+// *   R3:
+// *   R4:
+// *   R5:    LUT1 Status (s_l1Status) / LUT1 Command (s_l1Cmd)  - lut1Scope
+// *   R6:         | packet capture info (L2 PDSP only)
+// *   R7:         |
+// *   R8:   LUT1 info (s_l1f)                                       -
+// *   R9:      |                                                    -
+// *   R10:     |  Forward match Info (valid at function exit)       -  lut1MatchSCope
+// *   R11:     |                                                    -
+// *   R12:     |                                                    -
+// *   R13:
+// *   R14:          |                                          
+// *   R15:          |  Extended Header Info                                        
+// *   R16:          |                                          
+// *   R17:          |  
+// *   R18:          |
+// *   R19:            | usrStats FIFO CB
+// *   R20:            | usrStats Request
+// *   R21:
+// *   R22:
+// *   R23:
+// *   R24:
+// *   R25:
+// *   R26:  
+// *   R27:  
+// *   R28:  
+// *   R29:  c1RunContext (s_runCxt)                                -  Global Scope
+// *   R30:  w2-unused     w0-function return address               -
+// *   R31:  System Flags (s_flags)                                 -
+// *
+// *
+// **************************************************************************************************/
+
+    .using  lut1Scope
+    .using  lut1MatchScope
+    .using  pktScope        // Used only for sizing
+    .using  cdeScope    
+    .using  usrStatsFifoScope
+
+f_c1ForwardHeldEoamPktMatch:
+
+    //     Record the match
+    mov    s_stats.value,  PA_STATS_UPDATE_REQ | PA_STATS_LUT1_MATCH 
+
+    // Load the routing info associated with LUT1 
+    // This is the l1Info and match routing information
+    lsl    r1.w0,    s_l1Status.index,             6                                     // l1 index * 256
+    lbco   &s_l1f,   PAMEM_CONST_PDSP_LUT1_INFO,   r1.w0,   SIZE(s_l1f)+SIZE(s_fmPlace)  // l1Info + routing info
+
+    // The following fields must be patched into the packet context with
+    // Results from the lookup
+    //   // previous LUT1 match bit
+    //   // custom C2 bit
+    //   - LUT1 PDSP ID
+    //   - LUT1 match index
+    // The 16 bit word s_pktCxt.phyLink will be created in r1.w0
+    // and then patched in
+  
+    // The run context has the PDSP ID 
+    //lsl    s_pktCxt.phyLink,  s_runCxt.pdspId,    PKT_PDSP_ID_SHIFT
+    mov      s_pktCxt.phyLink,  PASS_PDSP_ID << PKT_PDSP_ID_SHIFT
+   
+    //  Or in the LUT1 matching index
+    or     s_pktCxt.phyLink,  s_pktCxt.phyLink,   s_l1Status.index
+
+    // Set the bit to indicate a LUT1 match has occurred
+    set    s_pktCxt.flags.t_flag_pl1Match  
+
+#ifdef TO_BE_DELETE    
+    // Set the virtual link enable bit if necessary
+    qbbc   l_c1ForwardHeldPacketEoamMatch0, s_l1f.ctrlFlag.vlink_enable
+        set s_pktCxt.flags.t_flag_use_vlink                 
+        // Store virtual link num in s_pktCxt.vlanPri_vLink for further stages
+        and    s_pktCxt.vlanPri_vLink.b1, s_pktCxt.vlanPri_vLink.b1,  PKT_VALN_PRI_MASK 
+        or     s_pktCxt.vlanPri_vLink.b1, s_pktCxt.vlanPri_vLink.b1,  s_l1fv.vLinkNum.b1
+        mov    s_pktCxt.vlanPri_vLink.b0, s_l1fv.vLinkNum.b0
+        sbco   s_pktCxt.vlanPri_vLink, cCdeHeldPkt, SIZE(s_pktDescr)+OFFSET(s_pktCxt.vlanPri_vLink), SIZE(s_pktCxt.vlanPri_vLink)
+
+l_c1ForwardHeldPacketEoamMatch0:
+#endif
+    // The pmatch, c2c, pdsp ID and LUT1 index are patched into psinfo
+    sbco   s_pktCxt.flags,     cCdeHeldPkt,  SIZE(s_pktDescr)+OFFSET(s_pktCxt.flags), SIZE(s_pktCxt.flags)
+    sbco   s_pktCxt.phyLink,   cCdeHeldPkt,  SIZE(s_pktDescr)+OFFSET(s_pktCxt.phyLink), SIZE(s_pktCxt.phyLink) 
+
+    // Record the effective packet size for user statistics update
+    // It will casue 3 cycles for all forwarding packets regardless of statistics update or not
+    // lbco    s_usrStatsReq.pktSize,  cCdeHeldPkt,  SIZE(s_pktDescr)+OFFSET(s_pktCxt.endOffset), SIZE(s_pktCxt.endOffset) 
+    mov s_usrStatsReq.pktSize,  s_pktCxt.endOffset 
+    
+    // Patch swinfo0 with the context
+    sbco s_matchForward_eoam.context,  cCdeHeldPkt, OFFSET(s_pktDescr.swinfo0),  4
+
+    // TBD: Clear TimeSync word (Should we clear time stamp)
+
+    // Check whether the packet is 802.1ag packet
+    qbbc l_stdHeldPktEoamForward2,s_pktCxt6.eoamFlags.t_flag_8021ag    
+      // target flow matched and it is 802.1ag packet
+      // check if we need to force disable statistics counts
+      // Statistics Updates here as per MEG level and Packet Opcodes
+          qbgt  l_stdHeldPktMatchEoamForward1_1, s_matchForward_eoam.megLevel, s_pktCxt6.megLevel
+          qblt  l_stdHeldPktMatchEoamForward1_0, s_matchForward_eoam.megLevel, s_pktCxt6.megLevel
+          qbeq  l_stdHeldPktMatchEoamForward1_1, s_pktCxt6.opCode, PA_EOAM_APS_LINEAR_OPCODE
+          qbeq  l_stdHeldPktMatchEoamForward1_1, s_pktCxt6.opCode, PA_EOAM_APS_RING_OPCODE
+          qbeq  l_stdHeldPktMatchEoamForward1_1, s_pktCxt6.opCode, PA_EOAM_CCM_OPCODE
+
+l_stdHeldPktMatchEoamForward1_0:
+          // force disable the statistics
+          set  s_pktCxt6.eoamFlags.t_flag_fDisableCnt 
+l_stdHeldPktMatchEoamForward1_1:          
+          qbbc l_stdHeldPktEoamForward2, s_pktCxt6.eoamFlags.t_flag_knownOpcodes
+            // Known EOAM control packet, forward to queue            
+            // Normal host route: no special operation is required
+            // Send the packet on its way
+            
+            //   Free the packet Ext Info
+            mov     s_pktExtDescr.threadId, THREADID_CDMA0
+            xout    XID_PINFO_DST, s_pktExtDescr, SIZE(s_pktExtDescr)   
+
+            //   CDE workaround: do not use CDE_FLG_SET_DESTQUEUE 
+            //ldi  r4,  CDE_CMD_HPKT_RELEASE | ((CDE_FLG_SET_FLOWID | CDE_FLG_SET_DESTQUEUE | CDE_FLG_SET_PSINFO) << 8) 
+            mov  r4.w0,  CDE_CMD_HPKT_RELEASE | ((CDE_FLG_SET_FLOWID | CDE_FLG_SET_PSINFO) << 8) 
+            mov  s_cdeCmdPkt.psInfoSize,  (SIZE(s_pktCxt) + 7) & 0xf8   // Round up to multiple of 8 bytes
+            sbco s_matchForward.queue,    cCdeHeldPkt, OFFSET(s_pktDescr.destQ),  SIZE(s_pktDescr.destQ)  
+            mov  s_cdeCmdPkt.flowId,      s_matchForward.flowId
+            // xout XID_CDECTRL,             s_cdeCmdPkt,                           SIZE(s_cdeCmdPkt)
+
+         // Unknown EOAM type found OR No Match  OR non EOAM packet      
+l_stdHeldPktEoamForward2:
+         // Check if we need to record the statistics
+         qbbs  l_stdHeldPktEoamForward3_0, s_pktCxt6.eoamFlags.t_flag_fDisableCnt
+           // we need record
+           // User Statistics operation:
+           // Record and insert the statistics update into the FIFO
+           // Note all user commands are in the same location (r12)
+           mov   s_usrStatsReq.index,  s_matchForward_eoam.statsIndex
+        
+           lbco  s_fifoCb, PAMEM_CONST_USR_STATS_FIFO_BASE,  OFFSET_PDSP_USR_STATS_FIFO_CB, SIZE(s_fifoCb)
+           add   r1.b0,    s_fifoCb.in, 4
+           and   r1.b0,    r1.b0,       0x1F
+        
+           qbne  l_stdHeldEoamPktForward2_1, s_fifoCb.out, r1.b0
+            // FIFO is full, bump the system error
+            mov s_stats.value,  PA_STATS_UPDATE_REQ | PA_STATS_C1_SYSTEM_FAIL
+            // Skip insert the request
+            jmp fci_stdHeldPktEoamForward3
+
+l_stdHeldEoamPktForward2_1:
+           // Insert the request into the FIFO   
+           add   r1.w2,   s_fifoCb.in, OFFSET_PDSP_USR_STATS_FIFO
+           sbco  s_usrStatsReq,  PAMEM_CONST_USR_STATS_FIFO_BASE, r1.w2, SIZE(s_usrStatsReq)
+           sbco  r1.b0,   PAMEM_CONST_USR_STATS_FIFO_BASE,    OFFSET_PDSP_USR_STATS_FIFO_CB + OFFSET(s_fifoCb.in), SIZE(s_fifoCb.in)
+           
+l_stdHeldPktEoamForward3_0:
+        // No need to check further as the match happened for a known EOAM packet, that needs forwarding to a queue, after stats update
+        qbbs  l_stdHeldEoamPktForward4, s_pktCxt6.eoamFlags.t_flag_knownOpcodes
+        
+fci_stdHeldPktEoamForward3:
+        // Check whether it is a cipher packet
+        qbbc  l_stdHeldPktEoamForward5, s_pktCxt6.eoamFlags.t_flag_cipherPkt
+          // Cipher packet found
+          // Route to RA
+          qbbs  l_stdHeldEoamPktForward3_1,   s_runCxt.flag2.t_raEn
+            //  Send the packet on its way
+            //  Free the packet Ext Info
+            //  mov  s_pktExtDescr.threadId, s_matchForward_pa.dest
+
+            //   Load flags and operation in one instruction
+            ldi  r4, CDE_CMD_HPKT_RELEASE | ((CDE_FLG_SET_PSINFO) << 8) 
+            mov  s_cdeCmdPkt.psInfoSize,   32
+            jmp  l_stdHeldEoamPktForward4
+        
+l_stdHeldEoamPktForward3_1:        
+          // Send the packet on its way to RA
+          qbbs l_stdHeldEoamPktForward3_set_ra_dest_1,    s_runCxt.flag2.t_raUseLocDMA
+            // use global DMA     
+            mov  s_pktExtDescr.threadId, THREADID_CDMA0
+            mov  s_cdeCmdPkt.destQueue,  PASS_RA_QUEUE
+            jmp  l_stdHeldEoamPktForward3_set_ra_dest_end
+                
+l_stdHeldEoamPktForward3_set_ra_dest_1:  
+          // use local DMA
+          mov  s_pktExtDescr.threadId, THREADID_CDMA1
+          mov  s_cdeCmdPkt.destQueue,  PASS_RA_LOC_QUEUE
+          // pass through              
+                
+l_stdHeldEoamPktForward3_set_ra_dest_end:                
+          //   Free the packet Ext Info
+          //   CDE workaround: do not use CDE_FLG_SET_DESTQUEUE
+          //ldi  r4,  CDE_CMD_HPKT_RELEASE | ((CDE_FLG_SET_FLOWID | CDE_FLG_SET_DESTQUEUE | CDE_FLG_SET_PSINFO) << 8) 
+          ldi  r4,  CDE_CMD_HPKT_RELEASE | ((CDE_FLG_SET_FLOWID | CDE_FLG_SET_PSINFO) << 8) 
+          sbco s_cdeCmdPkt.destQueue,  cCdeHeldPkt, OFFSET(s_pktDescr.destQ),  SIZE(s_pktDescr.destQ)  
+          mov  s_cdeCmdPkt.psInfoSize,  32
+          mov  s_cdeCmdPkt.flowId,      s_runCxt.raFlow
+          
+l_stdHeldEoamPktForward4:
+          // Clear Word2 in pktCxt
+          mov   r24, 0          
+          xout  XID_PINFO_DST, s_pktExtDescr, SIZE(s_pktExtDescr)
+          xout  XID_CDECTRL,   s_cdeCmdPkt,   SIZE(s_cdeCmdPkt)
+          ret          
+
+l_stdHeldPktEoamForward5:
+        // Check if the next stage is Ingress1 Othrewise no action
+        qbeq l_stdHeldPktEoamForward6, s_pktExtDescr.threadId,  PA_DEST_INGRESS1
+          //   Free the packet Ext Info
+          //   CDE workaround: do not use CDE_FLG_SET_DESTQUEUE
+          //ldi  r4,  CDE_CMD_HPKT_RELEASE | ((CDE_FLG_SET_FLOWID | CDE_FLG_SET_DESTQUEUE | CDE_FLG_SET_PSINFO) << 8) 
+          ldi  r4,  CDE_CMD_HPKT_RELEASE | (CDE_FLG_SET_PSINFO << 8)  
+          mov  s_cdeCmdPkt.psInfoSize,  32
+          jmp  l_stdHeldEoamPktForward4
+          
+l_stdHeldPktEoamForward6:
+        qbbc  l_stdHeldEoamPktForward4, s_pktCxt6.eoamFlags.t_flag_ip
+          // Ip packet found
+          // Update next route to Ingress 3 for Outer IP/UDP Parse
+          mov  s_pktExtDescr.threadId,       PA_DEST_INGRESS3
+          //   Free the packet Ext Info
+          //   CDE workaround: do not use CDE_FLG_SET_DESTQUEUE
+          //ldi  r4,  CDE_CMD_HPKT_RELEASE | ((CDE_FLG_SET_FLOWID | CDE_FLG_SET_DESTQUEUE | CDE_FLG_SET_PSINFO) << 8) 
+          ldi  r4,  CDE_CMD_HPKT_RELEASE | (CDE_FLG_SET_PSINFO << 8)  
+          mov  s_cdeCmdPkt.psInfoSize,  32          
+          jmp  l_stdHeldEoamPktForward4
+
+f_c1ForwardHeldEoamPktNoMatch:
+     jmp    fci_stdHeldPktEoamForward3
+
+    .leave  usrStatsFifoScope        
+    .leave  pktScope        // Used only for sizing
+    .leave  lut1MatchScope    
+    .leave  lut1Scope   
+    .leave  cdeScope    
+#endif
+
+
     .using  startScope
     .using  initScope
 f_c1LocalInit:
 
      // Clear the LUT table of all 256 entries
-       .using lut1Scope
+     .using lut1Scope
      
      mov  r3, 0
 l_c1LocalInitD:
@@ -2966,6 +3335,10 @@ l_c1LocalInitC:
     mov s_paForward.forwardType,  PA_FORWARD_TYPE_DISCARD   // default successful route
     mov s_paForward2.forwardType, PA_FORWARD_TYPE_DISCARD   // default failure route
 
+#ifdef PASS_PROC_EOAM
+    sbco  &r3,          PAMEM_CONST_RO_TIME_ACC_TABLE, OFFSET_RO_TIME_ACC_CONSTANTS, 28
+#endif
+
     // r2.w0 = 0x4000, r2.w2 = 0
     mov r2,  256*64
 
@@ -3011,7 +3384,7 @@ c1LocalInit_0:
 
     sbco s_headerParse.c1ParseMac,  PAMEM_CONST_PARSE, 0, SIZE(s_headerParse)
     
-#ifdef PASS_PROC_L2
+#ifdef PASS_PROC_L2_PARSE
     // Ethertypes table
     mov s_ethertypes.vlan,      ETH_TAG_VLAN
     mov s_ethertypes.spVlan,    ETH_TAG_SP_OUTER_VLAN
@@ -3413,12 +3786,21 @@ l_paComAddRepLut1_0:
     mov   r0.w2,    PA_LUT1_INDEX_LAST_FREE                                          
     qbne  l_paComAddRepLut1_3,  s_paAddL1Hdr.index,  r0.w2
 #else
+
+#ifdef PASS_PROC_EOAM
+   qbbc   l_paComAddRepLut1Eoam, s_runCxt.flag3.t_eoamEn 
+    // Get a free index if requested
+    mov   r0.w2,    PA_LUT1_INDEX_LAST_FREE                                          
+    qbne  l_paComAddRepLut1_3,  s_paAddL1Hdr.index,  r0.w2     
+    jmp   l_paComAddRepLut1_00    
+l_paComAddRepLut1Eoam:   
+#endif // PASS_PROC_EOAM
     mov   s_paAddL1fAcl.statsCmd,   s_paAddL1Hdr.index
     set   s_paAddL1fAcl.statsCmd.t_stats_update_req 
     add   s_paAddL1fAcl.statsCmd2, s_paAddL1fAcl.statsCmd,  1 
     set   s_paAddL1fAcl.statsCmd2.t_stats_type_byte
 #endif    
-    
+l_paComAddRepLut1_00:     
         lmbd  r1.b1, r1.b0,  0  // Find free MAP entry index
         qbne l_paComAddRepLut1_1,  r1.b1,           32
             // No free entries
@@ -3504,6 +3886,12 @@ l_paComAddRepLut1_7a:
     mov  s_l1PendCmd.operation,  LUT1_CMD_INSERTM
     #else
     mov  s_l1PendCmd.operation,  LUT1_CMD_INSERT
+#ifdef PASS_PROC_EOAM
+   // Overwrite the information for IN0PDSP1, when EOAM is enabled
+   qbbc  l_paComAddRepLut1_7b, s_runCxt.flag3.t_eoamEn 
+     mov  s_l1PendCmd.operation,  LUT1_CMD_INSERTM
+l_paComAddRepLut1_7b:    
+#endif    
     #endif
     mov  s_l1PendCmd.index, s_paAddL1Hdr.index
     mov  s_l1PendCmd.flags, 0
index 5dc2b1fdad0d1395dfbae69bc19258192cf10602..ce88b3b6d80281e9055437eea77002958bebdd6f 100644 (file)
@@ -42,7 +42,7 @@ f_c2Start:
     mov   r2, 1
     sbco  r2, cMailbox, 0, 4
 
-       // Wait for the set command to take hold
+    // Wait for the set command to take hold
     wbs  s_flags.info.tStatus_Command0
 
     // The host will clear mailbox slot 0 when it is ready for this PDSP to run
@@ -66,9 +66,10 @@ l_c2Start0:
     zero  &s_runCxt,       SIZE(s_runCxt)
 
     // Store the PDSP ID
-    mov   s_runCxt.pdspId,  PASS_PDSP_ID
-    sbco  s_runCxt.pdspId,  PAMEM_CONST_PDSP_INFO,  OFFSET_ID, 1
-    
+    mov   r2.b0,  PASS_PDSP_ID
+    sbco  r2.b0,  PAMEM_CONST_PDSP_INFO,  OFFSET_ID, 1
+
+
     // Store the version number
     mov   r2.w0,   PASS_C2_VER & 0xFFFF
     mov   r2.w2,   PASS_C2_VER >> 16 
@@ -173,9 +174,9 @@ f_mainLoop0:
 f_c2Parse:
 
     // packet counter
-       lbco  r1, cMailbox, 0, 4
-       add   r1, r1, 1
-       sbco  r1, cMailbox, 0, 4
+    lbco  r1, cMailbox, 0, 4
+    add   r1, r1, 1
+    sbco  r1, cMailbox, 0, 4
 
     // Read the descriptor
     xin  XID_CDEDATA,  s_pktDescr,  SIZE(s_pktDescr)
index 7c9f452f8482e60b5e205e4d0e8350ab408e5bcb..a0c435488dc7f55d9632478057c56d4efea39404 100644 (file)
@@ -66,11 +66,10 @@ f_c1Start:
 l_c1Start0:
 
     zero  &s_runCxt,      SIZE(s_runCxt)
-
     // Store the PDSP ID
-    mov   s_runCxt.pdspId, PASS_PDSP_ID
-    sbco  s_runCxt.pdspId, PAMEM_CONST_PDSP_INFO,  OFFSET_ID,  1
-    
+    mov   r2.b0, PASS_PDSP_ID
+    sbco  r2.b0, PAMEM_CONST_PDSP_INFO,  OFFSET_ID,  1
+
 // ****************************************************************************************************
 // * FUNCTION PURPOSE: The main processing loop
 // ****************************************************************************************************
index f0a1346013c6b75cb0689a24a975fc017ec85c41..bd3370314dea7cfd28582af0fd1fe81355498df3 100644 (file)
@@ -693,7 +693,7 @@ l_paEf1ParseIpv6_1:
     
     // Look for ipv6 non-fragmentable header
 l_paEf1ParseIpv6Frag_ShiftCheck:   
-    qbeq    l_paEf1ParseIpv6Frag_HdrDone,    s_efState1.proto,   IP_PROTO_NEXT_IPV6_FRAG      // Can't frag a fragged packet
+    qbeq    l_paEf1ParseIpv6Frag_HdrDone,    s_efState1.proto,   IP_PROTO_NEXT_IPV6_FRAG      // Can not frag a fragged packet
     qbeq    l_paEf1ParseIpv6Frag_CheckNext,  s_efState1.proto,   IP_PROTO_NEXT_IPV6_HOP_BY_HOP
     qbeq    l_paEf1ParseIpv6Frag_CheckNext,  s_efState1.proto,   IP_PROTO_NEXT_IPV6_ROUTE
     qbeq    l_paEf1ParseIpv6Frag_CheckNext,  s_efState1.proto,   IP_PROTO_NEXT_IPV6_DEST_OPT
@@ -742,7 +742,7 @@ l_paEf1ParseIpv6Frag_HdrDone_1:
     qbbc   l_paEf1ParseIpv6_end, s_efRec1.ctrlFlags.t_ef_rec1_ip_mtu
     qbge   l_paEf1ParseIpv6_end, s_txPktCxt.fragSize, s_efRec1.mtu
     add    r0, s_txPktCxt.ipHdrLen,    IPV6_OPT_FRAG_EXTENSION_LEN_BYTES
-    // TBD: If the non-fragmentable portion consumes the full mtu, we can't frag
+    // TBD: If the non-fragmentable portion consumes the full mtu, we can not frag
     qbge    l_paEf1ParseIpv6_end, s_efRec1.mtu, r0
         // IPv6 Fragmentation is required
         set  s_txPktCxt.flags.t_flag_ip_frag
@@ -1342,7 +1342,7 @@ l_paEf2UpdateIpv6_update_2:
     // Look for ipv6 non-fragmentable header
 l_paEf2UpdateIpv6_update_ShiftCheck:   
     // TBD: Error processing 
-    qbeq    l_paEf2UpdateIpv6_update_HdrDone,    s_efState2.nextHdr,   IP_PROTO_NEXT_IPV6_FRAG      // Can't frag a fragged packet
+    qbeq    l_paEf2UpdateIpv6_update_HdrDone,    s_efState2.nextHdr,   IP_PROTO_NEXT_IPV6_FRAG      // Can not frag a fragged packet
     qbeq    l_paEf2UpdateIpv6_update_CheckNext,  s_efState2.nextHdr,   IP_PROTO_NEXT_IPV6_HOP_BY_HOP
     qbeq    l_paEf2UpdateIpv6_update_CheckNext,  s_efState2.nextHdr,   IP_PROTO_NEXT_IPV6_ROUTE
     qbeq    l_paEf2UpdateIpv6_update_CheckNext,  s_efState2.nextHdr,   IP_PROTO_NEXT_IPV6_DEST_OPT
@@ -2142,7 +2142,7 @@ l_paEf2CalIPLengthAndUpdate_ipv4Frag_loop:
             
 l_paEf2CalIPLengthAndUpdate_ipv6Frag:      
             add    r0, s_efFragInfo.ipHdrLen,    IPV6_OPT_FRAG_EXTENSION_LEN_BYTES
-            // TBD: If the non-fragmentable portion consumes the full mtu, we can't frag
+            // TBD: If the non-fragmentable portion consumes the full mtu, we can not frag
             qbge   l_paEf2CalIPLengthAndUpdate_ipFrag_end, s_efRec2.mtu, r0
             
             // IPv6 Fragmentation is required
index d60f1dab986d21c722ef98d62b63c5456a507c22..c546baeab26e42cf166cf16fba145502d5b07435 100644 (file)
Binary files a/fw/v1/eg0_pdsp0.bib and b/fw/v1/eg0_pdsp0.bib differ
index c333d693060f87be498e40a91312f2636c09123e..c654ca93976277d034b92b99f1cbfef82ff5d792 100644 (file)
Binary files a/fw/v1/eg0_pdsp1.bib and b/fw/v1/eg0_pdsp1.bib differ
index 221288d7acd80f4744b42639a96d550384279c5e..e2bb5ef61be452fac7d0a6672a2f132fc8cf316e 100644 (file)
Binary files a/fw/v1/eg0_pdsp2.bib and b/fw/v1/eg0_pdsp2.bib differ
index 8c98e8724e7ccbaa9226888c5490b557ad4804df..02791530ac1b58b08fed72e2ba3b4be23ac25f5f 100644 (file)
Binary files a/fw/v1/eg1_pdsp0.bib and b/fw/v1/eg1_pdsp0.bib differ
index 14d6702269e3ef8b9ac29a9cfbaeb3dc964cc540..e093b44018c66126aca202dc06bbebd58213c71d 100644 (file)
Binary files a/fw/v1/eg2_pdsp0.bib and b/fw/v1/eg2_pdsp0.bib differ
index 9784572405f7e5110fbb413b655ce1e91636d2ad..0a82f7258a58c36cb12b89612ba3393ac310d46b 100644 (file)
Binary files a/fw/v1/in0_pdsp0.bib and b/fw/v1/in0_pdsp0.bib differ
index 14f0be0da0b8e69544b1a2150521d5e93d1a2237..c8ee9159a56b6a03eb7480482f9f47da37fab6be 100644 (file)
@@ -2,9 +2,13 @@
 #include "pdsp_mem.h"
 #define PASS_FIRST_PDSP
 #define PASS_PROC_L2
+#define PASS_PROC_L2_PARSE
 #define PASS_PROC_INGRESS_PKT_CLONE
 #define PASS_GLOBAL_INIT
 #define PASS_TIMESTAMP_OP
+#define PASS_PROC_RO_TIME_ACC
+#define PASS_PROC_CMD1
+#define PASS_PROC_EOAM_CMD
 #define PASS_PROC_PKT_CONTROL
 #define PASS_PROC_DEF_ROUTE
 #define PASS_FIREWALL_FORWARDING
index 80ab67d14ea9d36482ca81bb29c2e1748ba04091..57a8cea31822f4f53ee72cf00ef8c7b34acbe91c 100644 (file)
Binary files a/fw/v1/in0_pdsp1.bib and b/fw/v1/in0_pdsp1.bib differ
index 1672284508b98241ef19348a77df8887e3e54bbd..993c15bcdda76a2ba59d54c16ade3c898d465535 100644 (file)
@@ -7,6 +7,10 @@
 #define PASS_PROC_RA
 #define PASS_OUTER_RA
 #define PASS_OUTER_ACL
+#define PASS_PROC_CMD1
+#define PASS_PROC_L2_PARSE
+#define PASS_PROC_EOAM
+#define PASS_PROC_EOAM_CMD
 #define HEADER_MAGIC        0xBABE0001
 #define PASS_PDSP_ID        1
 #define PASS_THREAD_ID      THREADID_INGRESS0
index 8707b730531b88a0abe858ce1b7a87f50e8dc1b2..ff4236da3ffadc9437d9279ebf1a4fe194604c65 100644 (file)
Binary files a/fw/v1/in1_pdsp0.bib and b/fw/v1/in1_pdsp0.bib differ
index e292f5afa9237380ddbdfd9451d9688691ce3349..2b370b221958e899154c14a03151822b6db06f42 100644 (file)
@@ -4,6 +4,7 @@
 #define PASS_PROC_IPSEC
 #define PASS_SKIP_IPSEC
 #define PASS_PROC_L3
+#define PASS_PROC_CMD1
 #define PASS_PROC_OUTER_IP
 #define PASS_PROC_EFLOW_ROUTE
 #define PASS_PROC_LUT1_CUSTOM
index 1f5580f61372be0d99f5fdf7d5da46abaa59bf70..05a3752f935e9b5d7f0826edf808b1d7c0b458f4 100644 (file)
Binary files a/fw/v1/in1_pdsp1.bib and b/fw/v1/in1_pdsp1.bib differ
index 1a8a0def20a46ea7c5b3ad405f74918f4e112658..9757c0cc1fcf9af432ee3efad3d55ee9be364d60 100644 (file)
@@ -3,6 +3,8 @@
 #define PASS_LAST_PDSP
 #define PASS_PROC_IPSEC
 #define PASS_PROC_IPSEC_NAT_T
+#define PASS_PROC_EOAM_CMD
+#define PASS_PROC_CMD1
 #define PASS_VERIFY_SCTP_CRC
 #define HEADER_MAGIC        0xBABE0101
 #define PASS_PDSP_ID        3
index 174759772f847c45f5db259fdbbf45a97a877ef4..692aa5d376bcffcdf158238d5214cfc7837f7bc1 100644 (file)
Binary files a/fw/v1/in2_pdsp0.bib and b/fw/v1/in2_pdsp0.bib differ
index 7fe4f9aaf71d381cb762a59c5a479ea31f492ee8..e9d27dbc563a4388a7fa8f19f8cd123633f3f7f6 100644 (file)
@@ -4,6 +4,8 @@
 #define PASS_LAST_PDSP
 #define PASS_PROC_IPSEC
 #define PASS_PROC_IPSEC2
+#define PASS_PROC_EOAM_CMD
+#define PASS_PROC_CMD1
 #define PASS_PROC_POST_IPSEC
 #define HEADER_MAGIC        0xBABE0200
 #define PASS_PDSP_ID        4
index 330525dc16e6fac9614ebb31ccf25b80e44ad28f..701b874a9f1cfae545317acd689ed6d4dfbddbeb 100644 (file)
Binary files a/fw/v1/in3_pdsp0.bib and b/fw/v1/in3_pdsp0.bib differ
index caf762c4f532abd50fa506d24786223d9439d2e0..3c817e549157ef7c07a6971d556f1db7d9bf15bd 100644 (file)
Binary files a/fw/v1/in4_pdsp0.bib and b/fw/v1/in4_pdsp0.bib differ
index 802c6efd2ba5af2138f6247d8cbb79bb14194d8f..33759996ac9dba32d1c6a894600213917f60d3ea 100644 (file)
@@ -6,10 +6,12 @@
 #define PASS_PROC_EFLOW_ROUTE
 #define PASS_PROC_LUT1_CUSTOM
 #define PASS_PROC_IP_REASSEM
+#define PASS_PROC_CMD1
 #define OFFSET_IP_REASSM_CFG    OFFSET_IN_IP_REASSM_CFG
 #define PASS_VERIFY_POST_RA_DROP
 #define PASS_PROC_PKT_CONTROL
 #define PASS_PROC_POST_IPSEC
+#define PASS_PROC_EOAM_CMD
 #define PASS_L4_BYPASS
 #define HEADER_MAGIC        0xBABE0401
 #define PASS_PDSP_ID        6
index 4cf61eaa2ba172a22a610d79355c6053dbf90b5e..aa81de283b4ccb0b75312fd5aae9d1e7c3c7ac14 100644 (file)
Binary files a/fw/v1/in4_pdsp1.bib and b/fw/v1/in4_pdsp1.bib differ
index ba892b6f49b4373cce530a1200d1841e8d9e4ece..da099bb39e36385764f7e36799876963dd9cb940 100644 (file)
@@ -25,7 +25,7 @@ f_commonInit:
   zero  &r0,  80
   sbco  &r0,  PAMEM_CONST_CUSTOM, OFFSET_CUSTOM_C1, 80
   sbco  &r0,  PAMEM_CONST_CUSTOM, OFFSET_CUSTOM_C1 + 2*40, 80
-  
+
   // Packet Capture configuration Init
   sbco  &r0, PAMEM_CONST_PORTCFG, OFFSET_EGRESS_PKT_CAP_CFG_BASE,  10*8
   sbco  &r0, PAMEM_CONST_PORTCFG, OFFSET_INGRESS_PKT_CAP_CFG_BASE, 10*8
@@ -33,6 +33,9 @@ f_commonInit:
   // Clear system timestamp
   sbco  &r0, PAMEM_CONST_CUSTOM,  OFFSET_SYS_TIMESTAMP,   8 
 
+  // Clear global raw time accumulation counters to accumulate time in sec, ns
+  sbco &r0,   PAMEM_CONST_CUSTOM, OFFSET_RAW_TIME_ACC,           16
+  
   // Packet ingress default route configuration (64 * 8)
   mov   r20, OFFSET_DEFAULT_ROUTE_CFG_BASE
   mov   r21,  64*8
index 9aa82199036d1a761058952faf7772218f0c65dd..6989e0ee68bfa8d574fa425f18afcf5482e45971 100644 (file)
@@ -61,8 +61,8 @@ const uint32_t eg0_pdsp0[] =  {
      0xc900ff00,
      0xd100ff00,
      0x2eff819d,
-     0x24000a1d,
-     0x8100177d,
+     0x24000a02,
+     0x81001762,
      0xc9067d1b,
      0xc9077d02,
      0xd110ff00,
@@ -95,7 +95,7 @@ const uint32_t eg0_pdsp0[] =  {
      0xcf057de3,
      0xc910ff02,
      0x21001000,
-     0x2102f800,
+     0x21033200,
      0x0905c481,
      0x92812088,
      0x10c8c89f,
@@ -266,26 +266,26 @@ const uint32_t eg0_pdsp0[] =  {
      0x85002e83,
      0x2eff8983,
      0x83242e83,
-     0x2403a9c8,
-     0x2403a988,
-     0x2403a9c9,
-     0x2402fc89,
-     0x240326ca,
-     0x2403418a,
-     0x24034dcb,
-     0x2403588b,
-     0x24036acc,
-     0x2403758c,
-     0x2403a9cd,
-     0x2403a98d,
-     0x2403a9ce,
-     0x2403a98e,
-     0x2403a9cf,
-     0x2403a98f,
-     0x2403a9d0,
-     0x24038e90,
-     0x240397d1,
-     0x24039f91,
+     0x2403e3c8,
+     0x2403e388,
+     0x2403e3c9,
+     0x24033689,
+     0x240360ca,
+     0x24037b8a,
+     0x240387cb,
+     0x2403928b,
+     0x2403a4cc,
+     0x2403af8c,
+     0x2403e3cd,
+     0x2403e38d,
+     0x2403e3ce,
+     0x2403e38e,
+     0x2403e3cf,
+     0x2403e38f,
+     0x2403e3d0,
+     0x2403c890,
+     0x2403d1d1,
+     0x2403d991,
      0x8500f588,
      0x24505084,
      0x108484c4,
@@ -412,20 +412,20 @@ const uint32_t eg0_pdsp0[] =  {
      0x5102270e,
      0x5103270e,
      0x5104270e,
-     0x53062730,
-     0x510c27ae,
-     0x530a2732,
-     0x5308272e,
-     0x530b272e,
-     0x5309272e,
+     0x5306276a,
+     0x510c27e0,
+     0x530a276c,
+     0x53082768,
+     0x530b2768,
+     0x53092768,
      0x51052737,
      0x24000286,
      0x2f0080c6,
      0x21017b00,
-     0x2102a500,
+     0x2102df00,
      0x21012300,
-     0x2102a200,
-     0x2102a200,
+     0x2102dc00,
+     0x2102dc00,
      0xc9067b02,
      0x2e85098e,
      0xc9047b08,
@@ -586,6 +586,56 @@ const uint32_t eg0_pdsp0[] =  {
      0x10515121,
      0x24005082,
      0xe10c2281,
+     0x240010c4,
+     0x2f000184,
+     0x2e808f8e,
+     0xc90bca2f,
+     0x24000082,
+     0x1f002222,
+     0xc9006e0a,
+     0x24ffa8c1,
+     0x24100081,
+     0xe1d801d1,
+     0x24ff48c1,
+     0x24040081,
+     0x24000091,
+     0xe100a18f,
+     0xe10ce192,
+     0x1f000202,
+     0x10828281,
+     0x240200c1,
+     0x24000060,
+     0xd1006006,
+     0x24000082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f006060,
+     0xd1016006,
+     0x24001082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f016060,
+     0xd1026006,
+     0x24003082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f026060,
+     0xd1036006,
+     0x24004082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f036060,
+     0xd1046006,
+     0x24006082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f046060,
+     0x6f1f60e2,
      0x21017b00,
      0x24000086,
      0x2f0080c6,
@@ -599,12 +649,12 @@ const uint32_t eg0_pdsp0[] =  {
      0x21017b00,
      0x240018c4,
      0x2f000384,
-     0x21029300,
+     0x2102cd00,
      0x240014c4,
      0x2f000384,
      0x69016a13,
      0x592c8002,
-     0x21029000,
+     0x2102ca00,
      0x2e80838e,
      0x71046e04,
      0x240011d9,
@@ -623,7 +673,7 @@ const uint32_t eg0_pdsp0[] =  {
      0x21017b00,
      0x69066a0e,
      0x59148002,
-     0x21029000,
+     0x2102ca00,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -633,11 +683,11 @@ const uint32_t eg0_pdsp0[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x21024300,
+     0x21027500,
      0x21017b00,
      0x69076a0e,
      0x59148002,
-     0x21029000,
+     0x2102ca00,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -647,12 +697,12 @@ const uint32_t eg0_pdsp0[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x21025100,
+     0x21028300,
      0x21017b00,
      0x69086a19,
      0x24003cc0,
      0x58c08002,
-     0x21029000,
+     0x2102ca00,
      0x2e808b8e,
      0x240100c2,
      0x51006e12,
@@ -672,12 +722,12 @@ const uint32_t eg0_pdsp0[] =  {
      0x2f000184,
      0x2e80898f,
      0x05016e6e,
-     0x21026000,
+     0x21029200,
      0x21017b00,
      0x69096a1a,
      0x2400a0c0,
      0x58c08002,
-     0x21029000,
+     0x2102ca00,
      0x2e808d8e,
      0x240300c2,
      0x51006e13,
@@ -693,12 +743,20 @@ const uint32_t eg0_pdsp0[] =  {
      0x8082fc91,
      0x01108282,
      0x05014e4e,
-     0x21027f00,
+     0x2102b100,
      0x240018c4,
      0x2f000184,
      0x2e808b8f,
      0x05016e6e,
-     0x21027900,
+     0x2102ab00,
+     0x21017b00,
+     0x690a6a08,
+     0x590c8002,
+     0x2102ca00,
+     0x2e80838e,
+     0x24ffa8c2,
+     0x24100082,
+     0xe1d0628e,
      0x21017b00,
      0x240002d9,
      0x1f047b7b,
@@ -732,7 +790,7 @@ const uint32_t eg0_pdsp0[] =  {
      0x58c08004,
      0x24001000,
      0xc9037b3b,
-     0x2102e300,
+     0x21031d00,
      0x91200e61,
      0x240100c0,
      0x68c0ca12,
@@ -740,7 +798,7 @@ const uint32_t eg0_pdsp0[] =  {
      0x69202104,
      0x24000400,
      0xc9037b33,
-     0x2102e300,
+     0x21031d00,
      0x090221c1,
      0x0100c1c1,
      0x90c12e82,
@@ -748,15 +806,15 @@ const uint32_t eg0_pdsp0[] =  {
      0x69200304,
      0x24000400,
      0xc9037b2b,
-     0x2102e300,
+     0x21031d00,
      0x090521ca,
      0x0003caca,
      0x2f00808a,
-     0x2102cb00,
+     0x21030500,
      0x60c0ca04,
      0x24000400,
      0xc9037b23,
-     0x2102e300,
+     0x21031d00,
      0x0b05ca21,
      0x090221c1,
      0x0100c1c1,
@@ -765,7 +823,7 @@ const uint32_t eg0_pdsp0[] =  {
      0x24000004,
      0x240018c4,
      0x2f000384,
-     0x2102eb00,
+     0x21032500,
      0x1e03e2e2,
      0x80c12e82,
      0x2700e223,
@@ -806,7 +864,7 @@ const uint32_t eg0_pdsp0[] =  {
      0x2e808786,
      0x240010c4,
      0x2f000384,
-     0x2102cf00,
+     0x21030900,
      0x1d057d7d,
      0x93242e84,
      0x2f010984,
index a00e5ccf03c087d9dfae8acf92190a0d9780687c..3611c5e4be11d9e360e745d9f324e0d870fe7ab0 100644 (file)
@@ -398,7 +398,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x2eff8184,
      0x81003b84,
      0x21017a00,
-     0x2307469e,
+     0x2307829e,
      0x2eff8582,
      0x8104a482,
      0x240001e2,
@@ -458,7 +458,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x51040103,
      0x1f060e0e,
      0x21019d00,
-     0x21050800,
+     0x21050a00,
      0x21005d00,
      0xd106ff00,
      0x9110e78a,
@@ -587,9 +587,9 @@ const uint32_t eg0_pdsp1[] =  {
      0x69024204,
      0x111f1542,
      0x51004202,
-     0x2304509e,
-     0xd1023596,
-     0x2304ac9e,
+     0x2304529e,
+     0xd1023598,
+     0x2304ae9e,
      0x2e85098e,
      0xc901350a,
      0x593c9409,
@@ -697,17 +697,19 @@ const uint32_t eg0_pdsp1[] =  {
      0x240004c4,
      0x2f000184,
      0x111f7601,
+     0x51030104,
+     0x51040103,
      0x511f0104,
-     0x57000104,
+     0x57000102,
      0x69020122,
-     0x2102a400,
+     0x2102a600,
      0x24001004,
      0x2f000384,
      0x2e85098e,
      0x24004304,
      0x58ce9603,
      0x109696c4,
-     0x21029600,
+     0x21029800,
      0x048f96c4,
      0x10565624,
      0x10f2f2e5,
@@ -723,7 +725,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x2f000384,
      0x2f04898e,
      0x21016c00,
-     0x5d0275eb,
+     0x5d0275e9,
      0x24000276,
      0xc90f9603,
      0x24000476,
@@ -754,7 +756,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x11f06600,
      0x51400003,
      0x516000c0,
-     0x21035900,
+     0x21035b00,
      0x108686d8,
      0x110f6617,
      0x09021717,
@@ -777,7 +779,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x0417d8e1,
      0x48e0e103,
      0x0499e1d9,
-     0x2102dc00,
+     0x2102de00,
      0x1f0d8787,
      0x0017d986,
      0x24000088,
@@ -790,7 +792,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x104242c4,
      0x51022403,
      0x008682e5,
-     0x2102e900,
+     0x2102eb00,
      0x008682c5,
      0x2f000384,
      0x51017508,
@@ -798,7 +800,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x104343c4,
      0x51022403,
      0x008683e5,
-     0x2102f100,
+     0x2102f300,
      0x008683c5,
      0x2f000384,
      0x2eff8384,
@@ -819,7 +821,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x2f000184,
      0x24000004,
      0x04d19a9a,
-     0x21031300,
+     0x21031500,
      0x24000104,
      0x109a9ac4,
      0x2f000184,
@@ -839,7 +841,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x60919a04,
      0x04919a9a,
      0x2400008f,
-     0x21031f00,
+     0x21032100,
      0x009af2f0,
      0x00da9ae0,
      0x6091e002,
@@ -901,7 +903,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x103737c4,
      0x2f000184,
      0x2e808986,
-     0x2102d300,
+     0x2102d500,
      0x105b5b0e,
      0x21022000,
      0x51007511,
@@ -910,7 +912,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x104242c4,
      0x51022403,
      0x00d882e5,
-     0x21036100,
+     0x21036300,
      0x00d882c5,
      0x2f000384,
      0x51017508,
@@ -918,12 +920,12 @@ const uint32_t eg0_pdsp1[] =  {
      0x104343c4,
      0x51022403,
      0x00d883e5,
-     0x21036900,
+     0x21036b00,
      0x00d883c5,
      0x2f000384,
      0x10373782,
      0x24021f9e,
-     0x2104dc00,
+     0x2104de00,
      0x6f01559b,
      0x24104480,
      0x24fff8c0,
@@ -944,7 +946,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x240000c4,
      0x10e0e0e5,
      0x2f000384,
-     0x21030800,
+     0x21030a00,
      0x11f85757,
      0x0128c7d8,
      0x24002817,
@@ -958,14 +960,14 @@ const uint32_t eg0_pdsp1[] =  {
      0x51007b04,
      0x512b7b03,
      0x513c7b02,
-     0x21039700,
+     0x21039900,
      0x2f000184,
      0x2e808086,
      0x1066667b,
      0x010146c4,
      0x0903c4c4,
      0x00c41717,
-     0x21038b00,
+     0x21038d00,
      0x010817e0,
      0x04e0d7d9,
      0x70e0d7b4,
@@ -990,7 +992,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x010437c4,
      0x0528d7c5,
      0x2f000384,
-     0x2103b400,
+     0x2103b600,
      0x24002c27,
      0x0528d7c7,
      0x2f008386,
@@ -1016,7 +1018,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x104242c4,
      0x51022403,
      0x008182e5,
-     0x2103cb00,
+     0x2103cd00,
      0x008182c5,
      0x2f000384,
      0x51017508,
@@ -1024,7 +1026,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x104343c4,
      0x51022403,
      0x008183e5,
-     0x2103d300,
+     0x2103d500,
      0x008183c5,
      0x2f000384,
      0x10d9d9da,
@@ -1037,7 +1039,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x2f000184,
      0x24000004,
      0x04d19a9a,
-     0x2103ed00,
+     0x2103ef00,
      0x24000104,
      0x109a9ac4,
      0x2f000184,
@@ -1057,7 +1059,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x60919a04,
      0x04919a9a,
      0x2400008f,
-     0x2103f900,
+     0x2103fb00,
      0x009af2f0,
      0x00da9ae0,
      0x6091e002,
@@ -1123,7 +1125,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x2f008386,
      0x101717c4,
      0x2f000184,
-     0x2103b400,
+     0x2103b600,
      0x105b5b0e,
      0x21022000,
      0x6f0155ab,
@@ -1147,10 +1149,10 @@ const uint32_t eg0_pdsp1[] =  {
      0x240000c4,
      0x10e0e0e5,
      0x2f000384,
-     0x2103e200,
+     0x2103e400,
      0x2f000184,
      0x00173737,
-     0x21035900,
+     0x21035b00,
      0x24000c04,
      0x2f000384,
      0x2eff8192,
@@ -1189,23 +1191,23 @@ const uint32_t eg0_pdsp1[] =  {
      0x240002c4,
      0x2f000384,
      0x00c48282,
-     0x21046200,
+     0x21046400,
      0x688ec605,
      0x240002c4,
      0x2f000384,
      0x00c48282,
-     0x21046200,
+     0x21046400,
      0x68cfc605,
      0x2e808186,
      0x0b024612,
      0x1f017272,
-     0x21049d00,
+     0x21049f00,
      0x688fc606,
      0x2e808186,
      0x0b04c612,
      0x0b021212,
      0x1f017272,
-     0x21049d00,
+     0x21049f00,
      0x68d0c60a,
      0x2e808386,
      0x240004c4,
@@ -1215,7 +1217,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x0b046703,
      0x570403ef,
      0x570603f3,
-     0x21049d00,
+     0x21049f00,
      0x5690c6f7,
      0x68d1c60a,
      0x2e808386,
@@ -1226,12 +1228,12 @@ const uint32_t eg0_pdsp1[] =  {
      0x56c287e5,
      0x240057c2,
      0x56c287e8,
-     0x21049d00,
+     0x21049f00,
      0x5691c6f7,
      0xc9006905,
      0xc9007203,
      0x10323252,
-     0x2104a500,
+     0x2104a700,
      0xd1016904,
      0xc9017203,
      0x10121252,
@@ -1260,7 +1262,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x048fc7c4,
      0x00cfc8c5,
      0x0300c5c5,
-     0x2104c000,
+     0x2104c200,
      0x10c7c7c4,
      0x10c8c8c5,
      0x10878785,
@@ -1282,7 +1284,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x048fc7c4,
      0x00cfc8c5,
      0x0300c5c5,
-     0x2104d600,
+     0x2104d800,
      0x10c7c7c4,
      0x10c8c8c5,
      0x10878785,
@@ -1326,7 +1328,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x01010303,
      0x01202323,
      0x0120e0e0,
-     0x2104e100,
+     0x2104e300,
      0x24000083,
      0xc9071d02,
      0x2400ff23,
@@ -1335,7 +1337,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x00839494,
      0x2f05098e,
      0x209e0000,
-     0x21050900,
+     0x21050b00,
      0x2eff8b96,
      0x05108980,
      0x24000d04,
@@ -1345,15 +1347,15 @@ const uint32_t eg0_pdsp1[] =  {
      0x10e9e9fa,
      0x51ce0703,
      0x1f077b7b,
-     0x21054100,
+     0x21054300,
      0x51006602,
-     0x21054100,
+     0x21054300,
      0x51004606,
      0x05014646,
      0x2f008026,
      0x2400045b,
      0x1f057b7b,
-     0x21054100,
+     0x21054300,
      0x81182788,
      0x2f05098e,
      0x1f067b7b,
@@ -1378,20 +1380,20 @@ const uint32_t eg0_pdsp1[] =  {
      0x5102270e,
      0x5103270e,
      0x5104270e,
-     0x53062730,
-     0x510c27ae,
-     0x530a2732,
-     0x5308272e,
-     0x530b272e,
-     0x5309272e,
+     0x5306276a,
+     0x510c27e0,
+     0x530a276c,
+     0x53082768,
+     0x530b2768,
+     0x53092768,
      0x51052737,
      0x24000286,
      0x2f0080c6,
-     0x21054100,
-     0x21074300,
-     0x21074300,
-     0x21073c00,
-     0x21074300,
+     0x21054300,
+     0x21077f00,
+     0x21077f00,
+     0x21077800,
+     0x21077f00,
      0xc9067b02,
      0x2e85098e,
      0xc9047b08,
@@ -1411,11 +1413,11 @@ const uint32_t eg0_pdsp1[] =  {
      0x1f0f8181,
      0x811007c1,
      0x1f060e0e,
-     0x21056a00,
+     0x21056c00,
      0xc9057b04,
      0x24008000,
      0x81200760,
-     0x21055c00,
+     0x21055e00,
      0x911007c1,
      0x1f0f8181,
      0x811007c1,
@@ -1424,7 +1426,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x81082481,
      0x51003a03,
      0x1f060e0e,
-     0x21056a00,
+     0x21056c00,
      0x8112079a,
      0x101a1a05,
      0x13202424,
@@ -1442,7 +1444,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x59388004,
      0x24001086,
      0x2f0080c6,
-     0x21054100,
+     0x21054300,
      0x24000086,
      0x2f0080c6,
      0x2e80878a,
@@ -1552,7 +1554,57 @@ const uint32_t eg0_pdsp1[] =  {
      0x10515121,
      0x24005082,
      0xe10c2281,
-     0x21054100,
+     0x240010c4,
+     0x2f000184,
+     0x2e808f8e,
+     0xc90bca2f,
+     0x24000082,
+     0x1f002222,
+     0xc9006e0a,
+     0x24ffa8c1,
+     0x24100081,
+     0xe1d801d1,
+     0x24ff48c1,
+     0x24040081,
+     0x24000091,
+     0xe100a18f,
+     0xe10ce192,
+     0x1f000202,
+     0x10828281,
+     0x240200c1,
+     0x24000060,
+     0xd1006006,
+     0x24000082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f006060,
+     0xd1016006,
+     0x24001082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f016060,
+     0xd1026006,
+     0x24003082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f026060,
+     0xd1036006,
+     0x24004082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f036060,
+     0xd1046006,
+     0x24006082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f046060,
+     0x6f1f60e2,
+     0x21054300,
      0x24000086,
      0x2f0080c6,
      0x2e80838a,
@@ -1562,20 +1614,20 @@ const uint32_t eg0_pdsp1[] =  {
      0x58c08004,
      0x24001086,
      0x2f0080c6,
-     0x21054100,
+     0x21054300,
      0x240018c4,
      0x2f000384,
-     0x21065900,
+     0x21069500,
      0x240014c4,
      0x2f000384,
      0x69016a13,
      0x592c8002,
-     0x21065600,
+     0x21069200,
      0x2e80838e,
      0x71046e04,
      0x240011d9,
      0x1f047b7b,
-     0x21054100,
+     0x21054300,
      0x09056e81,
      0x09036ec1,
      0x00c18181,
@@ -1586,10 +1638,10 @@ const uint32_t eg0_pdsp1[] =  {
      0x2e808f8e,
      0x01088181,
      0x8281f38e,
-     0x21054100,
+     0x21054300,
      0x69066a0e,
      0x59148002,
-     0x21065600,
+     0x21069200,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -1599,11 +1651,11 @@ const uint32_t eg0_pdsp1[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x21060900,
-     0x21054100,
+     0x21063d00,
+     0x21054300,
      0x69076a0e,
      0x59148002,
-     0x21065600,
+     0x21069200,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -1613,12 +1665,12 @@ const uint32_t eg0_pdsp1[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x21061700,
-     0x21054100,
+     0x21064b00,
+     0x21054300,
      0x69086a19,
      0x24003cc0,
      0x58c08002,
-     0x21065600,
+     0x21069200,
      0x2e808b8e,
      0x240100c2,
      0x51006e12,
@@ -1638,12 +1690,12 @@ const uint32_t eg0_pdsp1[] =  {
      0x2f000184,
      0x2e80898f,
      0x05016e6e,
-     0x21062600,
-     0x21054100,
+     0x21065a00,
+     0x21054300,
      0x69096a1a,
      0x2400a0c0,
      0x58c08002,
-     0x21065600,
+     0x21069200,
      0x2e808d8e,
      0x240300c2,
      0x51006e13,
@@ -1659,19 +1711,27 @@ const uint32_t eg0_pdsp1[] =  {
      0x8082fc91,
      0x01108282,
      0x05014e4e,
-     0x21064500,
+     0x21067900,
      0x240018c4,
      0x2f000184,
      0x2e808b8f,
      0x05016e6e,
-     0x21063f00,
-     0x21054100,
+     0x21067300,
+     0x21054300,
+     0x690a6a08,
+     0x590c8002,
+     0x21069200,
+     0x2e80838e,
+     0x24ffa8c2,
+     0x24100082,
+     0xe1d0628e,
+     0x21054300,
      0x240002d9,
      0x1f047b7b,
-     0x21054100,
+     0x21054300,
      0x240010d9,
      0x1f047b7b,
-     0x21054100,
+     0x21054300,
      0x240000e1,
      0x240010c4,
      0x2e80878e,
@@ -1681,12 +1741,12 @@ const uint32_t eg0_pdsp1[] =  {
      0x01010101,
      0x0110c1c1,
      0x670b01fa,
-     0x21054100,
-     0x21054100,
-     0x21054100,
-     0x21054100,
-     0x21054100,
-     0x21054100,
+     0x21054300,
+     0x21054300,
+     0x21054300,
+     0x21054300,
+     0x21054300,
+     0x21054300,
      0xc907ff00,
      0x911007ca,
      0x1f0f8a8a,
@@ -1702,7 +1762,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x11c00101,
      0x51014703,
      0x24001641,
-     0x21067900,
+     0x2106b500,
      0x24000d41,
      0x12410101,
      0x812607c1,
@@ -1748,7 +1808,7 @@ const uint32_t eg0_pdsp1[] =  {
      0x11c01a00,
      0x51000003,
      0x0b057a21,
-     0x2106ab00,
+     0x2106e700,
      0xd1010105,
      0x11071a00,
      0x51000003,
@@ -1760,11 +1820,11 @@ const uint32_t eg0_pdsp1[] =  {
      0x00214646,
      0x00018686,
      0x24000042,
-     0x2106bd00,
+     0x2106f900,
      0x00228686,
      0xc901680a,
      0x00224646,
-     0x2106bd00,
+     0x2106f900,
      0xc9026804,
      0x0b057a02,
      0x00028686,
@@ -1809,9 +1869,9 @@ const uint32_t eg0_pdsp1[] =  {
      0x69010206,
      0xd1076603,
      0x2400002e,
-     0x2106e700,
+     0x21072300,
      0x2400012e,
-     0x2106e700,
+     0x21072300,
      0x69050214,
      0x1046462e,
      0x81186787,
@@ -1905,10 +1965,10 @@ const uint32_t eg0_pdsp1[] =  {
      0x24ff00c2,
      0x240000e1,
      0xe1742281,
-     0x21054100,
+     0x21054300,
      0x24000c86,
      0x2f0080c6,
-     0x21054100,
+     0x21054300,
      0x2eff8384,
      0x81007b84,
      0x248100c8,
index d927ea2103fc1b85ac1f057b735dcdc400fd4e53..73516ec43142ee0f0e6174d3914421df2f3fd4f4 100644 (file)
@@ -697,7 +697,7 @@ const uint32_t eg0_pdsp2[] =  {
      0x2eff8184,
      0x81003b84,
      0x2102a500,
-     0x2306979e,
+     0x2306d39e,
      0x2eff8582,
      0x8104a482,
      0x240001e2,
@@ -757,7 +757,7 @@ const uint32_t eg0_pdsp2[] =  {
      0x51040103,
      0x1f060e0e,
      0x2102c800,
-     0x21045600,
+     0x21045800,
      0x21005c00,
      0xd106ff00,
      0x9110e78a,
@@ -915,7 +915,7 @@ const uint32_t eg0_pdsp2[] =  {
      0x1f063535,
      0x2102ba00,
      0x24000082,
-     0x2303fa9e,
+     0x2303fc9e,
      0x2e85098e,
      0xc901350a,
      0x593c9409,
@@ -1041,8 +1041,10 @@ const uint32_t eg0_pdsp2[] =  {
      0x240004c4,
      0x2f000184,
      0x111f7601,
+     0x51030104,
+     0x51040103,
      0x511f0103,
-     0x550001d7,
+     0x550001d5,
      0x2102ba00,
      0x24001004,
      0x2f000384,
@@ -1050,7 +1052,7 @@ const uint32_t eg0_pdsp2[] =  {
      0x24004304,
      0x58ce9603,
      0x109696c4,
-     0x2103ed00,
+     0x2103ef00,
      0x048f96c4,
      0x10565624,
      0x10f2f2e5,
@@ -1082,7 +1084,7 @@ const uint32_t eg0_pdsp2[] =  {
      0x048fc7c4,
      0x00cfc8c5,
      0x0300c5c5,
-     0x21040e00,
+     0x21041000,
      0x10c7c7c4,
      0x10c8c8c5,
      0x10878785,
@@ -1104,7 +1106,7 @@ const uint32_t eg0_pdsp2[] =  {
      0x048fc7c4,
      0x00cfc8c5,
      0x0300c5c5,
-     0x21042400,
+     0x21042600,
      0x10c7c7c4,
      0x10c8c8c5,
      0x10878785,
@@ -1148,7 +1150,7 @@ const uint32_t eg0_pdsp2[] =  {
      0x01010303,
      0x01202323,
      0x0120e0e0,
-     0x21042f00,
+     0x21043100,
      0x24000083,
      0xc9071d02,
      0x2400ff23,
@@ -1157,7 +1159,7 @@ const uint32_t eg0_pdsp2[] =  {
      0x00839494,
      0x2f05098e,
      0x209e0000,
-     0x21045700,
+     0x21045900,
      0x2eff8b96,
      0x05108980,
      0x24000d04,
@@ -1167,15 +1169,15 @@ const uint32_t eg0_pdsp2[] =  {
      0x10e9e9fa,
      0x51ce0703,
      0x1f077b7b,
-     0x21048f00,
+     0x21049100,
      0x51006602,
-     0x21048f00,
+     0x21049100,
      0x51004606,
      0x05014646,
      0x2f008026,
      0x2400045b,
      0x1f057b7b,
-     0x21048f00,
+     0x21049100,
      0x81182788,
      0x2f05098e,
      0x1f067b7b,
@@ -1200,20 +1202,20 @@ const uint32_t eg0_pdsp2[] =  {
      0x5102270e,
      0x5103270e,
      0x5104270e,
-     0x53062734,
-     0x510c27b2,
-     0x530a2736,
-     0x53082732,
-     0x530b2732,
-     0x53092732,
+     0x5306276e,
+     0x510c27e4,
+     0x530a2770,
+     0x5308276c,
+     0x530b276c,
+     0x5309276c,
      0x5105273b,
      0x24000286,
      0x2f0080c6,
-     0x21048f00,
-     0x21069400,
-     0x21069400,
-     0x21068d00,
-     0x21069400,
+     0x21049100,
+     0x2106d000,
+     0x2106d000,
+     0x2106c900,
+     0x2106d000,
      0xc9067b02,
      0x2e85098e,
      0xc9047b08,
@@ -1233,11 +1235,11 @@ const uint32_t eg0_pdsp2[] =  {
      0x1f0f8181,
      0x811007c1,
      0x1f060e0e,
-     0x2104b900,
+     0x2104bb00,
      0xc9057b04,
      0x24008000,
      0x81200760,
-     0x2104aa00,
+     0x2104ac00,
      0x911007c1,
      0x1f0f8181,
      0x811007c1,
@@ -1246,7 +1248,7 @@ const uint32_t eg0_pdsp2[] =  {
      0x81082481,
      0x51003a03,
      0x1f060e0e,
-     0x2104b900,
+     0x2104bb00,
      0x8112079a,
      0x101a1a05,
      0x13202424,
@@ -1268,7 +1270,7 @@ const uint32_t eg0_pdsp2[] =  {
      0x59388004,
      0x24001086,
      0x2f0080c6,
-     0x21048f00,
+     0x21049100,
      0x24000086,
      0x2f0080c6,
      0x2e80878a,
@@ -1378,7 +1380,57 @@ const uint32_t eg0_pdsp2[] =  {
      0x10515121,
      0x24005082,
      0xe10c2281,
-     0x21048f00,
+     0x240010c4,
+     0x2f000184,
+     0x2e808f8e,
+     0xc90bca2f,
+     0x24000082,
+     0x1f002222,
+     0xc9006e0a,
+     0x24ffa8c1,
+     0x24100081,
+     0xe1d801d1,
+     0x24ff48c1,
+     0x24040081,
+     0x24000091,
+     0xe100a18f,
+     0xe10ce192,
+     0x1f000202,
+     0x10828281,
+     0x240200c1,
+     0x24000060,
+     0xd1006006,
+     0x24000082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f006060,
+     0xd1016006,
+     0x24001082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f016060,
+     0xd1026006,
+     0x24003082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f026060,
+     0xd1036006,
+     0x24004082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f036060,
+     0xd1046006,
+     0x24006082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f046060,
+     0x6f1f60e2,
+     0x21049100,
      0x24000086,
      0x2f0080c6,
      0x2e80838a,
@@ -1388,20 +1440,20 @@ const uint32_t eg0_pdsp2[] =  {
      0x58c08004,
      0x24001086,
      0x2f0080c6,
-     0x21048f00,
+     0x21049100,
      0x240018c4,
      0x2f000384,
-     0x2105ab00,
+     0x2105e700,
      0x240014c4,
      0x2f000384,
      0x69016a13,
      0x592c8002,
-     0x2105a800,
+     0x2105e400,
      0x2e80838e,
      0x71046e04,
      0x240011d9,
      0x1f047b7b,
-     0x21048f00,
+     0x21049100,
      0x09056e81,
      0x09036ec1,
      0x00c18181,
@@ -1412,10 +1464,10 @@ const uint32_t eg0_pdsp2[] =  {
      0x2e808f8e,
      0x01088181,
      0x8281f38e,
-     0x21048f00,
+     0x21049100,
      0x69066a0e,
      0x59148002,
-     0x2105a800,
+     0x2105e400,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -1425,11 +1477,11 @@ const uint32_t eg0_pdsp2[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x21055b00,
-     0x21048f00,
+     0x21058f00,
+     0x21049100,
      0x69076a0e,
      0x59148002,
-     0x2105a800,
+     0x2105e400,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -1439,12 +1491,12 @@ const uint32_t eg0_pdsp2[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x21056900,
-     0x21048f00,
+     0x21059d00,
+     0x21049100,
      0x69086a19,
      0x24003cc0,
      0x58c08002,
-     0x2105a800,
+     0x2105e400,
      0x2e808b8e,
      0x240100c2,
      0x51006e12,
@@ -1464,12 +1516,12 @@ const uint32_t eg0_pdsp2[] =  {
      0x2f000184,
      0x2e80898f,
      0x05016e6e,
-     0x21057800,
-     0x21048f00,
+     0x2105ac00,
+     0x21049100,
      0x69096a1a,
      0x2400a0c0,
      0x58c08002,
-     0x2105a800,
+     0x2105e400,
      0x2e808d8e,
      0x240300c2,
      0x51006e13,
@@ -1485,19 +1537,27 @@ const uint32_t eg0_pdsp2[] =  {
      0x8082fc91,
      0x01108282,
      0x05014e4e,
-     0x21059700,
+     0x2105cb00,
      0x240018c4,
      0x2f000184,
      0x2e808b8f,
      0x05016e6e,
-     0x21059100,
-     0x21048f00,
+     0x2105c500,
+     0x21049100,
+     0x690a6a08,
+     0x590c8002,
+     0x2105e400,
+     0x2e80838e,
+     0x24ffa8c2,
+     0x24100082,
+     0xe1d0628e,
+     0x21049100,
      0x240002d9,
      0x1f047b7b,
-     0x21048f00,
+     0x21049100,
      0x240010d9,
      0x1f047b7b,
-     0x21048f00,
+     0x21049100,
      0x240000e1,
      0x240010c4,
      0x2e80878e,
@@ -1507,12 +1567,12 @@ const uint32_t eg0_pdsp2[] =  {
      0x01010101,
      0x0110c1c1,
      0x670b01fa,
-     0x21048f00,
-     0x21048f00,
-     0x21048f00,
-     0x21048f00,
-     0x21048f00,
-     0x21048f00,
+     0x21049100,
+     0x21049100,
+     0x21049100,
+     0x21049100,
+     0x21049100,
+     0x21049100,
      0xc907ff00,
      0x911007ca,
      0x1d0f8a8a,
@@ -1528,7 +1588,7 @@ const uint32_t eg0_pdsp2[] =  {
      0x11c00101,
      0x51014703,
      0x24001641,
-     0x2105cb00,
+     0x21060700,
      0x24000d41,
      0x12410101,
      0x812607c1,
@@ -1574,7 +1634,7 @@ const uint32_t eg0_pdsp2[] =  {
      0x11c01a00,
      0x51000003,
      0x0b057a21,
-     0x2105fd00,
+     0x21063900,
      0xd1010105,
      0x11071a00,
      0x51000003,
@@ -1586,11 +1646,11 @@ const uint32_t eg0_pdsp2[] =  {
      0x00214646,
      0x00018686,
      0x24000042,
-     0x21060f00,
+     0x21064b00,
      0x00228686,
      0xc901680a,
      0x00224646,
-     0x21060f00,
+     0x21064b00,
      0xc9026804,
      0x0b057a02,
      0x00028686,
@@ -1635,9 +1695,9 @@ const uint32_t eg0_pdsp2[] =  {
      0x69010206,
      0xd1076603,
      0x2400002e,
-     0x21063900,
+     0x21067500,
      0x2400012e,
-     0x21063900,
+     0x21067500,
      0x69050214,
      0x1046462e,
      0x81186787,
@@ -1730,10 +1790,10 @@ const uint32_t eg0_pdsp2[] =  {
      0x24ff00c2,
      0x240000e1,
      0xe1742281,
-     0x21048f00,
+     0x21049100,
      0x24000c86,
      0x2f0080c6,
-     0x21048f00,
+     0x21049100,
      0x2eff8384,
      0x81007b84,
      0x240102c0,
index eb075ba9790f1ea8b5e55f4156ca07b636dea97c..44b2edb68b11b692ced5b0485edd95ff712d7762 100644 (file)
@@ -294,7 +294,7 @@ const uint32_t eg1_pdsp0[] =  {
      0x2eff8184,
      0x81003b84,
      0x21011200,
-     0x2305049e,
+     0x2305409e,
      0x2eff8582,
      0x8104a482,
      0x240001e2,
@@ -354,7 +354,7 @@ const uint32_t eg1_pdsp0[] =  {
      0x51040103,
      0x1f060e0e,
      0x21013500,
-     0x2102c300,
+     0x2102c500,
      0x21005c00,
      0xd106ff00,
      0x9110e78a,
@@ -512,7 +512,7 @@ const uint32_t eg1_pdsp0[] =  {
      0x1f063535,
      0x21012700,
      0x24000082,
-     0x2302679e,
+     0x2302699e,
      0x2e85098e,
      0xc901350a,
      0x593c9409,
@@ -638,8 +638,10 @@ const uint32_t eg1_pdsp0[] =  {
      0x240004c4,
      0x2f000184,
      0x111f7601,
+     0x51030104,
+     0x51040103,
      0x511f0103,
-     0x550001d7,
+     0x550001d5,
      0x21012700,
      0x24001004,
      0x2f000384,
@@ -647,7 +649,7 @@ const uint32_t eg1_pdsp0[] =  {
      0x24004304,
      0x58ce9603,
      0x109696c4,
-     0x21025a00,
+     0x21025c00,
      0x048f96c4,
      0x10565624,
      0x10f2f2e5,
@@ -679,7 +681,7 @@ const uint32_t eg1_pdsp0[] =  {
      0x048fc7c4,
      0x00cfc8c5,
      0x0300c5c5,
-     0x21027b00,
+     0x21027d00,
      0x10c7c7c4,
      0x10c8c8c5,
      0x10878785,
@@ -701,7 +703,7 @@ const uint32_t eg1_pdsp0[] =  {
      0x048fc7c4,
      0x00cfc8c5,
      0x0300c5c5,
-     0x21029100,
+     0x21029300,
      0x10c7c7c4,
      0x10c8c8c5,
      0x10878785,
@@ -745,7 +747,7 @@ const uint32_t eg1_pdsp0[] =  {
      0x01010303,
      0x01202323,
      0x0120e0e0,
-     0x21029c00,
+     0x21029e00,
      0x24000083,
      0xc9071d02,
      0x2400ff23,
@@ -754,7 +756,7 @@ const uint32_t eg1_pdsp0[] =  {
      0x00839494,
      0x2f05098e,
      0x209e0000,
-     0x2102c400,
+     0x2102c600,
      0x2eff8b96,
      0x05108980,
      0x24000d04,
@@ -764,15 +766,15 @@ const uint32_t eg1_pdsp0[] =  {
      0x10e9e9fa,
      0x51ce0703,
      0x1f077b7b,
-     0x2102fc00,
+     0x2102fe00,
      0x51006602,
-     0x2102fc00,
+     0x2102fe00,
      0x51004606,
      0x05014646,
      0x2f008026,
      0x2400045b,
      0x1f057b7b,
-     0x2102fc00,
+     0x2102fe00,
      0x81182788,
      0x2f05098e,
      0x1f067b7b,
@@ -797,20 +799,20 @@ const uint32_t eg1_pdsp0[] =  {
      0x5102270e,
      0x5103270e,
      0x5104270e,
-     0x53062734,
-     0x510c27b2,
-     0x530a2736,
-     0x53082732,
-     0x530b2732,
-     0x53092732,
+     0x5306276e,
+     0x510c27e4,
+     0x530a2770,
+     0x5308276c,
+     0x530b276c,
+     0x5309276c,
      0x5105273b,
      0x24000286,
      0x2f0080c6,
-     0x2102fc00,
-     0x21050100,
-     0x21050100,
-     0x2104fa00,
-     0x21050100,
+     0x2102fe00,
+     0x21053d00,
+     0x21053d00,
+     0x21053600,
+     0x21053d00,
      0xc9067b02,
      0x2e85098e,
      0xc9047b08,
@@ -830,11 +832,11 @@ const uint32_t eg1_pdsp0[] =  {
      0x1f0f8181,
      0x811007c1,
      0x1f060e0e,
-     0x21032600,
+     0x21032800,
      0xc9057b04,
      0x24008000,
      0x81200760,
-     0x21031700,
+     0x21031900,
      0x911007c1,
      0x1f0f8181,
      0x811007c1,
@@ -843,7 +845,7 @@ const uint32_t eg1_pdsp0[] =  {
      0x81082481,
      0x51003a03,
      0x1f060e0e,
-     0x21032600,
+     0x21032800,
      0x8112079a,
      0x101a1a05,
      0x13202424,
@@ -865,7 +867,7 @@ const uint32_t eg1_pdsp0[] =  {
      0x59388004,
      0x24001086,
      0x2f0080c6,
-     0x2102fc00,
+     0x2102fe00,
      0x24000086,
      0x2f0080c6,
      0x2e80878a,
@@ -975,7 +977,57 @@ const uint32_t eg1_pdsp0[] =  {
      0x10515121,
      0x24005082,
      0xe10c2281,
-     0x2102fc00,
+     0x240010c4,
+     0x2f000184,
+     0x2e808f8e,
+     0xc90bca2f,
+     0x24000082,
+     0x1f002222,
+     0xc9006e0a,
+     0x24ffa8c1,
+     0x24100081,
+     0xe1d801d1,
+     0x24ff48c1,
+     0x24040081,
+     0x24000091,
+     0xe100a18f,
+     0xe10ce192,
+     0x1f000202,
+     0x10828281,
+     0x240200c1,
+     0x24000060,
+     0xd1006006,
+     0x24000082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f006060,
+     0xd1016006,
+     0x24001082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f016060,
+     0xd1026006,
+     0x24003082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f026060,
+     0xd1036006,
+     0x24004082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f036060,
+     0xd1046006,
+     0x24006082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f046060,
+     0x6f1f60e2,
+     0x2102fe00,
      0x24000086,
      0x2f0080c6,
      0x2e80838a,
@@ -985,20 +1037,20 @@ const uint32_t eg1_pdsp0[] =  {
      0x58c08004,
      0x24001086,
      0x2f0080c6,
-     0x2102fc00,
+     0x2102fe00,
      0x240018c4,
      0x2f000384,
-     0x21041800,
+     0x21045400,
      0x240014c4,
      0x2f000384,
      0x69016a13,
      0x592c8002,
-     0x21041500,
+     0x21045100,
      0x2e80838e,
      0x71046e04,
      0x240011d9,
      0x1f047b7b,
-     0x2102fc00,
+     0x2102fe00,
      0x09056e81,
      0x09036ec1,
      0x00c18181,
@@ -1009,10 +1061,10 @@ const uint32_t eg1_pdsp0[] =  {
      0x2e808f8e,
      0x01088181,
      0x8281f38e,
-     0x2102fc00,
+     0x2102fe00,
      0x69066a0e,
      0x59148002,
-     0x21041500,
+     0x21045100,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -1022,11 +1074,11 @@ const uint32_t eg1_pdsp0[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x2103c800,
-     0x2102fc00,
+     0x2103fc00,
+     0x2102fe00,
      0x69076a0e,
      0x59148002,
-     0x21041500,
+     0x21045100,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -1036,12 +1088,12 @@ const uint32_t eg1_pdsp0[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x2103d600,
-     0x2102fc00,
+     0x21040a00,
+     0x2102fe00,
      0x69086a19,
      0x24003cc0,
      0x58c08002,
-     0x21041500,
+     0x21045100,
      0x2e808b8e,
      0x240100c2,
      0x51006e12,
@@ -1061,12 +1113,12 @@ const uint32_t eg1_pdsp0[] =  {
      0x2f000184,
      0x2e80898f,
      0x05016e6e,
-     0x2103e500,
-     0x2102fc00,
+     0x21041900,
+     0x2102fe00,
      0x69096a1a,
      0x2400a0c0,
      0x58c08002,
-     0x21041500,
+     0x21045100,
      0x2e808d8e,
      0x240300c2,
      0x51006e13,
@@ -1082,19 +1134,27 @@ const uint32_t eg1_pdsp0[] =  {
      0x8082fc91,
      0x01108282,
      0x05014e4e,
-     0x21040400,
+     0x21043800,
      0x240018c4,
      0x2f000184,
      0x2e808b8f,
      0x05016e6e,
-     0x2103fe00,
-     0x2102fc00,
+     0x21043200,
+     0x2102fe00,
+     0x690a6a08,
+     0x590c8002,
+     0x21045100,
+     0x2e80838e,
+     0x24ffa8c2,
+     0x24100082,
+     0xe1d0628e,
+     0x2102fe00,
      0x240002d9,
      0x1f047b7b,
-     0x2102fc00,
+     0x2102fe00,
      0x240010d9,
      0x1f047b7b,
-     0x2102fc00,
+     0x2102fe00,
      0x240000e1,
      0x240010c4,
      0x2e80878e,
@@ -1104,12 +1164,12 @@ const uint32_t eg1_pdsp0[] =  {
      0x01010101,
      0x0110c1c1,
      0x670b01fa,
-     0x2102fc00,
-     0x2102fc00,
-     0x2102fc00,
-     0x2102fc00,
-     0x2102fc00,
-     0x2102fc00,
+     0x2102fe00,
+     0x2102fe00,
+     0x2102fe00,
+     0x2102fe00,
+     0x2102fe00,
+     0x2102fe00,
      0xc907ff00,
      0x911007ca,
      0x1d0f8a8a,
@@ -1125,7 +1185,7 @@ const uint32_t eg1_pdsp0[] =  {
      0x11c00101,
      0x51014703,
      0x24001641,
-     0x21043800,
+     0x21047400,
      0x24000d41,
      0x12410101,
      0x812607c1,
@@ -1171,7 +1231,7 @@ const uint32_t eg1_pdsp0[] =  {
      0x11c01a00,
      0x51000003,
      0x0b057a21,
-     0x21046a00,
+     0x2104a600,
      0xd1010105,
      0x11071a00,
      0x51000003,
@@ -1183,11 +1243,11 @@ const uint32_t eg1_pdsp0[] =  {
      0x00214646,
      0x00018686,
      0x24000042,
-     0x21047c00,
+     0x2104b800,
      0x00228686,
      0xc901680a,
      0x00224646,
-     0x21047c00,
+     0x2104b800,
      0xc9026804,
      0x0b057a02,
      0x00028686,
@@ -1232,9 +1292,9 @@ const uint32_t eg1_pdsp0[] =  {
      0x69010206,
      0xd1076603,
      0x2400002e,
-     0x2104a600,
+     0x2104e200,
      0x2400012e,
-     0x2104a600,
+     0x2104e200,
      0x69050214,
      0x1046462e,
      0x81186787,
@@ -1327,10 +1387,10 @@ const uint32_t eg1_pdsp0[] =  {
      0x24ff00c2,
      0x240000e1,
      0xe1742281,
-     0x2102fc00,
+     0x2102fe00,
      0x24000c86,
      0x2f0080c6,
-     0x2102fc00,
+     0x2102fe00,
      0x2eff8384,
      0x81007b84,
      0x209e0000 };
index e2e1b7d5f19bb1e543a787e2f29b025e63a6eddb..7157443139954776de5a4df677d1c2722d0d5f03 100644 (file)
@@ -542,7 +542,7 @@ const uint32_t eg2_pdsp0[] =  {
      0x2eff8184,
      0x81003b84,
      0x21020a00,
-     0x2305fc9e,
+     0x2306389e,
      0x2eff8582,
      0x8104a482,
      0x240001e2,
@@ -602,7 +602,7 @@ const uint32_t eg2_pdsp0[] =  {
      0x51040103,
      0x1f060e0e,
      0x21022d00,
-     0x2103bb00,
+     0x2103bd00,
      0x21005c00,
      0xd106ff00,
      0x9110e78a,
@@ -760,7 +760,7 @@ const uint32_t eg2_pdsp0[] =  {
      0x1f063535,
      0x21021f00,
      0x24000082,
-     0x23035f9e,
+     0x2303619e,
      0x2e85098e,
      0xc901350a,
      0x593c9409,
@@ -886,8 +886,10 @@ const uint32_t eg2_pdsp0[] =  {
      0x240004c4,
      0x2f000184,
      0x111f7601,
+     0x51030104,
+     0x51040103,
      0x511f0103,
-     0x550001d7,
+     0x550001d5,
      0x21021f00,
      0x24001004,
      0x2f000384,
@@ -895,7 +897,7 @@ const uint32_t eg2_pdsp0[] =  {
      0x24004304,
      0x58ce9603,
      0x109696c4,
-     0x21035200,
+     0x21035400,
      0x048f96c4,
      0x10565624,
      0x10f2f2e5,
@@ -927,7 +929,7 @@ const uint32_t eg2_pdsp0[] =  {
      0x048fc7c4,
      0x00cfc8c5,
      0x0300c5c5,
-     0x21037300,
+     0x21037500,
      0x10c7c7c4,
      0x10c8c8c5,
      0x10878785,
@@ -949,7 +951,7 @@ const uint32_t eg2_pdsp0[] =  {
      0x048fc7c4,
      0x00cfc8c5,
      0x0300c5c5,
-     0x21038900,
+     0x21038b00,
      0x10c7c7c4,
      0x10c8c8c5,
      0x10878785,
@@ -993,7 +995,7 @@ const uint32_t eg2_pdsp0[] =  {
      0x01010303,
      0x01202323,
      0x0120e0e0,
-     0x21039400,
+     0x21039600,
      0x24000083,
      0xc9071d02,
      0x2400ff23,
@@ -1002,7 +1004,7 @@ const uint32_t eg2_pdsp0[] =  {
      0x00839494,
      0x2f05098e,
      0x209e0000,
-     0x2103bc00,
+     0x2103be00,
      0x2eff8b96,
      0x05108980,
      0x24000d04,
@@ -1012,15 +1014,15 @@ const uint32_t eg2_pdsp0[] =  {
      0x10e9e9fa,
      0x51ce0703,
      0x1f077b7b,
-     0x2103f400,
+     0x2103f600,
      0x51006602,
-     0x2103f400,
+     0x2103f600,
      0x51004606,
      0x05014646,
      0x2f008026,
      0x2400045b,
      0x1f057b7b,
-     0x2103f400,
+     0x2103f600,
      0x81182788,
      0x2f05098e,
      0x1f067b7b,
@@ -1045,20 +1047,20 @@ const uint32_t eg2_pdsp0[] =  {
      0x5102270e,
      0x5103270e,
      0x5104270e,
-     0x53062734,
-     0x510c27b2,
-     0x530a2736,
-     0x53082732,
-     0x530b2732,
-     0x53092732,
+     0x5306276e,
+     0x510c27e4,
+     0x530a2770,
+     0x5308276c,
+     0x530b276c,
+     0x5309276c,
      0x5105273b,
      0x24000286,
      0x2f0080c6,
-     0x2103f400,
-     0x2105f900,
-     0x2105f900,
-     0x2105f200,
-     0x2105f900,
+     0x2103f600,
+     0x21063500,
+     0x21063500,
+     0x21062e00,
+     0x21063500,
      0xc9067b02,
      0x2e85098e,
      0xc9047b08,
@@ -1078,11 +1080,11 @@ const uint32_t eg2_pdsp0[] =  {
      0x1f0f8181,
      0x811007c1,
      0x1f060e0e,
-     0x21041e00,
+     0x21042000,
      0xc9057b04,
      0x24008000,
      0x81200760,
-     0x21040f00,
+     0x21041100,
      0x911007c1,
      0x1f0f8181,
      0x811007c1,
@@ -1091,7 +1093,7 @@ const uint32_t eg2_pdsp0[] =  {
      0x81082481,
      0x51003a03,
      0x1f060e0e,
-     0x21041e00,
+     0x21042000,
      0x8112079a,
      0x101a1a05,
      0x13202424,
@@ -1113,7 +1115,7 @@ const uint32_t eg2_pdsp0[] =  {
      0x59388004,
      0x24001086,
      0x2f0080c6,
-     0x2103f400,
+     0x2103f600,
      0x24000086,
      0x2f0080c6,
      0x2e80878a,
@@ -1223,7 +1225,57 @@ const uint32_t eg2_pdsp0[] =  {
      0x10515121,
      0x24005082,
      0xe10c2281,
-     0x2103f400,
+     0x240010c4,
+     0x2f000184,
+     0x2e808f8e,
+     0xc90bca2f,
+     0x24000082,
+     0x1f002222,
+     0xc9006e0a,
+     0x24ffa8c1,
+     0x24100081,
+     0xe1d801d1,
+     0x24ff48c1,
+     0x24040081,
+     0x24000091,
+     0xe100a18f,
+     0xe10ce192,
+     0x1f000202,
+     0x10828281,
+     0x240200c1,
+     0x24000060,
+     0xd1006006,
+     0x24000082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f006060,
+     0xd1016006,
+     0x24001082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f016060,
+     0xd1026006,
+     0x24003082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f026060,
+     0xd1036006,
+     0x24004082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f036060,
+     0xd1046006,
+     0x24006082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f046060,
+     0x6f1f60e2,
+     0x2103f600,
      0x24000086,
      0x2f0080c6,
      0x2e80838a,
@@ -1233,20 +1285,20 @@ const uint32_t eg2_pdsp0[] =  {
      0x58c08004,
      0x24001086,
      0x2f0080c6,
-     0x2103f400,
+     0x2103f600,
      0x240018c4,
      0x2f000384,
-     0x21051000,
+     0x21054c00,
      0x240014c4,
      0x2f000384,
      0x69016a13,
      0x592c8002,
-     0x21050d00,
+     0x21054900,
      0x2e80838e,
      0x71046e04,
      0x240011d9,
      0x1f047b7b,
-     0x2103f400,
+     0x2103f600,
      0x09056e81,
      0x09036ec1,
      0x00c18181,
@@ -1257,10 +1309,10 @@ const uint32_t eg2_pdsp0[] =  {
      0x2e808f8e,
      0x01088181,
      0x8281f38e,
-     0x2103f400,
+     0x2103f600,
      0x69066a0e,
      0x59148002,
-     0x21050d00,
+     0x21054900,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -1270,11 +1322,11 @@ const uint32_t eg2_pdsp0[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x2104c000,
-     0x2103f400,
+     0x2104f400,
+     0x2103f600,
      0x69076a0e,
      0x59148002,
-     0x21050d00,
+     0x21054900,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -1284,12 +1336,12 @@ const uint32_t eg2_pdsp0[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x2104ce00,
-     0x2103f400,
+     0x21050200,
+     0x2103f600,
      0x69086a19,
      0x24003cc0,
      0x58c08002,
-     0x21050d00,
+     0x21054900,
      0x2e808b8e,
      0x240100c2,
      0x51006e12,
@@ -1309,12 +1361,12 @@ const uint32_t eg2_pdsp0[] =  {
      0x2f000184,
      0x2e80898f,
      0x05016e6e,
-     0x2104dd00,
-     0x2103f400,
+     0x21051100,
+     0x2103f600,
      0x69096a1a,
      0x2400a0c0,
      0x58c08002,
-     0x21050d00,
+     0x21054900,
      0x2e808d8e,
      0x240300c2,
      0x51006e13,
@@ -1330,19 +1382,27 @@ const uint32_t eg2_pdsp0[] =  {
      0x8082fc91,
      0x01108282,
      0x05014e4e,
-     0x2104fc00,
+     0x21053000,
      0x240018c4,
      0x2f000184,
      0x2e808b8f,
      0x05016e6e,
-     0x2104f600,
-     0x2103f400,
+     0x21052a00,
+     0x2103f600,
+     0x690a6a08,
+     0x590c8002,
+     0x21054900,
+     0x2e80838e,
+     0x24ffa8c2,
+     0x24100082,
+     0xe1d0628e,
+     0x2103f600,
      0x240002d9,
      0x1f047b7b,
-     0x2103f400,
+     0x2103f600,
      0x240010d9,
      0x1f047b7b,
-     0x2103f400,
+     0x2103f600,
      0x240000e1,
      0x240010c4,
      0x2e80878e,
@@ -1352,12 +1412,12 @@ const uint32_t eg2_pdsp0[] =  {
      0x01010101,
      0x0110c1c1,
      0x670b01fa,
-     0x2103f400,
-     0x2103f400,
-     0x2103f400,
-     0x2103f400,
-     0x2103f400,
-     0x2103f400,
+     0x2103f600,
+     0x2103f600,
+     0x2103f600,
+     0x2103f600,
+     0x2103f600,
+     0x2103f600,
      0xc907ff00,
      0x911007ca,
      0x1d0f8a8a,
@@ -1373,7 +1433,7 @@ const uint32_t eg2_pdsp0[] =  {
      0x11c00101,
      0x51014703,
      0x24001641,
-     0x21053000,
+     0x21056c00,
      0x24000d41,
      0x12410101,
      0x812607c1,
@@ -1419,7 +1479,7 @@ const uint32_t eg2_pdsp0[] =  {
      0x11c01a00,
      0x51000003,
      0x0b057a21,
-     0x21056200,
+     0x21059e00,
      0xd1010105,
      0x11071a00,
      0x51000003,
@@ -1431,11 +1491,11 @@ const uint32_t eg2_pdsp0[] =  {
      0x00214646,
      0x00018686,
      0x24000042,
-     0x21057400,
+     0x2105b000,
      0x00228686,
      0xc901680a,
      0x00224646,
-     0x21057400,
+     0x2105b000,
      0xc9026804,
      0x0b057a02,
      0x00028686,
@@ -1480,9 +1540,9 @@ const uint32_t eg2_pdsp0[] =  {
      0x69010206,
      0xd1076603,
      0x2400002e,
-     0x21059e00,
+     0x2105da00,
      0x2400012e,
-     0x21059e00,
+     0x2105da00,
      0x69050214,
      0x1046462e,
      0x81186787,
@@ -1575,10 +1635,10 @@ const uint32_t eg2_pdsp0[] =  {
      0x24ff00c2,
      0x240000e1,
      0xe1742281,
-     0x2103f400,
+     0x2103f600,
      0x24000c86,
      0x2f0080c6,
-     0x2103f400,
+     0x2103f600,
      0x2eff8384,
      0x81007b84,
      0x209e0000 };
index 40d6d5ed9d239385860559a999ef2489fce6cb1d..256022863e9b9bbcadbb3fd8de00089385eeada2 100644 (file)
@@ -47,7 +47,7 @@
 /* This file is generated by the PDSP assembler.                       */
 
 const uint32_t in0_pdsp0[] =  {
-     0x21002b00,
+     0x21002c00,
      0xbabe0000,
      0x03000101,
      0x2effa780,
@@ -56,6 +56,7 @@ const uint32_t in0_pdsp0[] =  {
      0x8900fc80,
      0x8950fc80,
      0x81f07380,
+     0x81d0f380,
      0x240100f4,
      0x240200f5,
      0x00f4f5f5,
@@ -90,7 +91,7 @@ const uint32_t in0_pdsp0[] =  {
      0x2400026a,
      0x81c4338a,
      0x209e0000,
-     0x2303239e,
+     0x23032c9e,
      0x24010182,
      0x240300c2,
      0x81043782,
@@ -102,14 +103,22 @@ const uint32_t in0_pdsp0[] =  {
      0xd100ff00,
      0x2300039e,
      0x2eff819d,
-     0x2400001d,
-     0x8100177d,
+     0x24000002,
+     0x81001762,
      0xc91fff06,
      0x1f1fffff,
      0x91f07381,
      0x0101e1e1,
      0x0300e2e2,
      0x81f07381,
+     0xc901ff08,
+     0x91042481,
+     0x17002141,
+     0x10411d1d,
+     0x12011d1d,
+     0x240000e1,
+     0x81042481,
+     0x21004800,
      0xc903ff07,
      0x910c2481,
      0x17002141,
@@ -127,9 +136,9 @@ const uint32_t in0_pdsp0[] =  {
      0xd106ff00,
      0x93202896,
      0xc9000403,
-     0x23006c9e,
-     0x21005300,
-     0x2302129e,
+     0x2300759e,
+     0x21005c00,
+     0x23021b9e,
      0x1d067d7d,
      0xc9017d04,
      0x93402e8e,
@@ -141,24 +150,24 @@ const uint32_t in0_pdsp0[] =  {
      0x1f067d7d,
      0x24000504,
      0x2f010184,
-     0x21006600,
+     0x21006f00,
      0x1d047d7d,
      0x2e86098e,
      0x240023e4,
      0x2f04898e,
      0x2f000184,
-     0x21006500,
-     0x21006600,
+     0x21006e00,
+     0x21006f00,
      0xd1057d02,
      0xd304ffe4,
-     0xcf057dd1,
+     0xcf057dc9,
      0xc910ff02,
-     0x21003900,
-     0x21057400,
+     0x21003a00,
+     0x2105b700,
      0x2480089f,
      0x0906c481,
      0x92812088,
-     0x090a1dd9,
+     0x240000d9,
      0x12c4d9d9,
      0x1f0fb6b6,
      0xc9016806,
@@ -185,7 +194,7 @@ const uint32_t in0_pdsp0[] =  {
      0x11c01717,
      0x51014a03,
      0x13161717,
-     0x21008c00,
+     0x21009500,
      0x130d1717,
      0x812608d7,
      0x69004a04,
@@ -238,7 +247,7 @@ const uint32_t in0_pdsp0[] =  {
      0x11c01a00,
      0x51000003,
      0x0b057a21,
-     0x2100c600,
+     0x2100cf00,
      0xd1010106,
      0x113f1700,
      0x51030002,
@@ -251,11 +260,11 @@ const uint32_t in0_pdsp0[] =  {
      0x00214949,
      0x00018989,
      0x24000042,
-     0x2100d800,
+     0x2100e100,
      0x00228989,
      0xc9016b0a,
      0x00224949,
-     0x2100d800,
+     0x2100e100,
      0xc9026b04,
      0x0b05da02,
      0x00028989,
@@ -269,7 +278,7 @@ const uint32_t in0_pdsp0[] =  {
      0x911008c1,
      0x1d0f8181,
      0x811008c1,
-     0x21014d00,
+     0x21015600,
      0x51016c6a,
      0x51046c69,
      0xd1006b09,
@@ -298,9 +307,9 @@ const uint32_t in0_pdsp0[] =  {
      0x69010206,
      0xd1076903,
      0x2400002e,
-     0x21010000,
+     0x21010900,
      0x2400012e,
-     0x21010000,
+     0x21010900,
      0x6905020e,
      0x1049492e,
      0xd10bb658,
@@ -397,7 +406,7 @@ const uint32_t in0_pdsp0[] =  {
      0x812608d7,
      0x24007081,
      0x9081f489,
-     0x21007b00,
+     0x21008400,
      0x108c8cd4,
      0x91001993,
      0x01045301,
@@ -411,23 +420,23 @@ const uint32_t in0_pdsp0[] =  {
      0x209e0000,
      0x0904dede,
      0x90def486,
-     0x2402eb9e,
-     0x21018500,
+     0x2402f49e,
+     0x21018e00,
      0x2480099f,
-     0x2402eb9e,
+     0x2402f49e,
      0xc909b603,
      0x2400f081,
-     0x21017500,
+     0x21017e00,
      0xc908b605,
      0x2400e081,
      0x9081f486,
      0x51066602,
-     0x21018500,
+     0x21018e00,
      0xd10fb605,
      0x11033737,
      0x13003737,
      0x9100f486,
-     0x21018500,
+     0x21018e00,
      0x0b0ad941,
      0x10d9d981,
      0x11032121,
@@ -435,7 +444,7 @@ const uint32_t in0_pdsp0[] =  {
      0x09024141,
      0x90413882,
      0xf081e286,
-     0x21018500,
+     0x21018e00,
      0x10d7d794,
      0x24000f42,
      0x83206796,
@@ -470,7 +479,7 @@ const uint32_t in0_pdsp0[] =  {
      0x11c01a00,
      0x51000003,
      0x0b057a21,
-     0x2101ae00,
+     0x2101b700,
      0xd1010106,
      0x113f1700,
      0x51030002,
@@ -483,11 +492,11 @@ const uint32_t in0_pdsp0[] =  {
      0x00214646,
      0x00018686,
      0x24000042,
-     0x2101c000,
+     0x2101c900,
      0x00228686,
      0xc901680a,
      0x00224646,
-     0x2101c000,
+     0x2101c900,
      0xc9026804,
      0x0b057a02,
      0x00028686,
@@ -590,29 +599,29 @@ const uint32_t in0_pdsp0[] =  {
      0xc909b604,
      0xc900020c,
      0x01048181,
-     0x21022600,
+     0x21022f00,
      0xc908b604,
      0xc901020b,
      0x01148181,
-     0x21022600,
+     0x21022f00,
      0xc902020c,
      0x01248181,
      0x9081fc89,
-     0x21007a00,
+     0x21008300,
      0xc909b603,
      0x2400f081,
-     0x21022d00,
+     0x21023600,
      0xc908b605,
      0x2400e081,
      0x9081f489,
      0x51066902,
-     0x21007a00,
+     0x21008300,
      0xd10fb606,
      0x11033737,
      0x13003737,
      0x812608d7,
      0x9100f489,
-     0x21007a00,
+     0x21008300,
      0x0b0ad941,
      0x10d9d981,
      0x11032121,
@@ -620,7 +629,7 @@ const uint32_t in0_pdsp0[] =  {
      0x09024141,
      0x90413882,
      0xf081e289,
-     0x21007a00,
+     0x21008300,
      0x0b069781,
      0x110f8181,
      0x240100c1,
@@ -629,11 +638,11 @@ const uint32_t in0_pdsp0[] =  {
      0x00c18181,
      0xc909b603,
      0x01048181,
-     0x21024800,
+     0x21025100,
      0x01148181,
      0x9081fc86,
-     0x2402eb9e,
-     0x21018500,
+     0x2402f49e,
+     0x21018e00,
      0x91002481,
      0x0101e1e1,
      0x81002481,
@@ -645,7 +654,7 @@ const uint32_t in0_pdsp0[] =  {
      0x24002004,
      0x24000024,
      0x1f047d7d,
-     0x2102eb00,
+     0x2102f400,
      0x2480009f,
      0x10ecece5,
      0x24000804,
@@ -666,7 +675,7 @@ const uint32_t in0_pdsp0[] =  {
      0x24002004,
      0x24000024,
      0x1f047d7d,
-     0x2102eb00,
+     0x2102f400,
      0xc9015d38,
      0x09032881,
      0x51008136,
@@ -689,9 +698,9 @@ const uint32_t in0_pdsp0[] =  {
      0xd106ff00,
      0x93202896,
      0xc9000403,
-     0x23006c9e,
-     0x21028500,
-     0x2302129e,
+     0x2300759e,
+     0x21028e00,
+     0x23021b9e,
      0x1d067d7d,
      0x2e85098e,
      0xc907ff00,
@@ -699,7 +708,7 @@ const uint32_t in0_pdsp0[] =  {
      0xd1016604,
      0x81110726,
      0x2400022e,
-     0x21029100,
+     0x21029a00,
      0x2400002e,
      0x108686c5,
      0x10464605,
@@ -713,7 +722,7 @@ const uint32_t in0_pdsp0[] =  {
      0x1d000e0e,
      0xd1017d03,
      0x2f04898e,
-     0x21029c00,
+     0x2102a500,
      0x83402e8e,
      0x1f000e0e,
      0xc904ff00,
@@ -728,13 +737,13 @@ const uint32_t in0_pdsp0[] =  {
      0x2eff8b96,
      0x008f89d7,
      0x108989db,
-     0x2102b500,
+     0x2102be00,
      0x2eff8b96,
      0x008f89d7,
      0x2f05098e,
      0x24001097,
-     0x2402d19e,
-     0x21063300,
+     0x2402da9e,
+     0x21066a00,
      0x24000104,
      0x0508c9c4,
      0x2f000184,
@@ -752,7 +761,7 @@ const uint32_t in0_pdsp0[] =  {
      0x61100304,
      0x1f007d7d,
      0x240002de,
-     0x21030300,
+     0x21030c00,
      0x2eff8792,
      0x2f018792,
      0x2f020792,
@@ -762,7 +771,7 @@ const uint32_t in0_pdsp0[] =  {
      0x11033737,
      0x13143737,
      0x240002de,
-     0x2102e400,
+     0x2102ed00,
      0x09010300,
      0x90001580,
      0x22c0009e,
@@ -782,7 +791,7 @@ const uint32_t in0_pdsp0[] =  {
      0xc909b604,
      0xc9000207,
      0xc9030206,
-     0x2102e300,
+     0x2102ec00,
      0xc908b604,
      0xc9010203,
      0xc9040202,
@@ -808,48 +817,48 @@ const uint32_t in0_pdsp0[] =  {
      0x24000504,
      0xd110ff00,
      0x2f010184,
-     0x21006800,
+     0x21007100,
      0x2f05098e,
      0x13082424,
      0x2f000384,
-     0x21006800,
+     0x21007100,
      0x1d047d7d,
      0x1d077d7d,
      0x2f04898e,
      0x2f000384,
-     0x21006800,
+     0x21007100,
      0x1f047d7d,
      0x510ade1b,
      0xc9007d03,
      0x1d007d7d,
-     0x21016e00,
+     0x21017700,
      0x5103de07,
      0x5104de0a,
      0x5105de0d,
      0x5106de10,
      0x5707de32,
      0x0b0237de,
-     0x21016a00,
+     0x21017300,
      0x24402084,
      0x24001864,
      0x2400002e,
-     0x2102eb00,
+     0x2102f400,
      0x24402084,
      0x24001864,
      0x2400002e,
-     0x2102ef00,
+     0x2102f800,
      0x24402084,
      0x24001864,
      0x24000e2e,
-     0x2102eb00,
+     0x2102f400,
      0x24402084,
      0x24001864,
      0x24000d2e,
-     0x2102eb00,
+     0x2102f400,
      0x1f060e0e,
      0x24002004,
      0x24000024,
-     0x2102eb00,
+     0x2102f400,
      0x240000e3,
      0x31ff0006,
      0xd110ff00,
@@ -868,26 +877,26 @@ const uint32_t in0_pdsp0[] =  {
      0x85002e83,
      0x2eff8983,
      0x83242e83,
-     0x240578c8,
-     0x2405ee88,
-     0x240604c9,
-     0x24065d89,
-     0x24065fca,
-     0x2406618a,
-     0x240661cb,
-     0x2406618b,
-     0x240661cc,
-     0x2406618c,
-     0x240661cd,
-     0x2406618d,
-     0x240661ce,
-     0x24065b8e,
-     0x240618cf,
-     0x2406618f,
-     0x240661d0,
-     0x24066190,
-     0x240661d1,
-     0x24066191,
+     0x2405bbc8,
+     0x24062988,
+     0x24063fc9,
+     0x24069489,
+     0x240696ca,
+     0x2406988a,
+     0x240698cb,
+     0x2406988b,
+     0x240698cc,
+     0x2406988c,
+     0x240698cd,
+     0x2406988d,
+     0x240698ce,
+     0x2406928e,
+     0x240651cf,
+     0x2406988f,
+     0x240698d0,
+     0x24069890,
+     0x240698d1,
+     0x24069891,
      0x8500f588,
      0x248100c8,
      0x2488a888,
@@ -965,7 +974,7 @@ const uint32_t in0_pdsp0[] =  {
      0x240004d9,
      0x1f047b7b,
      0x1d057b7b,
-     0x2103e900,
+     0x2103f200,
      0x0b05ca21,
      0x090221c1,
      0x0100c1c1,
@@ -988,10 +997,10 @@ const uint32_t in0_pdsp0[] =  {
      0xd1067d04,
      0xd110ff00,
      0x2f010184,
-     0x2103e900,
+     0x2103f200,
      0x81242e84,
      0x1f057d7d,
-     0x2103e900,
+     0x2103f200,
      0x2eff8b96,
      0x05108980,
      0x24000d04,
@@ -1001,15 +1010,15 @@ const uint32_t in0_pdsp0[] =  {
      0x10e9e9fa,
      0x51ce0703,
      0x1f077b7b,
-     0x2103e900,
+     0x2103f200,
      0x51006602,
-     0x2103e900,
+     0x2103f200,
      0x51004606,
      0x05014646,
      0x2f008026,
      0x2400045b,
      0x1f057b7b,
-     0x2103e900,
+     0x2103f200,
      0x81182788,
      0x2f05098e,
      0x1f067b7b,
@@ -1034,20 +1043,20 @@ const uint32_t in0_pdsp0[] =  {
      0x5102270e,
      0x5103270e,
      0x5104270e,
-     0x53062733,
-     0x510c27a6,
-     0x530a2735,
-     0x53082731,
-     0x530b2731,
-     0x53092731,
+     0x5306276d,
+     0x510c27d8,
+     0x530a276f,
+     0x5308276b,
+     0x530b276b,
+     0x5309276b,
      0x5105272f,
      0x24000286,
      0x2f0080c6,
-     0x2103e900,
-     0x21051600,
-     0x21039000,
-     0x21051300,
-     0x21051300,
+     0x2103f200,
+     0x21055900,
+     0x21039900,
+     0x21055600,
+     0x21055600,
      0xc9067b02,
      0x2e85098e,
      0xc9047b08,
@@ -1068,11 +1077,11 @@ const uint32_t in0_pdsp0[] =  {
      0x1f0f8181,
      0x811007c1,
      0x1f060e0e,
-     0x21040f00,
+     0x21041800,
      0xc9057b04,
      0x24008000,
      0x81200760,
-     0x21040500,
+     0x21040e00,
      0x911007c1,
      0x1f0f8181,
      0x811007c1,
@@ -1081,16 +1090,16 @@ const uint32_t in0_pdsp0[] =  {
      0x81082481,
      0x51003a03,
      0x1f060e0e,
-     0x21040f00,
+     0x21041800,
      0x8112079a,
      0x101a1a05,
      0x13202424,
-     0x2102ef00,
-     0x2102ef00,
+     0x2102f800,
+     0x2102f800,
      0x59388004,
      0x24001086,
      0x2f0080c6,
-     0x2103e900,
+     0x2103f200,
      0x24000086,
      0x2f0080c6,
      0x2e80878a,
@@ -1200,7 +1209,57 @@ const uint32_t in0_pdsp0[] =  {
      0x10515121,
      0x24005082,
      0xe10c2281,
-     0x2103e900,
+     0x240010c4,
+     0x2f000184,
+     0x2e808f8e,
+     0xc90bca2f,
+     0x24000082,
+     0x1f002222,
+     0xc9006e0a,
+     0x24ffa8c1,
+     0x24100081,
+     0xe1d801d1,
+     0x24ff48c1,
+     0x24040081,
+     0x24000091,
+     0xe100a18f,
+     0xe10ce192,
+     0x1f000202,
+     0x10828281,
+     0x240200c1,
+     0x24000060,
+     0xd1006006,
+     0x24000082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f006060,
+     0xd1016006,
+     0x24001082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f016060,
+     0xd1026006,
+     0x24003082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f026060,
+     0xd1036006,
+     0x24004082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f036060,
+     0xd1046006,
+     0x24006082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f046060,
+     0x6f1f60e2,
+     0x2103f200,
      0x24000086,
      0x2f0080c6,
      0x2e80838a,
@@ -1210,20 +1269,20 @@ const uint32_t in0_pdsp0[] =  {
      0x58c08004,
      0x24001086,
      0x2f0080c6,
-     0x2103e900,
+     0x2103f200,
      0x240018c4,
      0x2f000384,
-     0x21050400,
+     0x21054700,
      0x240014c4,
      0x2f000384,
      0x69016a13,
      0x592c8002,
-     0x21050100,
+     0x21054400,
      0x2e80838e,
      0x71046e04,
      0x240011d9,
      0x1f047b7b,
-     0x2103e900,
+     0x2103f200,
      0x09056e81,
      0x09036ec1,
      0x00c18181,
@@ -1234,10 +1293,10 @@ const uint32_t in0_pdsp0[] =  {
      0x2e808f8e,
      0x01088181,
      0x8281f38e,
-     0x2103e900,
+     0x2103f200,
      0x69036a0b,
      0x59088002,
-     0x21050100,
+     0x21054400,
      0x2e80818e,
      0x1d045d5d,
      0xc9006e05,
@@ -1245,10 +1304,10 @@ const uint32_t in0_pdsp0[] =  {
      0x1d055d5d,
      0xc9016e02,
      0x1f055d5d,
-     0x2103e900,
+     0x2103f200,
      0x69066a0e,
      0x59148002,
-     0x21050100,
+     0x21054400,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -1258,11 +1317,11 @@ const uint32_t in0_pdsp0[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x2104b400,
-     0x2103e900,
+     0x2104ef00,
+     0x2103f200,
      0x69076a0e,
      0x59148002,
-     0x21050100,
+     0x21054400,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -1272,12 +1331,12 @@ const uint32_t in0_pdsp0[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x2104c200,
-     0x2103e900,
+     0x2104fd00,
+     0x2103f200,
      0x69086a19,
      0x24003cc0,
      0x58c08002,
-     0x21050100,
+     0x21054400,
      0x2e808b8e,
      0x240100c2,
      0x51006e12,
@@ -1297,12 +1356,12 @@ const uint32_t in0_pdsp0[] =  {
      0x2f000184,
      0x2e80898f,
      0x05016e6e,
-     0x2104d100,
-     0x2103e900,
+     0x21050c00,
+     0x2103f200,
      0x69096a1a,
      0x2400a0c0,
      0x58c08002,
-     0x21050100,
+     0x21054400,
      0x2e808d8e,
      0x240300c2,
      0x51006e13,
@@ -1318,19 +1377,27 @@ const uint32_t in0_pdsp0[] =  {
      0x8082fc91,
      0x01108282,
      0x05014e4e,
-     0x2104f000,
+     0x21052b00,
      0x240018c4,
      0x2f000184,
      0x2e808b8f,
      0x05016e6e,
-     0x2104ea00,
-     0x2103e900,
+     0x21052500,
+     0x2103f200,
+     0x690a6a08,
+     0x590c8002,
+     0x21054400,
+     0x2e80838e,
+     0x24ffa8c2,
+     0x24100082,
+     0xe1d0628e,
+     0x2103f200,
      0x240002d9,
      0x1f047b7b,
-     0x2103e900,
+     0x2103f200,
      0x240010d9,
      0x1f047b7b,
-     0x2103e900,
+     0x2103f200,
      0x240000e1,
      0x240010c4,
      0x2e80878e,
@@ -1340,22 +1407,22 @@ const uint32_t in0_pdsp0[] =  {
      0x01010101,
      0x0110c1c1,
      0x671f01fa,
-     0x2103e900,
-     0x2103e900,
-     0x2103e900,
-     0x2103e900,
-     0x2103e900,
-     0x2103e900,
+     0x2103f200,
+     0x2103f200,
+     0x2103f200,
+     0x2103f200,
+     0x2103f200,
+     0x2103f200,
      0x24000c86,
      0x2f0080c6,
-     0x2103e900,
+     0x2103f200,
      0x2e80838a,
      0x2eff818d,
      0x240068c0,
      0x58c08004,
      0x24001000,
      0xc9037b41,
-     0x21055800,
+     0x21059b00,
      0x91200e61,
      0x240100c0,
      0x68c0ca12,
@@ -1363,7 +1430,7 @@ const uint32_t in0_pdsp0[] =  {
      0x69202104,
      0x24000400,
      0xc9037b39,
-     0x21055800,
+     0x21059b00,
      0x090221c1,
      0x0100c1c1,
      0x90c12e82,
@@ -1371,15 +1438,15 @@ const uint32_t in0_pdsp0[] =  {
      0x69200304,
      0x24000400,
      0xc9037b31,
-     0x21055800,
+     0x21059b00,
      0x090521ca,
      0x0003caca,
      0x2f00808a,
-     0x21053a00,
+     0x21057d00,
      0x60c0ca04,
      0x24000400,
      0xc9037b29,
-     0x21055800,
+     0x21059b00,
      0x0b05ca21,
      0x090221c1,
      0x0100c1c1,
@@ -1388,7 +1455,7 @@ const uint32_t in0_pdsp0[] =  {
      0x24000004,
      0x240018c4,
      0x2f000384,
-     0x21056000,
+     0x2105a300,
      0x1e03e2e2,
      0x80c12e82,
      0x2700e223,
@@ -1411,18 +1478,18 @@ const uint32_t in0_pdsp0[] =  {
      0xd1067d04,
      0xd110ff00,
      0x2f010984,
-     0x2103e900,
+     0x2103f200,
      0x83242e84,
      0x1f057d7d,
-     0x2103e900,
+     0x2103f200,
      0x100000d9,
      0x1f047b7b,
      0x1d057b7b,
-     0x2103e900,
+     0x2103f200,
      0x10000086,
      0x2f0080c6,
      0x1d057b7b,
-     0x2103e900,
+     0x2103f200,
      0x2e808f8e,
      0x2f01878e,
      0x2f020792,
@@ -1442,11 +1509,11 @@ const uint32_t in0_pdsp0[] =  {
      0x69032a03,
      0x1f016d6d,
      0x10cbcb8d,
-     0x21053e00,
+     0x21058100,
      0x1d057d7d,
      0x93242e84,
      0x2f010984,
-     0x21006a00,
+     0x21007300,
      0x1f009999,
      0xc907ff00,
      0x24000001,
@@ -1473,17 +1540,17 @@ const uint32_t in0_pdsp0[] =  {
      0x68e08606,
      0x68e0c705,
      0x1d09b6b6,
-     0x1d026a6a,
      0x1f08b6b6,
+     0x1d026a6a,
      0x1f036a6a,
      0x9140f592,
      0x240002c4,
      0x2e80858e,
      0x2405dce3,
      0x48e3ce17,
-     0x69aa2e50,
-     0x69aa0e4f,
-     0x69036f4e,
+     0x69aa2e3f,
+     0x69aa0e3e,
+     0x69036f3d,
      0xc9065d0f,
      0x592ece0e,
      0x5140d70d,
@@ -1494,11 +1561,11 @@ const uint32_t in0_pdsp0[] =  {
      0x111f0101,
      0x68013003,
      0x2480159f,
-     0x2105eb00,
+     0x21061d00,
      0x011010c1,
      0x80c13991,
      0x81011961,
-     0x2105eb00,
+     0x21061d00,
      0x1f039999,
      0x1f056a6a,
      0x10d0d0ce,
@@ -1509,39 +1576,22 @@ const uint32_t in0_pdsp0[] =  {
      0x2f000384,
      0x00c41616,
      0x240001de,
-     0x68d3ce05,
-     0x2e808086,
-     0x0b02463a,
-     0x24000303,
-     0x209e0000,
-     0x6893ce06,
-     0x2e808186,
-     0x0b04c63a,
-     0x0b023a3a,
-     0x24000403,
-     0x209e0000,
-     0x68d2ce05,
+     0x68d3ce02,
+     0x21062000,
+     0x6893ce02,
+     0x21062400,
+     0x68d2ce03,
      0x1f006a6a,
-     0x240000de,
-     0x24000103,
-     0x209e0000,
-     0x6892ce05,
+     0x21062900,
+     0x6892ce03,
      0x1f016a6a,
-     0x240000de,
-     0x24000103,
-     0x209e0000,
-     0x68d4ce04,
-     0x240000de,
-     0x24000203,
-     0x209e0000,
-     0x6894ce04,
-     0x240000de,
-     0x24000203,
-     0x209e0000,
-     0x68d5ce04,
-     0x240000de,
-     0x24000e03,
-     0x209e0000,
+     0x21062900,
+     0x68d4ce02,
+     0x21063f00,
+     0x6894ce02,
+     0x21063f00,
+     0x68d5ce02,
+     0x21065100,
      0x6895ce03,
      0x1f049999,
      0x1f046a6a,
@@ -1558,13 +1608,22 @@ const uint32_t in0_pdsp0[] =  {
      0x11f04700,
      0x69300003,
      0x13603737,
-     0x2105ec00,
+     0x21061e00,
      0x2f02878a,
      0x209e0000,
      0x2480079f,
      0x13143737,
      0x240002de,
      0x209e0000,
+     0x2e808486,
+     0x0b02463a,
+     0x24000303,
+     0x209e0000,
+     0x2e808186,
+     0x0b04c63a,
+     0x0b023a3a,
+     0x24000403,
+     0x209e0000,
      0x1f019999,
      0x0b061a80,
      0x91a01382,
@@ -1579,14 +1638,14 @@ const uint32_t in0_pdsp0[] =  {
      0x10cececb,
      0x110f6b6b,
      0x0b0dce8c,
-     0x21060000,
+     0x21063b00,
      0x10cece8b,
      0x110f2b2b,
      0x0b0dcecd,
      0x01021616,
      0x240002c4,
      0x2f000384,
-     0x21059600,
+     0x2105d900,
      0x1f029999,
      0x24800e9f,
      0x2e80838e,
@@ -1597,20 +1656,18 @@ const uint32_t in0_pdsp0[] =  {
      0x240004c4,
      0x2f000384,
      0x240001de,
-     0xc908ee08,
+     0xc908ee06,
      0x0b046f00,
-     0x69040003,
-     0x24000303,
-     0x209e0000,
-     0x69060003,
-     0x24000403,
-     0x209e0000,
+     0x69040002,
+     0x21062000,
+     0x69060002,
+     0x21062400,
      0x24001003,
      0x209e0000,
      0x2e80838e,
      0xc9075d03,
-     0x69116e15,
-     0x69004e14,
+     0x69116e13,
+     0x69004e12,
      0x1f049999,
      0x1f046a6a,
      0x108e8e89,
@@ -1619,17 +1676,15 @@ const uint32_t in0_pdsp0[] =  {
      0x00cf16d7,
      0x240001de,
      0x24002180,
-     0x68808f04,
+     0x68808f03,
      0x01021616,
-     0x24000303,
-     0x209e0000,
+     0x21062000,
      0x24005780,
-     0x68808f04,
+     0x68808f03,
      0x01021616,
-     0x24000403,
-     0x209e0000,
+     0x21062400,
      0x135c3737,
-     0x21063000,
+     0x21066700,
      0x13583737,
      0x240002de,
      0x24001003,
@@ -1646,7 +1701,7 @@ const uint32_t in0_pdsp0[] =  {
      0xc9012f04,
      0x10cececb,
      0x108e8e8b,
-     0x21064300,
+     0x21067a00,
      0x1f026a6a,
      0x11ffcecb,
      0x11ff8e8b,
@@ -1663,7 +1718,7 @@ const uint32_t in0_pdsp0[] =  {
      0xc9022f04,
      0x10cececb,
      0x108e8e8b,
-     0x21065400,
+     0x21068b00,
      0x1f026a6a,
      0x11ffcecb,
      0x11ff8e8b,
index d5a658d5b13849eb59aaae076b06a94893db2ece..ce02385ddcec1336b276272ec75b90678476869c 100644 (file)
@@ -50,7 +50,7 @@ const uint32_t in0_pdsp1[] =  {
      0x21000300,
      0xbabe0001,
      0x03000101,
-     0x2302989e,
+     0x2302eb9e,
      0x24010182,
      0x240300c2,
      0x81043782,
@@ -61,8 +61,16 @@ const uint32_t in0_pdsp1[] =  {
      0xc900ff00,
      0xd100ff00,
      0x2eff819d,
-     0x2400011d,
-     0x8100177d,
+     0x24000102,
+     0x81001762,
+     0xc901ff08,
+     0x91042481,
+     0x17002141,
+     0x10411d1d,
+     0x12011d1d,
+     0x240000e1,
+     0x81042481,
+     0x21001800,
      0xc903ff07,
      0x910c2481,
      0x11f85d5d,
@@ -70,19 +78,25 @@ const uint32_t in0_pdsp1[] =  {
      0x1021213d,
      0x240000e1,
      0x810c2481,
-     0xc9067d22,
+     0xc9067d28,
      0xc9077d02,
      0xd110ff00,
-     0xd110ff1f,
+     0xd110ff25,
      0x2e810384,
      0x2e86098e,
      0xc905ff00,
      0xd106ff00,
      0x93202896,
-     0xc9000403,
-     0x23003f9e,
-     0x21002400,
-     0x2300649e,
+     0xc9000406,
+     0xc9001d03,
+     0x2302aa9e,
+     0x21003200,
+     0x23004d9e,
+     0x21003200,
+     0xc9001d03,
+     0x2302ea9e,
+     0x21003200,
+     0x2300729e,
      0x1d067d7d,
      0xc9077d14,
      0x1d077d7d,
@@ -90,7 +104,7 @@ const uint32_t in0_pdsp1[] =  {
      0x1f067d7d,
      0x24000504,
      0x2f010184,
-     0x21003900,
+     0x21004700,
      0x1d047d7d,
      0x2e86098e,
      0x240023e4,
@@ -102,14 +116,14 @@ const uint32_t in0_pdsp1[] =  {
      0x24002404,
      0x2f04898e,
      0x2f000184,
-     0x21003800,
-     0x21003900,
+     0x21004600,
+     0x21004700,
      0xd1057d02,
-     0xd304ffc1,
-     0xcf057dd5,
+     0xd304ffab,
+     0xcf057dc7,
      0xc910ff02,
      0x21001000,
-     0x2104c600,
+     0x21056300,
      0x0906c481,
      0x92812088,
      0x10c8c89f,
@@ -123,11 +137,11 @@ const uint32_t in0_pdsp1[] =  {
      0x106a6a2e,
      0x244023e4,
      0x24001864,
-     0x21005b00,
+     0x21006900,
      0xd1015d04,
      0x2400002e,
      0x240391c5,
-     0x21005300,
+     0x21006100,
      0x2400012e,
      0x240011c5,
      0x246023e4,
@@ -151,7 +165,7 @@ const uint32_t in0_pdsp1[] =  {
      0x51006904,
      0x24000b6a,
      0x2400000a,
-     0x21004400,
+     0x21005200,
      0x2400002e,
      0x2f04898e,
      0x246023e4,
@@ -165,17 +179,17 @@ const uint32_t in0_pdsp1[] =  {
      0x51026904,
      0x1f060e0e,
      0x240020e4,
-     0x21025f00,
+     0x21027100,
      0x24000b2e,
      0x244020e4,
      0x24001864,
-     0x21025f00,
+     0x21027100,
      0x2400002e,
      0x24602084,
      0x24001864,
      0x10494905,
      0x811207c9,
-     0x21025f00,
+     0x21027100,
      0x10d7d794,
      0x24000f42,
      0x6902691b,
@@ -192,7 +206,7 @@ const uint32_t in0_pdsp1[] =  {
      0x11c01717,
      0x51014a03,
      0x13161717,
-     0x21009300,
+     0x2100a100,
      0x130d1717,
      0x812608d7,
      0xc9000a03,
@@ -241,7 +255,7 @@ const uint32_t in0_pdsp1[] =  {
      0x11c01a00,
      0x51000003,
      0x0b057a21,
-     0x2100c800,
+     0x2100d600,
      0xd1010105,
      0x11071a00,
      0x51000003,
@@ -253,11 +267,11 @@ const uint32_t in0_pdsp1[] =  {
      0x00214949,
      0x00018989,
      0x24000042,
-     0x2100da00,
+     0x2100e800,
      0x00228989,
      0xc9016b0a,
      0x00224949,
-     0x2100da00,
+     0x2100e800,
      0xc9026b04,
      0x0b05da02,
      0x00028989,
@@ -268,7 +282,7 @@ const uint32_t in0_pdsp1[] =  {
      0x24002002,
      0x2400002e,
      0xc905b602,
-     0x21013800,
+     0x21014600,
      0x51016c56,
      0x51046c55,
      0xd1006b09,
@@ -297,9 +311,9 @@ const uint32_t in0_pdsp1[] =  {
      0x69010206,
      0xd1076903,
      0x2400002e,
-     0x2100ff00,
+     0x21010d00,
      0x2400012e,
-     0x2100ff00,
+     0x21010d00,
      0x6905020e,
      0x1049492e,
      0xd10bb644,
@@ -376,7 +390,7 @@ const uint32_t in0_pdsp1[] =  {
      0x812608d7,
      0x24007081,
      0x9081f489,
-     0x21008200,
+     0x21009000,
      0x108c8cd4,
      0x91001993,
      0x01045301,
@@ -390,30 +404,8 @@ const uint32_t in0_pdsp1[] =  {
      0x209e0000,
      0x0904dede,
      0x90def486,
-     0x24025f9e,
-     0x21016f00,
-     0x24025f9e,
-     0xc909b603,
-     0x2400f081,
-     0x21015f00,
-     0xc908b605,
-     0x2400e081,
-     0x9081f486,
-     0x51066602,
-     0x21016f00,
-     0xd10fb605,
-     0x11033737,
-     0x13003737,
-     0x9100f486,
-     0x21016f00,
-     0x0b0ad941,
-     0x10d9d981,
-     0x11032121,
-     0x09068181,
-     0x09024141,
-     0x90413882,
-     0xf081e286,
-     0x21016f00,
+     0x2402719e,
+     0x21016700,
      0x10d7d794,
      0x24000f42,
      0x83206796,
@@ -448,7 +440,7 @@ const uint32_t in0_pdsp1[] =  {
      0x11c01a00,
      0x51000003,
      0x0b057a21,
-     0x21019700,
+     0x21018f00,
      0xd1010105,
      0x11071a00,
      0x51000003,
@@ -460,11 +452,11 @@ const uint32_t in0_pdsp1[] =  {
      0x00214646,
      0x00018686,
      0x24000042,
-     0x2101a900,
+     0x2101a100,
      0x00228686,
      0xc901680a,
      0x00224646,
-     0x2101a900,
+     0x2101a100,
      0xc9026804,
      0x0b057a02,
      0x00028686,
@@ -559,6 +551,32 @@ const uint32_t in0_pdsp1[] =  {
      0x81002481,
      0x2e808f86,
      0x2e84098e,
+     0xc9001d1a,
+     0x24000804,
+     0x2f000184,
+     0x242031e4,
+     0x2f000184,
+     0x2e808b96,
+     0x0b057601,
+     0x5304016a,
+     0x24000104,
+     0x0508c9c4,
+     0x2f000184,
+     0x24000c04,
+     0x2f000184,
+     0x2f05098e,
+     0x2eff8390,
+     0xc9025d03,
+     0x24000010,
+     0x21020b00,
+     0x24000b10,
+     0xc907ff00,
+     0x81386790,
+     0x2eff8792,
+     0x2f018792,
+     0x2f020792,
+     0x2f028792,
+     0x21056700,
      0xc90fca09,
      0x1d0fcaca,
      0x2f00808a,
@@ -567,7 +585,7 @@ const uint32_t in0_pdsp1[] =  {
      0x24002004,
      0x24000024,
      0x1f047d7d,
-     0x21025f00,
+     0x21027100,
      0x2480009f,
      0x24000804,
      0x2f000184,
@@ -581,25 +599,25 @@ const uint32_t in0_pdsp1[] =  {
      0x2e808b96,
      0x0b057601,
      0x51000114,
-     0x510401f6,
+     0x53040141,
      0x2480139f,
      0x1f060e0e,
      0x24002004,
      0x24000024,
      0x1f047d7d,
-     0x21025f00,
-     0x21021800,
+     0x21027100,
+     0x21022a00,
      0x240832e4,
      0x2f000384,
      0x2eff8b96,
      0x008f89d7,
-     0x21022e00,
+     0x21024000,
      0x2eff8b96,
      0x008f89d7,
      0x2f05098e,
      0x24001097,
-     0x2402579e,
-     0x2104cd00,
+     0x2402699e,
+     0x21065400,
      0x24000104,
      0x0508c9c4,
      0x2f000184,
@@ -617,17 +635,17 @@ const uint32_t in0_pdsp1[] =  {
      0x11033737,
      0x1016161c,
      0x1f037d7d,
-     0x21024100,
+     0x21025300,
      0x1f007d7d,
      0x240002de,
      0xc907ff00,
      0x24001876,
      0x83206796,
-     0x21027900,
+     0x21028b00,
      0x2eff8390,
      0xc9025d03,
      0x24000010,
-     0x21024600,
+     0x21025800,
      0x24000b10,
      0xc907ff00,
      0x81386790,
@@ -640,7 +658,7 @@ const uint32_t in0_pdsp1[] =  {
      0x11033737,
      0x13143737,
      0x240002de,
-     0x21025800,
+     0x21026a00,
      0x09010300,
      0x90001580,
      0x22c0009e,
@@ -664,11 +682,11 @@ const uint32_t in0_pdsp1[] =  {
      0x24000504,
      0xd110ff00,
      0x2f010184,
-     0x21003b00,
+     0x21004900,
      0x2f05098e,
      0x13082424,
      0x2f000384,
-     0x21003b00,
+     0x21004900,
      0x1d047d7d,
      0x1d077d7d,
      0x9110078a,
@@ -679,38 +697,103 @@ const uint32_t in0_pdsp1[] =  {
      0x1f070e0e,
      0x2f04898e,
      0x2f000384,
-     0x21003b00,
+     0x21004900,
      0x1f047d7d,
      0x510ade1a,
      0xc9007d03,
      0x1d007d7d,
-     0x21007100,
+     0x21007f00,
      0x5103de06,
      0x5104de09,
      0x5105de0c,
      0x5106de0f,
      0x0b0237de,
-     0x21015500,
+     0x21016300,
      0x24402084,
      0x24001864,
      0x2400002e,
-     0x21025f00,
+     0x21027100,
      0x24402084,
      0x24001864,
      0x2400002e,
-     0x21025f00,
+     0x21027100,
      0x24402084,
      0x24001864,
      0x24000e2e,
-     0x21025f00,
+     0x21027100,
      0x24402084,
      0x24001864,
      0x24000d2e,
-     0x21025f00,
+     0x21027100,
      0x1f060e0e,
      0x24002004,
      0x24000024,
-     0x21025f00,
+     0x21027100,
+     0x2480089f,
+     0x0906c481,
+     0x92812088,
+     0x240400d9,
+     0x12c4d9d9,
+     0x1f0fb6b6,
+     0x812108b6,
+     0x812c0899,
+     0x10d7d794,
+     0x8118288a,
+     0xc904380e,
+     0x60782b06,
+     0x48782b04,
+     0x51275804,
+     0x51285803,
+     0x51015802,
+     0x1f023838,
+     0xc9033807,
+     0x2400002e,
+     0x2f04898e,
+     0x24602384,
+     0x24001864,
+     0x811208c9,
+     0x10494905,
+     0xd102380b,
+     0x10cbcbd4,
+     0x91001993,
+     0x01045301,
+     0x111f0101,
+     0x68017303,
+     0x2480159f,
+     0x2102ce00,
+     0x011053c1,
+     0x80c13994,
+     0x81011961,
+     0xd1033810,
+     0xc9013813,
+     0xd1005d04,
+     0x244023e4,
+     0x24002064,
+     0x2102dd00,
+     0xd1015d04,
+     0x2400002e,
+     0x240391c5,
+     0x2102d900,
+     0x2400012e,
+     0x240011c5,
+     0x246023e4,
+     0x81120885,
+     0x24002064,
+     0x103d3d05,
+     0x240000f8,
+     0x2f04898e,
+     0x2f000384,
+     0x209e0000,
+     0x510b2e04,
+     0x244023e4,
+     0x24002064,
+     0x2102dd00,
+     0xcf0038f8,
+     0x24000d2e,
+     0x244023e4,
+     0x24002064,
+     0x2102dd00,
+     0x2102ce00,
      0x240000e3,
      0x31ff0006,
      0xd110ff00,
@@ -721,6 +804,7 @@ const uint32_t in0_pdsp1[] =  {
      0x2eff9183,
      0x24000664,
      0x24000668,
+     0x8300b083,
      0x244000e2,
      0x84c22083,
      0x0140c2c2,
@@ -729,27 +813,36 @@ const uint32_t in0_pdsp1[] =  {
      0x85002e83,
      0x2eff8983,
      0x83242e83,
-     0x2404cac8,
-     0x2404cd88,
-     0x2404cdc9,
-     0x2404d289,
-     0x240509ca,
-     0x24052b8a,
-     0x240544cb,
-     0x2405508b,
-     0x240568cc,
-     0x2405748c,
-     0x2405a0cd,
-     0x2405a28d,
-     0x2405a2ce,
-     0x2404d08e,
-     0x2404cdcf,
-     0x2405a48f,
-     0x2405d0d0,
-     0x2405be90,
-     0x2405c4d1,
-     0x2405ca91,
+     0x240567c8,
+     0x24062588,
+     0x240632c9,
+     0x24065989,
+     0x240690ca,
+     0x2406b28a,
+     0x2406cbcb,
+     0x2406d78b,
+     0x2406efcc,
+     0x2406fb8c,
+     0x240727cd,
+     0x2407298d,
+     0x240729ce,
+     0x2406578e,
+     0x240641cf,
+     0x24072b8f,
+     0x240757d0,
+     0x24074590,
+     0x24074bd1,
+     0x24075191,
      0x8500f588,
+     0x248100c8,
+     0x2488a888,
+     0x240800c9,
+     0x2486dd89,
+     0x248847ca,
+     0x2488488a,
+     0x248864cb,
+     0x2488638b,
+     0x8140f588,
      0x24505084,
      0x108484c4,
      0x10e4e4e5,
@@ -800,7 +893,7 @@ const uint32_t in0_pdsp1[] =  {
      0x240004d9,
      0x1f047b7b,
      0x1d057b7b,
-     0x21034400,
+     0x2103a100,
      0x0b05ca21,
      0x090221c1,
      0x0100c1c1,
@@ -823,10 +916,10 @@ const uint32_t in0_pdsp1[] =  {
      0xd1067d04,
      0xd110ff00,
      0x2f010184,
-     0x21034400,
+     0x2103a100,
      0x81242e84,
      0x1f057d7d,
-     0x21034400,
+     0x2103a100,
      0x2eff8b96,
      0x05108980,
      0x24000d04,
@@ -836,15 +929,15 @@ const uint32_t in0_pdsp1[] =  {
      0x10e9e9fa,
      0x51ce0703,
      0x1f077b7b,
-     0x21034400,
+     0x2103a100,
      0x51006602,
-     0x21034400,
+     0x2103a100,
      0x51004606,
      0x05014646,
      0x2f008026,
      0x2400045b,
      0x1f057b7b,
-     0x21034400,
+     0x2103a100,
      0x81182788,
      0x2f05098e,
      0x1f067b7b,
@@ -869,20 +962,20 @@ const uint32_t in0_pdsp1[] =  {
      0x5102270e,
      0x5103270e,
      0x5104270e,
-     0x53062728,
-     0x510c27a6,
-     0x530a272a,
-     0x53082726,
-     0x530b2726,
-     0x53092726,
+     0x53062762,
+     0x510c27d8,
+     0x530a2764,
+     0x53082760,
+     0x530b2760,
+     0x53092760,
      0x5105272f,
      0x24000286,
      0x2f0080c6,
-     0x21034400,
-     0x21046600,
-     0x2102eb00,
-     0x21046300,
-     0x21046300,
+     0x2103a100,
+     0x2104fd00,
+     0x21034800,
+     0x2104fa00,
+     0x2104fa00,
      0xc9067b02,
      0x2e85098e,
      0xc9047b08,
@@ -903,11 +996,11 @@ const uint32_t in0_pdsp1[] =  {
      0x1f0f8181,
      0x811007c1,
      0x1f060e0e,
-     0x21036a00,
+     0x2103c700,
      0xc9057b04,
      0x24008000,
      0x81200760,
-     0x21036000,
+     0x2103bd00,
      0x911007c1,
      0x1f0f8181,
      0x811007c1,
@@ -916,16 +1009,16 @@ const uint32_t in0_pdsp1[] =  {
      0x81082481,
      0x51003a03,
      0x1f060e0e,
-     0x21036a00,
+     0x2103c700,
      0x8112079a,
      0x101a1a05,
      0x13202424,
-     0x21025f00,
-     0x21025f00,
+     0x21027100,
+     0x21027100,
      0x59388004,
      0x24001086,
      0x2f0080c6,
-     0x21034400,
+     0x2103a100,
      0x24000086,
      0x2f0080c6,
      0x2e80878a,
@@ -1035,7 +1128,57 @@ const uint32_t in0_pdsp1[] =  {
      0x10515121,
      0x24005082,
      0xe10c2281,
-     0x21034400,
+     0x240010c4,
+     0x2f000184,
+     0x2e808f8e,
+     0xc90bca2f,
+     0x24000082,
+     0x1f002222,
+     0xc9006e0a,
+     0x24ffa8c1,
+     0x24100081,
+     0xe1d801d1,
+     0x24ff48c1,
+     0x24040081,
+     0x24000091,
+     0xe100a18f,
+     0xe10ce192,
+     0x1f000202,
+     0x10828281,
+     0x240200c1,
+     0x24000060,
+     0xd1006006,
+     0x24000082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f006060,
+     0xd1016006,
+     0x24001082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f016060,
+     0xd1026006,
+     0x24003082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f026060,
+     0xd1036006,
+     0x24004082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f036060,
+     0xd1046006,
+     0x24006082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f046060,
+     0x6f1f60e2,
+     0x2103a100,
      0x24000086,
      0x2f0080c6,
      0x2e80838a,
@@ -1045,20 +1188,20 @@ const uint32_t in0_pdsp1[] =  {
      0x58c08004,
      0x24001086,
      0x2f0080c6,
-     0x21034400,
+     0x2103a100,
      0x240018c4,
      0x2f000384,
-     0x21045400,
+     0x2104eb00,
      0x240014c4,
      0x2f000384,
      0x69016a13,
      0x592c8002,
-     0x21045100,
+     0x2104e800,
      0x2e80838e,
      0x71046e04,
      0x240011d9,
      0x1f047b7b,
-     0x21034400,
+     0x2103a100,
      0x09056e81,
      0x09036ec1,
      0x00c18181,
@@ -1069,10 +1212,10 @@ const uint32_t in0_pdsp1[] =  {
      0x2e808f8e,
      0x01088181,
      0x8281f38e,
-     0x21034400,
+     0x2103a100,
      0x69066a0e,
      0x59148002,
-     0x21045100,
+     0x2104e800,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -1082,11 +1225,11 @@ const uint32_t in0_pdsp1[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x21040400,
-     0x21034400,
+     0x21049300,
+     0x2103a100,
      0x69076a0e,
      0x59148002,
-     0x21045100,
+     0x2104e800,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -1096,12 +1239,12 @@ const uint32_t in0_pdsp1[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x21041200,
-     0x21034400,
+     0x2104a100,
+     0x2103a100,
      0x69086a19,
      0x24003cc0,
      0x58c08002,
-     0x21045100,
+     0x2104e800,
      0x2e808b8e,
      0x240100c2,
      0x51006e12,
@@ -1121,12 +1264,12 @@ const uint32_t in0_pdsp1[] =  {
      0x2f000184,
      0x2e80898f,
      0x05016e6e,
-     0x21042100,
-     0x21034400,
+     0x2104b000,
+     0x2103a100,
      0x69096a1a,
      0x2400a0c0,
      0x58c08002,
-     0x21045100,
+     0x2104e800,
      0x2e808d8e,
      0x240300c2,
      0x51006e13,
@@ -1142,19 +1285,27 @@ const uint32_t in0_pdsp1[] =  {
      0x8082fc91,
      0x01108282,
      0x05014e4e,
-     0x21044000,
+     0x2104cf00,
      0x240018c4,
      0x2f000184,
      0x2e808b8f,
      0x05016e6e,
-     0x21043a00,
-     0x21034400,
+     0x2104c900,
+     0x2103a100,
+     0x690a6a08,
+     0x590c8002,
+     0x2104e800,
+     0x2e80838e,
+     0x24ffa8c2,
+     0x24100082,
+     0xe1d0628e,
+     0x2103a100,
      0x240002d9,
      0x1f047b7b,
-     0x21034400,
+     0x2103a100,
      0x240010d9,
      0x1f047b7b,
-     0x21034400,
+     0x2103a100,
      0x240000e1,
      0x240010c4,
      0x2e80878e,
@@ -1164,23 +1315,27 @@ const uint32_t in0_pdsp1[] =  {
      0x01010101,
      0x0110c1c1,
      0x671f01fa,
-     0x21034400,
-     0x21034400,
-     0x21034400,
-     0x21034400,
-     0x21034400,
-     0x21034400,
+     0x2103a100,
+     0x2103a100,
+     0x2103a100,
+     0x2103a100,
+     0x2103a100,
+     0x2103a100,
      0x24000c86,
      0x2f0080c6,
-     0x21034400,
+     0x2103a100,
      0x2e80838a,
      0x2eff818d,
      0x240068c0,
      0x58c08004,
      0x24001000,
-     0xc9037b43,
-     0x2104aa00,
+     0xc9037b49,
+     0x21054700,
      0x91200e61,
+     0xc9001d04,
+     0x240100c0,
+     0x68c0ca17,
+     0x21050d00,
      0x10cacacd,
      0x1f0fcdcd,
      0x0101cd8d,
@@ -1188,24 +1343,24 @@ const uint32_t in0_pdsp1[] =  {
      0x27000121,
      0x69202104,
      0x24000400,
-     0xc9037b39,
-     0x2104aa00,
+     0xc9037b3b,
+     0x21054700,
      0x090221c1,
      0x0100c1c1,
      0x90c12e82,
      0x2700e203,
      0x69200304,
      0x24000400,
-     0xc9037b31,
-     0x2104aa00,
+     0xc9037b33,
+     0x21054700,
      0x090521ca,
      0x0003caca,
      0x2f00808a,
-     0x21048c00,
+     0x21052700,
      0x60c0ca04,
      0x24000400,
-     0xc9037b29,
-     0x2104aa00,
+     0xc9037b2b,
+     0x21054700,
      0x0b05ca21,
      0x090221c1,
      0x0100c1c1,
@@ -1214,7 +1369,7 @@ const uint32_t in0_pdsp1[] =  {
      0x24000004,
      0x240018c4,
      0x2f000384,
-     0x2104b200,
+     0x21054f00,
      0x1e03e2e2,
      0x80c12e82,
      0x2700e223,
@@ -1231,24 +1386,26 @@ const uint32_t in0_pdsp1[] =  {
      0x00ca9191,
      0x2f0080d1,
      0x24000104,
+     0xc9001d02,
+     0x24000204,
      0x10cacac4,
      0x24000024,
      0x10e9e9e5,
      0xd1067d04,
      0xd110ff00,
      0x2f010984,
-     0x21034400,
+     0x2103a100,
      0x83242e84,
      0x1f057d7d,
-     0x21034400,
+     0x2103a100,
      0x100000d9,
      0x1f047b7b,
      0x1d057b7b,
-     0x21034400,
+     0x2103a100,
      0x10000086,
      0x2f0080c6,
      0x1d057b7b,
-     0x21034400,
+     0x2103a100,
      0x2e808f8e,
      0x2f01878e,
      0x2f020792,
@@ -1268,15 +1425,249 @@ const uint32_t in0_pdsp1[] =  {
      0x69032a03,
      0x1f016d6d,
      0x10cbcb8d,
-     0x21049000,
+     0x21052b00,
      0x1d057d7d,
      0x93242e84,
      0x2f010984,
-     0x21003d00,
-     0x2105d700,
+     0x21004b00,
+     0xd1001d02,
+     0x21075e00,
+     0x24000038,
+     0x24000018,
+     0x2eff878a,
+     0x1028284c,
+     0x1f076c6c,
+     0x2e808586,
+     0x1047474a,
+     0x248000c9,
+     0x2f018786,
+     0x010c1818,
+     0x24000004,
+     0x24000cc4,
+     0x2f000384,
+     0xc908c608,
+     0x1f026a6a,
+     0x24ffffe0,
+     0x68e0c605,
+     0x68e08604,
+     0x68e0c703,
+     0x1d026a6a,
+     0x1f036a6a,
+     0x9140f592,
+     0x240002c4,
+     0x2e80858e,
+     0x2405dce3,
+     0x48e3ce07,
+     0x69aa2e61,
+     0x69aa0e60,
+     0x69036f5f,
+     0x1f056a6a,
+     0x10d0d0ce,
+     0x0108c4c4,
+     0x10cecec9,
+     0x2f018089,
+     0x2f02878a,
+     0x2f000384,
+     0x00c41818,
+     0x240001de,
+     0x68d3ce02,
+     0x2105e800,
+     0x6893ce02,
+     0x2105fa00,
+     0x68d2ce03,
+     0x1f006a6a,
+     0x21062500,
+     0x6892ce03,
+     0x1f016a6a,
+     0x21062500,
+     0x68d4ce02,
+     0x21063200,
+     0x6894ce02,
+     0x21063200,
+     0x68d5ce02,
+     0x21064100,
+     0x6895ce02,
+     0x1f046a6a,
+     0x24890280,
+     0x6880ce1a,
+     0x69016619,
+     0x69804618,
+     0x69c22617,
+     0x69000616,
+     0x69006715,
+     0x11f04700,
+     0x69300013,
+     0x1f043838,
+     0x2e808186,
+     0x0b056678,
+     0x10464658,
+     0x692a4603,
+     0x1f033838,
+     0x2105bc00,
+     0x692b4603,
+     0x1f033838,
+     0x2105bc00,
+     0x692d4603,
+     0x1f033838,
+     0x2105bc00,
+     0x692e4603,
+     0x1f033838,
+     0x2105bc00,
+     0x692f4602,
+     0x1f033838,
+     0x24000ce1,
+     0x90e13083,
+     0x5100c325,
+     0x68cec303,
+     0x1f023838,
+     0x2105e300,
+     0x51008321,
+     0x68ce8303,
+     0x1f023838,
+     0x2105e300,
+     0x0104e1e1,
+     0x90e13083,
+     0x5100c31b,
+     0x68cec303,
+     0x1f023838,
+     0x2105e300,
+     0x51008317,
+     0x68ce8303,
+     0x1f023838,
+     0x2105e300,
+     0x0104e1e1,
+     0x90e13083,
+     0x5100c311,
+     0x68cec303,
+     0x1f023838,
+     0x2105e300,
+     0x5100830d,
+     0x68ce8303,
+     0x1f023838,
+     0x2105e300,
+     0x0104e1e1,
+     0x90e13083,
+     0x5100c307,
+     0x6ecec3e5,
+     0x1f023838,
+     0x2105e300,
+     0x51008303,
+     0x68ce8302,
+     0x1f023838,
+     0x21026a00,
+     0x2480079f,
+     0x13143737,
      0x240002de,
      0x209e0000,
-     0x2105d700,
+     0x2e808986,
+     0x1f037d7d,
+     0x1f003838,
+     0x91386790,
+     0x101818d0,
+     0x243fff83,
+     0x10838783,
+     0x51008305,
+     0x1d0d8383,
+     0x51008302,
+     0x1d037d7d,
+     0x1f071010,
+     0x81386790,
+     0x69324802,
+     0x1f013838,
+     0x69334802,
+     0x1f013838,
+     0x21026a00,
+     0x1f003838,
+     0x1f037d7d,
+     0x91386790,
+     0x101818d0,
+     0x010618d1,
+     0x01281818,
+     0xd101b604,
+     0xc9005d03,
+     0x81386790,
+     0x21062000,
+     0x2e808386,
+     0x2eff8186,
+     0x10272766,
+     0x24002846,
+     0x24000004,
+     0x104646c4,
+     0x2f000384,
+     0x512c660c,
+     0x51006605,
+     0x512b6604,
+     0x513c6603,
+     0x513b6602,
+     0x21061e00,
+     0x2e808186,
+     0x01014646,
+     0x09034646,
+     0x101818d1,
+     0x00461818,
+     0x21060900,
+     0x2e808386,
+     0x0b038683,
+     0x51008303,
+     0x1d09caca,
+     0x1d037d7d,
+     0x10181891,
+     0x1f071010,
+     0xc9005d02,
+     0x81386790,
+     0x69322702,
+     0x1f013838,
+     0x69332702,
+     0x1f013838,
+     0x21026a00,
+     0x2e80808e,
+     0xc9006a05,
+     0x10cececb,
+     0x110f6b6b,
+     0x0b0dce8c,
+     0x21062e00,
+     0x10cece8b,
+     0x110f2b2b,
+     0x0b0dcecd,
+     0x01021818,
+     0x240002c4,
+     0x2f000384,
+     0x21057f00,
+     0x2e80838e,
+     0x0b0ceeee,
+     0x2f02018e,
+     0x1f066a6a,
+     0x01041818,
+     0x240004c4,
+     0x2f000384,
+     0x240001de,
+     0xc908ee06,
+     0x0b046f00,
+     0x69040002,
+     0x2105e800,
+     0x69060002,
+     0x2105fa00,
+     0x21026a00,
+     0x2e80838e,
+     0xc9075d03,
+     0x69116e10,
+     0x69004e0f,
+     0x1f046a6a,
+     0x108e8e89,
+     0x2f0180c9,
+     0x01061818,
+     0x240001de,
+     0x24002180,
+     0x68808f03,
+     0x01021818,
+     0x2105e800,
+     0x24005780,
+     0x68808f03,
+     0x01021818,
+     0x2105fa00,
+     0x21065300,
+     0x21026a00,
+     0x21075e00,
      0x240002de,
      0x209e0000,
      0x240002de,
@@ -1330,8 +1721,8 @@ const uint32_t in0_pdsp1[] =  {
      0x209e0000,
      0x11033737,
      0x13143737,
-     0x21050700,
-     0x2105d700,
+     0x21068e00,
+     0x21075e00,
      0x11033737,
      0x13643737,
      0x240002de,
@@ -1388,7 +1779,7 @@ const uint32_t in0_pdsp1[] =  {
      0x01016ec4,
      0x2f000384,
      0x00c4c0c0,
-     0x21053300,
+     0x2106ba00,
      0x1066664c,
      0x2f02802c,
      0x90661261,
index 016e165bca58165318d682f4704a3a1c9709015f..c062b047df2b40805279d712512a64916669fbae 100644 (file)
@@ -50,7 +50,7 @@ const uint32_t in1_pdsp0[] =  {
      0x21000300,
      0xbabe0002,
      0x03000101,
-     0x2302949e,
+     0x2302969e,
      0x24010182,
      0x240300c2,
      0x81043782,
@@ -61,20 +61,22 @@ const uint32_t in1_pdsp0[] =  {
      0xc900ff00,
      0xd100ff00,
      0x2eff819d,
-     0x2400021d,
-     0x8100177d,
-     0xc901ff13,
+     0x24000202,
+     0x81001762,
+     0xc901ff15,
+     0x91040461,
+     0x51010101,
      0x24000680,
      0x51028003,
      0x2400a481,
-     0x21001600,
+     0x21001800,
      0x2400a881,
      0x9081338e,
      0x9100b18f,
      0x69006e04,
      0x1d037d7d,
      0x2eff858f,
-     0x21002000,
+     0x21002200,
      0x1f037d7d,
      0x106e6e6f,
      0x108e8ed0,
@@ -99,9 +101,9 @@ const uint32_t in1_pdsp0[] =  {
      0xd106ff00,
      0x93202896,
      0xc9000403,
-     0x23004c9e,
-     0x21003700,
-     0x2301f19e,
+     0x23004e9e,
+     0x21003900,
+     0x2301f39e,
      0x1d067d7d,
      0xc9077d0e,
      0x1d077d7d,
@@ -109,24 +111,24 @@ const uint32_t in1_pdsp0[] =  {
      0x1f067d7d,
      0x24000504,
      0x2f010184,
-     0x21004600,
+     0x21004800,
      0x1d047d7d,
      0x2e86098e,
      0x240023e4,
      0x2f04898e,
      0x2f000184,
-     0x21004500,
-     0x21004600,
+     0x21004700,
+     0x21004800,
      0xd1057d02,
      0xd304ffc1,
-     0xcf057dc8,
+     0xcf057dc6,
      0xc910ff02,
      0x21001000,
-     0x2104d300,
+     0x21050f00,
      0x2480089f,
      0x0906c481,
      0x92812088,
-     0x090a1dd9,
+     0x240800d9,
      0x12c4d9d9,
      0x1f0fb6b6,
      0xc9016806,
@@ -153,7 +155,7 @@ const uint32_t in1_pdsp0[] =  {
      0x11c01717,
      0x51014a03,
      0x13161717,
-     0x21006c00,
+     0x21006e00,
      0x130d1717,
      0x812608d7,
      0x690b6a04,
@@ -206,7 +208,7 @@ const uint32_t in1_pdsp0[] =  {
      0x11c01a00,
      0x51000003,
      0x0b057a21,
-     0x2100a500,
+     0x2100a700,
      0xd1010105,
      0x11071a00,
      0x51000003,
@@ -218,11 +220,11 @@ const uint32_t in1_pdsp0[] =  {
      0x00214949,
      0x00018989,
      0x24000042,
-     0x2100b700,
+     0x2100b900,
      0x00228989,
      0xc9016b0a,
      0x00224949,
-     0x2100b700,
+     0x2100b900,
      0xc9026b04,
      0x0b05da02,
      0x00028989,
@@ -236,7 +238,7 @@ const uint32_t in1_pdsp0[] =  {
      0x911008c1,
      0x1d0f8181,
      0x811008c1,
-     0x21012d00,
+     0x21012f00,
      0x51016c6b,
      0x51046c6a,
      0xd1006b09,
@@ -265,9 +267,9 @@ const uint32_t in1_pdsp0[] =  {
      0x69010206,
      0xd1076903,
      0x2400002e,
-     0x2100df00,
+     0x2100e100,
      0x2400012e,
-     0x2100df00,
+     0x2100e100,
      0x6905020e,
      0x1049492e,
      0xd10bb659,
@@ -327,7 +329,7 @@ const uint32_t in1_pdsp0[] =  {
      0x51030004,
      0x51040003,
      0x10787817,
-     0x21011a00,
+     0x21011c00,
      0x10161617,
      0x8120e896,
      0x2f04898e,
@@ -365,7 +367,7 @@ const uint32_t in1_pdsp0[] =  {
      0x812608d7,
      0x24007081,
      0x9081f489,
-     0x21005b00,
+     0x21005d00,
      0x108c8cd4,
      0x91001993,
      0x01045301,
@@ -379,23 +381,23 @@ const uint32_t in1_pdsp0[] =  {
      0x209e0000,
      0x0904dede,
      0x90def486,
-     0x24025d9e,
-     0x21016500,
+     0x24025f9e,
+     0x21016700,
      0x2480099f,
-     0x24025d9e,
+     0x24025f9e,
      0xc909b603,
      0x2400f081,
-     0x21015500,
+     0x21015700,
      0xc908b605,
      0x2400e081,
      0x9081f486,
      0x51066602,
-     0x21016500,
+     0x21016700,
      0xd10fb605,
      0x11033737,
      0x13003737,
      0x9100f486,
-     0x21016500,
+     0x21016700,
      0x0b0ad941,
      0x10d9d981,
      0x11032121,
@@ -403,7 +405,7 @@ const uint32_t in1_pdsp0[] =  {
      0x09024141,
      0x90413882,
      0xf081e286,
-     0x21016500,
+     0x21016700,
      0x10d7d794,
      0x24000f42,
      0x83206796,
@@ -438,7 +440,7 @@ const uint32_t in1_pdsp0[] =  {
      0x11c01a00,
      0x51000003,
      0x0b057a21,
-     0x21018d00,
+     0x21018f00,
      0xd1010105,
      0x11071a00,
      0x51000003,
@@ -450,11 +452,11 @@ const uint32_t in1_pdsp0[] =  {
      0x00214646,
      0x00018686,
      0x24000042,
-     0x21019f00,
+     0x2101a100,
      0x00228686,
      0xc901680a,
      0x00224646,
-     0x21019f00,
+     0x2101a100,
      0xc9026804,
      0x0b057a02,
      0x00028686,
@@ -547,18 +549,18 @@ const uint32_t in1_pdsp0[] =  {
      0x2480099f,
      0xc909b603,
      0x2400f081,
-     0x2101f700,
+     0x2101f900,
      0xc908b605,
      0x2400e081,
      0x9081f489,
      0x51066902,
-     0x21005a00,
+     0x21005c00,
      0xd10fb606,
      0x11033737,
      0x13003737,
      0x812608d7,
      0x9100f489,
-     0x21005a00,
+     0x21005c00,
      0x0b0ad941,
      0x10d9d981,
      0x11032121,
@@ -566,7 +568,7 @@ const uint32_t in1_pdsp0[] =  {
      0x09024141,
      0x90413882,
      0xf081e289,
-     0x21005a00,
+     0x21005c00,
      0x91002481,
      0x0101e1e1,
      0x81002481,
@@ -578,7 +580,7 @@ const uint32_t in1_pdsp0[] =  {
      0x24002004,
      0x24000024,
      0x1f047d7d,
-     0x21025d00,
+     0x21025f00,
      0x2480009f,
      0x24000804,
      0x2f000184,
@@ -598,18 +600,18 @@ const uint32_t in1_pdsp0[] =  {
      0x24002004,
      0x24000024,
      0x1f047d7d,
-     0x21025d00,
+     0x21025f00,
      0x240832e4,
      0x2f000384,
      0x2eff8b96,
      0x008f89d7,
-     0x21023800,
+     0x21023a00,
      0x2eff8b96,
      0x008f89d7,
      0x2f05098e,
      0x24001097,
-     0x2402549e,
-     0x2104d900,
+     0x2402569e,
+     0x21051500,
      0x24000104,
      0x0508c9c4,
      0x2f000184,
@@ -627,7 +629,7 @@ const uint32_t in1_pdsp0[] =  {
      0x61100304,
      0x1f007d7d,
      0x240002de,
-     0x21027500,
+     0x21027700,
      0x2eff8792,
      0x2f018792,
      0x2f020792,
@@ -637,7 +639,7 @@ const uint32_t in1_pdsp0[] =  {
      0x11033737,
      0x13143737,
      0x240002de,
-     0x21025600,
+     0x21025800,
      0x09010300,
      0x90001580,
      0x22c0009e,
@@ -666,47 +668,47 @@ const uint32_t in1_pdsp0[] =  {
      0x24000504,
      0xd110ff00,
      0x2f010184,
-     0x21004800,
+     0x21004a00,
      0x2f05098e,
      0x13082424,
      0x2f000384,
-     0x21004800,
+     0x21004a00,
      0x1d047d7d,
      0x1d077d7d,
      0x2f04898e,
      0x2f000384,
-     0x21004800,
+     0x21004a00,
      0x1f047d7d,
      0x510ade1a,
      0xc9007d03,
      0x1d007d7d,
-     0x21014e00,
+     0x21015000,
      0x5103de06,
      0x5104de09,
      0x5105de0c,
      0x5106de0f,
      0x0b0237de,
-     0x21014a00,
+     0x21014c00,
      0x24402084,
      0x24001864,
      0x2400002e,
-     0x21025d00,
+     0x21025f00,
      0x24402084,
      0x24001864,
      0x2400002e,
-     0x21026100,
+     0x21026300,
      0x24402084,
      0x24001864,
      0x24000e2e,
-     0x21025d00,
+     0x21025f00,
      0x24402084,
      0x24001864,
      0x24000d2e,
-     0x21025d00,
+     0x21025f00,
      0x1f060e0e,
      0x24002004,
      0x24000024,
-     0x21025d00,
+     0x21025f00,
      0x240000e3,
      0x31ff0006,
      0xd110ff00,
@@ -725,26 +727,26 @@ const uint32_t in1_pdsp0[] =  {
      0x85002e83,
      0x2eff8983,
      0x83242e83,
-     0x2404d7c8,
-     0x2404d988,
-     0x2404d9c9,
-     0x2404fc89,
-     0x24058fca,
-     0x2406188a,
-     0x240630cb,
-     0x24063b8b,
-     0x24064ccc,
-     0x2406578c,
-     0x240681cd,
-     0x24068a8d,
-     0x24068ace,
-     0x2404db8e,
-     0x2404d9cf,
-     0x2406a58f,
-     0x2406bdd0,
-     0x2406bd90,
-     0x2406bdd1,
-     0x2406bd91,
+     0x240513c8,
+     0x24051588,
+     0x240515c9,
+     0x24053889,
+     0x2405cbca,
+     0x2406548a,
+     0x24066ccb,
+     0x2406778b,
+     0x240688cc,
+     0x2406938c,
+     0x2406bdcd,
+     0x2406c68d,
+     0x2406c6ce,
+     0x2405178e,
+     0x240515cf,
+     0x2406e18f,
+     0x2406f9d0,
+     0x2406f990,
+     0x2406f9d1,
+     0x2406f991,
      0x8500f588,
      0x24505084,
      0x108484c4,
@@ -815,7 +817,7 @@ const uint32_t in1_pdsp0[] =  {
      0x240004d9,
      0x1f047b7b,
      0x1d057b7b,
-     0x21035300,
+     0x21035500,
      0x0b05ca21,
      0x090221c1,
      0x0100c1c1,
@@ -838,10 +840,10 @@ const uint32_t in1_pdsp0[] =  {
      0xd1067d04,
      0xd110ff00,
      0x2f010184,
-     0x21035300,
+     0x21035500,
      0x81242e84,
      0x1f057d7d,
-     0x21035300,
+     0x21035500,
      0x2eff8b96,
      0x05108980,
      0x24000d04,
@@ -851,15 +853,15 @@ const uint32_t in1_pdsp0[] =  {
      0x10e9e9fa,
      0x51ce0703,
      0x1f077b7b,
-     0x21035300,
+     0x21035500,
      0x51006602,
-     0x21035300,
+     0x21035500,
      0x51004606,
      0x05014646,
      0x2f008026,
      0x2400045b,
      0x1f057b7b,
-     0x21035300,
+     0x21035500,
      0x81182788,
      0x2f05098e,
      0x1f067b7b,
@@ -884,20 +886,20 @@ const uint32_t in1_pdsp0[] =  {
      0x5102270e,
      0x5103270e,
      0x5104270e,
-     0x53062728,
-     0x510c27a6,
-     0x530a272a,
-     0x53082726,
-     0x530b2726,
-     0x53092726,
+     0x53062762,
+     0x510c27d8,
+     0x530a2764,
+     0x53082760,
+     0x530b2760,
+     0x53092760,
      0x5105272f,
      0x24000286,
      0x2f0080c6,
-     0x21035300,
-     0x21047500,
-     0x2102fa00,
-     0x21047200,
-     0x21047200,
+     0x21035500,
+     0x2104b100,
+     0x2102fc00,
+     0x2104ae00,
+     0x2104ae00,
      0xc9067b02,
      0x2e85098e,
      0xc9047b08,
@@ -918,11 +920,11 @@ const uint32_t in1_pdsp0[] =  {
      0x1f0f8181,
      0x811007c1,
      0x1f060e0e,
-     0x21037900,
+     0x21037b00,
      0xc9057b04,
      0x24008000,
      0x81200760,
-     0x21036f00,
+     0x21037100,
      0x911007c1,
      0x1f0f8181,
      0x811007c1,
@@ -931,16 +933,16 @@ const uint32_t in1_pdsp0[] =  {
      0x81082481,
      0x51003a03,
      0x1f060e0e,
-     0x21037900,
+     0x21037b00,
      0x8112079a,
      0x101a1a05,
      0x13202424,
-     0x21026100,
-     0x21026100,
+     0x21026300,
+     0x21026300,
      0x59388004,
      0x24001086,
      0x2f0080c6,
-     0x21035300,
+     0x21035500,
      0x24000086,
      0x2f0080c6,
      0x2e80878a,
@@ -1050,7 +1052,57 @@ const uint32_t in1_pdsp0[] =  {
      0x10515121,
      0x24005082,
      0xe10c2281,
-     0x21035300,
+     0x240010c4,
+     0x2f000184,
+     0x2e808f8e,
+     0xc90bca2f,
+     0x24000082,
+     0x1f002222,
+     0xc9006e0a,
+     0x24ffa8c1,
+     0x24100081,
+     0xe1d801d1,
+     0x24ff48c1,
+     0x24040081,
+     0x24000091,
+     0xe100a18f,
+     0xe10ce192,
+     0x1f000202,
+     0x10828281,
+     0x240200c1,
+     0x24000060,
+     0xd1006006,
+     0x24000082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f006060,
+     0xd1016006,
+     0x24001082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f016060,
+     0xd1026006,
+     0x24003082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f026060,
+     0xd1036006,
+     0x24004082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f036060,
+     0xd1046006,
+     0x24006082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f046060,
+     0x6f1f60e2,
+     0x21035500,
      0x24000086,
      0x2f0080c6,
      0x2e80838a,
@@ -1060,20 +1112,20 @@ const uint32_t in1_pdsp0[] =  {
      0x58c08004,
      0x24001086,
      0x2f0080c6,
-     0x21035300,
+     0x21035500,
      0x240018c4,
      0x2f000384,
-     0x21046300,
+     0x21049f00,
      0x240014c4,
      0x2f000384,
      0x69016a13,
      0x592c8002,
-     0x21046000,
+     0x21049c00,
      0x2e80838e,
      0x71046e04,
      0x240011d9,
      0x1f047b7b,
-     0x21035300,
+     0x21035500,
      0x09056e81,
      0x09036ec1,
      0x00c18181,
@@ -1084,10 +1136,10 @@ const uint32_t in1_pdsp0[] =  {
      0x2e808f8e,
      0x01088181,
      0x8281f38e,
-     0x21035300,
+     0x21035500,
      0x69066a0e,
      0x59148002,
-     0x21046000,
+     0x21049c00,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -1097,11 +1149,11 @@ const uint32_t in1_pdsp0[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x21041300,
-     0x21035300,
+     0x21044700,
+     0x21035500,
      0x69076a0e,
      0x59148002,
-     0x21046000,
+     0x21049c00,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -1111,12 +1163,12 @@ const uint32_t in1_pdsp0[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x21042100,
-     0x21035300,
+     0x21045500,
+     0x21035500,
      0x69086a19,
      0x24003cc0,
      0x58c08002,
-     0x21046000,
+     0x21049c00,
      0x2e808b8e,
      0x240100c2,
      0x51006e12,
@@ -1136,12 +1188,12 @@ const uint32_t in1_pdsp0[] =  {
      0x2f000184,
      0x2e80898f,
      0x05016e6e,
-     0x21043000,
-     0x21035300,
+     0x21046400,
+     0x21035500,
      0x69096a1a,
      0x2400a0c0,
      0x58c08002,
-     0x21046000,
+     0x21049c00,
      0x2e808d8e,
      0x240300c2,
      0x51006e13,
@@ -1157,19 +1209,27 @@ const uint32_t in1_pdsp0[] =  {
      0x8082fc91,
      0x01108282,
      0x05014e4e,
-     0x21044f00,
+     0x21048300,
      0x240018c4,
      0x2f000184,
      0x2e808b8f,
      0x05016e6e,
-     0x21044900,
-     0x21035300,
+     0x21047d00,
+     0x21035500,
+     0x690a6a08,
+     0x590c8002,
+     0x21049c00,
+     0x2e80838e,
+     0x24ffa8c2,
+     0x24100082,
+     0xe1d0628e,
+     0x21035500,
      0x240002d9,
      0x1f047b7b,
-     0x21035300,
+     0x21035500,
      0x240010d9,
      0x1f047b7b,
-     0x21035300,
+     0x21035500,
      0x240000e1,
      0x240010c4,
      0x2e80878e,
@@ -1179,22 +1239,22 @@ const uint32_t in1_pdsp0[] =  {
      0x01010101,
      0x0110c1c1,
      0x671f01fa,
-     0x21035300,
-     0x21035300,
-     0x21035300,
-     0x21035300,
-     0x21035300,
-     0x21035300,
+     0x21035500,
+     0x21035500,
+     0x21035500,
+     0x21035500,
+     0x21035500,
+     0x21035500,
      0x24000c86,
      0x2f0080c6,
-     0x21035300,
+     0x21035500,
      0x2e80838a,
      0x2eff818d,
      0x240068c0,
      0x58c08004,
      0x24001000,
      0xc9037b41,
-     0x2104b700,
+     0x2104f300,
      0x91200e61,
      0x240100c0,
      0x68c0ca12,
@@ -1202,7 +1262,7 @@ const uint32_t in1_pdsp0[] =  {
      0x69202104,
      0x24000400,
      0xc9037b39,
-     0x2104b700,
+     0x2104f300,
      0x090221c1,
      0x0100c1c1,
      0x90c12e82,
@@ -1210,15 +1270,15 @@ const uint32_t in1_pdsp0[] =  {
      0x69200304,
      0x24000400,
      0xc9037b31,
-     0x2104b700,
+     0x2104f300,
      0x090521ca,
      0x0003caca,
      0x2f00808a,
-     0x21049900,
+     0x2104d500,
      0x60c0ca04,
      0x24000400,
      0xc9037b29,
-     0x2104b700,
+     0x2104f300,
      0x0b05ca21,
      0x090221c1,
      0x0100c1c1,
@@ -1227,7 +1287,7 @@ const uint32_t in1_pdsp0[] =  {
      0x24000004,
      0x240018c4,
      0x2f000384,
-     0x2104bf00,
+     0x2104fb00,
      0x1e03e2e2,
      0x80c12e82,
      0x2700e223,
@@ -1250,18 +1310,18 @@ const uint32_t in1_pdsp0[] =  {
      0xd1067d04,
      0xd110ff00,
      0x2f010984,
-     0x21035300,
+     0x21035500,
      0x83242e84,
      0x1f057d7d,
-     0x21035300,
+     0x21035500,
      0x100000d9,
      0x1f047b7b,
      0x1d057b7b,
-     0x21035300,
+     0x21035500,
      0x10000086,
      0x2f0080c6,
      0x1d057b7b,
-     0x21035300,
+     0x21035500,
      0x2e808f8e,
      0x2f01878e,
      0x2f020792,
@@ -1281,11 +1341,11 @@ const uint32_t in1_pdsp0[] =  {
      0x69032a03,
      0x1f016d6d,
      0x10cbcb8d,
-     0x21049d00,
+     0x2104d900,
      0x1d057d7d,
      0x93242e84,
      0x2f010984,
-     0x21004a00,
+     0x21004c00,
      0x240002de,
      0x209e0000,
      0x240002de,
@@ -1345,7 +1405,7 @@ const uint32_t in1_pdsp0[] =  {
      0x2eff8792,
      0xd102b603,
      0x10d9d995,
-     0x21051600,
+     0x21055200,
      0x10dada95,
      0x111f3535,
      0x1d02b6b6,
@@ -1388,7 +1448,7 @@ const uint32_t in1_pdsp0[] =  {
      0x2700ea01,
      0x69200103,
      0x1f08b6b6,
-     0x21054100,
+     0x21057d00,
      0x61e06a03,
      0x49ef6a02,
      0x1f09b6b6,
@@ -1406,7 +1466,7 @@ const uint32_t in1_pdsp0[] =  {
      0x209e0000,
      0x11033737,
      0x13143737,
-     0x21055200,
+     0x21058e00,
      0x11033737,
      0x13643737,
      0x240002de,
@@ -1429,7 +1489,7 @@ const uint32_t in1_pdsp0[] =  {
      0x6e484bf9,
      0x01016b6b,
      0x808e100b,
-     0x21057600,
+     0x2105b200,
      0x57008197,
      0x586e4e0d,
      0x2700f07b,
@@ -1443,7 +1503,7 @@ const uint32_t in1_pdsp0[] =  {
      0x2400016b,
      0x09047b8e,
      0x808eb08b,
-     0x21057600,
+     0x2105b200,
      0x2400ff7b,
      0x2400015b,
      0x1f04b6b6,
@@ -1461,7 +1521,7 @@ const uint32_t in1_pdsp0[] =  {
      0x705b6b04,
      0x045b6b6b,
      0x8081308b,
-     0x21058c00,
+     0x2105c800,
      0x9100b18e,
      0x1c7bf0f0,
      0x51004e02,
@@ -1491,12 +1551,12 @@ const uint32_t in1_pdsp0[] =  {
      0x512b6004,
      0x513c6003,
      0x513b6002,
-     0x2105ac00,
+     0x2105e800,
      0x90800680,
      0x01014040,
      0x09034040,
      0x00408080,
-     0x21059f00,
+     0x2105db00,
      0x90800600,
      0x1f006161,
      0x10f1f1e2,
@@ -1512,7 +1572,7 @@ const uint32_t in1_pdsp0[] =  {
      0x6e604bf9,
      0x01016b6b,
      0x808e100b,
-     0x2105c900,
+     0x21060500,
      0xc9006128,
      0x586e4e0d,
      0x2700f07b,
@@ -1526,7 +1586,7 @@ const uint32_t in1_pdsp0[] =  {
      0x2400016b,
      0x09047b8e,
      0x808eb08b,
-     0x2105c900,
+     0x21060500,
      0x2400ff7b,
      0x2400015b,
      0x1f04b6b6,
@@ -1544,7 +1604,7 @@ const uint32_t in1_pdsp0[] =  {
      0x705b6b04,
      0x045b6b6b,
      0x8081308b,
-     0x2105df00,
+     0x21061b00,
      0x9100b18e,
      0x1c7bf0f0,
      0x51004e02,
@@ -1573,7 +1633,7 @@ const uint32_t in1_pdsp0[] =  {
      0x2eff878a,
      0xd102b603,
      0x10d9d98d,
-     0x2105fa00,
+     0x21063600,
      0x10dada8d,
      0x111f2d2d,
      0x1d02b6b6,
@@ -1624,7 +1684,7 @@ const uint32_t in1_pdsp0[] =  {
      0x01016ec4,
      0x2f000384,
      0x00c4c0c0,
-     0x21061f00,
+     0x21065b00,
      0x1066664c,
      0x2f02802c,
      0x90661261,
@@ -1734,7 +1794,7 @@ const uint32_t in1_pdsp0[] =  {
      0x1f046c6c,
      0xd102b603,
      0x10d9d98d,
-     0x21069b00,
+     0x2106d700,
      0x10dada8d,
      0x111f2d2d,
      0x1d02b6b6,
index 48c45be7f2ecc89c6da88b131dda5f90eea2629e..1b0cce152a736d566d65b7474d26da1c422e4269 100644 (file)
@@ -50,7 +50,7 @@ const uint32_t in1_pdsp1[] =  {
      0x21000300,
      0xbabe0101,
      0x03000101,
-     0x23026c9e,
+     0x2302749e,
      0x24010182,
      0x240300c2,
      0x81043782,
@@ -61,8 +61,16 @@ const uint32_t in1_pdsp1[] =  {
      0xc900ff00,
      0xd100ff00,
      0x2eff819d,
-     0x2400031d,
-     0x8100177d,
+     0x24000302,
+     0x81001762,
+     0xc901ff08,
+     0x91042481,
+     0x17002141,
+     0x10411d1d,
+     0x12011d1d,
+     0x240000e1,
+     0x81042481,
+     0x21001800,
      0xc9067d22,
      0xc9077d02,
      0xd110ff00,
@@ -73,9 +81,9 @@ const uint32_t in1_pdsp1[] =  {
      0xd106ff00,
      0x93202896,
      0xc9000403,
-     0x2300389e,
-     0x21001d00,
-     0x2301c19e,
+     0x2300409e,
+     0x21002500,
+     0x2301c99e,
      0x1d067d7d,
      0xc9077d14,
      0x1d077d7d,
@@ -83,7 +91,7 @@ const uint32_t in1_pdsp1[] =  {
      0x1f067d7d,
      0x24000504,
      0x2f010184,
-     0x21003200,
+     0x21003a00,
      0x1d047d7d,
      0x2e86098e,
      0x240023e4,
@@ -95,18 +103,18 @@ const uint32_t in1_pdsp1[] =  {
      0x24002404,
      0x2f04898e,
      0x2f000184,
-     0x21003100,
-     0x21003200,
+     0x21003900,
+     0x21003a00,
      0xd1057d02,
      0xd304ffa5,
-     0xcf057ddc,
+     0xcf057dd4,
      0xc910ff02,
      0x21001000,
-     0x2104a100,
+     0x2104e300,
      0x2480089f,
      0x0906c481,
      0x92812088,
-     0x090a1dd9,
+     0x240c00d9,
      0x12c4d9d9,
      0x1f0fb6b6,
      0xc9016806,
@@ -133,7 +141,7 @@ const uint32_t in1_pdsp1[] =  {
      0x11c01717,
      0x51014a03,
      0x13161717,
-     0x21005800,
+     0x21006000,
      0x130d1717,
      0x812608d7,
      0xc9000a03,
@@ -182,7 +190,7 @@ const uint32_t in1_pdsp1[] =  {
      0x11c01a00,
      0x51000003,
      0x0b057a21,
-     0x21008d00,
+     0x21009500,
      0xd1010105,
      0x11071a00,
      0x51000003,
@@ -194,11 +202,11 @@ const uint32_t in1_pdsp1[] =  {
      0x00214949,
      0x00018989,
      0x24000042,
-     0x21009f00,
+     0x2100a700,
      0x00228989,
      0xc9016b0a,
      0x00224949,
-     0x21009f00,
+     0x2100a700,
      0xc9026b04,
      0x0b05da02,
      0x00028989,
@@ -209,7 +217,7 @@ const uint32_t in1_pdsp1[] =  {
      0x24002002,
      0x2400002e,
      0xc905b602,
-     0x2100fd00,
+     0x21010500,
      0x51016c56,
      0x51046c55,
      0xd1006b09,
@@ -238,9 +246,9 @@ const uint32_t in1_pdsp1[] =  {
      0x69010206,
      0xd1076903,
      0x2400002e,
-     0x2100c400,
+     0x2100cc00,
      0x2400012e,
-     0x2100c400,
+     0x2100cc00,
      0x6905020e,
      0x1049492e,
      0xd10bb644,
@@ -317,7 +325,7 @@ const uint32_t in1_pdsp1[] =  {
      0x812608d7,
      0x24007081,
      0x9081f489,
-     0x21004700,
+     0x21004f00,
      0x108c8cd4,
      0x91001993,
      0x01045301,
@@ -331,23 +339,23 @@ const uint32_t in1_pdsp1[] =  {
      0x209e0000,
      0x0904dede,
      0x90def486,
-     0x2402339e,
-     0x21013500,
+     0x24023b9e,
+     0x21013d00,
      0x2480099f,
-     0x2402339e,
+     0x24023b9e,
      0xc909b603,
      0x2400f081,
-     0x21012500,
+     0x21012d00,
      0xc908b605,
      0x2400e081,
      0x9081f486,
      0x51066602,
-     0x21013500,
+     0x21013d00,
      0xd10fb605,
      0x11033737,
      0x13003737,
      0x9100f486,
-     0x21013500,
+     0x21013d00,
      0x0b0ad941,
      0x10d9d981,
      0x11032121,
@@ -355,7 +363,7 @@ const uint32_t in1_pdsp1[] =  {
      0x09024141,
      0x90413882,
      0xf081e286,
-     0x21013500,
+     0x21013d00,
      0x10d7d794,
      0x24000f42,
      0x83206796,
@@ -390,7 +398,7 @@ const uint32_t in1_pdsp1[] =  {
      0x11c01a00,
      0x51000003,
      0x0b057a21,
-     0x21015d00,
+     0x21016500,
      0xd1010105,
      0x11071a00,
      0x51000003,
@@ -402,11 +410,11 @@ const uint32_t in1_pdsp1[] =  {
      0x00214646,
      0x00018686,
      0x24000042,
-     0x21016f00,
+     0x21017700,
      0x00228686,
      0xc901680a,
      0x00224646,
-     0x21016f00,
+     0x21017700,
      0xc9026804,
      0x0b057a02,
      0x00028686,
@@ -499,18 +507,18 @@ const uint32_t in1_pdsp1[] =  {
      0x2480099f,
      0xc909b603,
      0x2400f081,
-     0x2101c700,
+     0x2101cf00,
      0xc908b605,
      0x2400e081,
      0x9081f489,
      0x51066902,
-     0x21004600,
+     0x21004e00,
      0xd10fb606,
      0x11033737,
      0x13003737,
      0x812608d7,
      0x9100f489,
-     0x21004600,
+     0x21004e00,
      0x0b0ad941,
      0x10d9d981,
      0x11032121,
@@ -518,7 +526,7 @@ const uint32_t in1_pdsp1[] =  {
      0x09024141,
      0x90413882,
      0xf081e289,
-     0x21004600,
+     0x21004e00,
      0x91002481,
      0x0101e1e1,
      0x81002481,
@@ -532,7 +540,7 @@ const uint32_t in1_pdsp1[] =  {
      0x24002004,
      0x24000024,
      0x1f047d7d,
-     0x21023300,
+     0x21023b00,
      0x2480009f,
      0x24000804,
      0x2f000184,
@@ -545,9 +553,9 @@ const uint32_t in1_pdsp1[] =  {
      0x511f0114,
      0x2e808b96,
      0xc905b604,
-     0x2304a59e,
+     0x2304e79e,
      0x1f047d7d,
-     0x21023300,
+     0x21023b00,
      0x0b057601,
      0x51000113,
      0x510401e9,
@@ -556,18 +564,18 @@ const uint32_t in1_pdsp1[] =  {
      0x24002004,
      0x24000024,
      0x1f047d7d,
-     0x21023300,
+     0x21023b00,
      0x240832e4,
      0x2f000384,
      0x2eff8b96,
      0x008f89d7,
-     0x21020e00,
+     0x21021600,
      0x2eff8b96,
      0x008f89d7,
      0x2f05098e,
      0x24001097,
-     0x24022a9e,
-     0x2104bc00,
+     0x2402329e,
+     0x2104fe00,
      0x24000104,
      0x0508c9c4,
      0x2f000184,
@@ -585,7 +593,7 @@ const uint32_t in1_pdsp1[] =  {
      0x61100304,
      0x51110303,
      0x240005de,
-     0x21022c00,
+     0x21023400,
      0x2eff8792,
      0x2f018792,
      0x2f020792,
@@ -595,7 +603,7 @@ const uint32_t in1_pdsp1[] =  {
      0x11033737,
      0x13143737,
      0x240002de,
-     0x21022c00,
+     0x21023400,
      0x09010300,
      0x90001580,
      0x22c0009e,
@@ -620,11 +628,11 @@ const uint32_t in1_pdsp1[] =  {
      0x24000504,
      0xd110ff00,
      0x2f010184,
-     0x21003400,
+     0x21003c00,
      0x2f05098e,
      0x13082424,
      0x2f000384,
-     0x21003400,
+     0x21003c00,
      0x1d047d7d,
      0x1d077d7d,
      0x9110078a,
@@ -635,38 +643,38 @@ const uint32_t in1_pdsp1[] =  {
      0x1f070e0e,
      0x2f04898e,
      0x2f000384,
-     0x21003400,
+     0x21003c00,
      0x1f047d7d,
      0x510ade1a,
      0xc9007d03,
      0x1d007d7d,
-     0x21011e00,
+     0x21012600,
      0x5103de06,
      0x5104de09,
      0x5105de0c,
      0x5106de0f,
      0x0b0237de,
-     0x21011a00,
+     0x21012200,
      0x24402084,
      0x24001864,
      0x2400002e,
-     0x21023300,
+     0x21023b00,
      0x24402084,
      0x24001864,
      0x2400002e,
-     0x21023300,
+     0x21023b00,
      0x24402084,
      0x24001864,
      0x24000e2e,
-     0x21023300,
+     0x21023b00,
      0x24402084,
      0x24001864,
      0x24000d2e,
-     0x21023300,
+     0x21023b00,
      0x1f060e0e,
      0x24002004,
      0x24000024,
-     0x21023300,
+     0x21023b00,
      0x240000e3,
      0x31ff0006,
      0xd110ff00,
@@ -685,26 +693,26 @@ const uint32_t in1_pdsp1[] =  {
      0x85002e83,
      0x2eff8983,
      0x83242e83,
-     0x2404bac8,
-     0x2404bc88,
-     0x2404bcc9,
-     0x2404c089,
-     0x2404c2ca,
-     0x2404c48a,
-     0x2404c4cb,
-     0x2404c48b,
-     0x2404c4cc,
-     0x2404c48c,
-     0x2404c4cd,
-     0x2404d68d,
-     0x2404d6ce,
-     0x2404be8e,
-     0x2404bccf,
-     0x2404eb8f,
-     0x240507d0,
-     0x2404eb90,
-     0x240507d1,
-     0x24050791,
+     0x2404fcc8,
+     0x2404fe88,
+     0x2404fec9,
+     0x24050289,
+     0x240504ca,
+     0x2405068a,
+     0x240506cb,
+     0x2405068b,
+     0x240506cc,
+     0x2405068c,
+     0x240506cd,
+     0x2405188d,
+     0x240518ce,
+     0x2405008e,
+     0x2404fecf,
+     0x24052d8f,
+     0x240549d0,
+     0x24052d90,
+     0x240549d1,
+     0x24054991,
      0x8500f588,
      0x24505084,
      0x108484c4,
@@ -756,7 +764,7 @@ const uint32_t in1_pdsp1[] =  {
      0x240004d9,
      0x1f047b7b,
      0x1d057b7b,
-     0x21031800,
+     0x21032000,
      0x0b05ca21,
      0x090221c1,
      0x0100c1c1,
@@ -779,10 +787,10 @@ const uint32_t in1_pdsp1[] =  {
      0xd1067d04,
      0xd110ff00,
      0x2f010184,
-     0x21031800,
+     0x21032000,
      0x81242e84,
      0x1f057d7d,
-     0x21031800,
+     0x21032000,
      0x2eff8b96,
      0x05108980,
      0x24000d04,
@@ -792,15 +800,15 @@ const uint32_t in1_pdsp1[] =  {
      0x10e9e9fa,
      0x51ce0703,
      0x1f077b7b,
-     0x21031800,
+     0x21032000,
      0x51006602,
-     0x21031800,
+     0x21032000,
      0x51004606,
      0x05014646,
      0x2f008026,
      0x2400045b,
      0x1f057b7b,
-     0x21031800,
+     0x21032000,
      0x81182788,
      0x2f05098e,
      0x1f067b7b,
@@ -825,20 +833,20 @@ const uint32_t in1_pdsp1[] =  {
      0x5102270e,
      0x5103270e,
      0x5104270e,
-     0x53062731,
-     0x510c27a6,
-     0x530a2733,
-     0x5308272f,
-     0x530b272f,
-     0x5309272f,
+     0x5306276b,
+     0x510c27d8,
+     0x530a276d,
+     0x53082769,
+     0x530b2769,
+     0x53092769,
      0x5105272f,
      0x24000286,
      0x2f0080c6,
-     0x21031800,
-     0x21044300,
-     0x2102bf00,
-     0x21044000,
-     0x21044000,
+     0x21032000,
+     0x21048500,
+     0x2102c700,
+     0x21048200,
+     0x21048200,
      0xc9067b02,
      0x2e85098e,
      0xc9047b08,
@@ -859,11 +867,11 @@ const uint32_t in1_pdsp1[] =  {
      0x1f0f8181,
      0x811007c1,
      0x1f060e0e,
-     0x21033e00,
+     0x21034600,
      0xc9057b04,
      0x24008000,
      0x81200760,
-     0x21033400,
+     0x21033c00,
      0x911007c1,
      0x1f0f8181,
      0x811007c1,
@@ -872,16 +880,16 @@ const uint32_t in1_pdsp1[] =  {
      0x81082481,
      0x51003a03,
      0x1f060e0e,
-     0x21033e00,
+     0x21034600,
      0x8112079a,
      0x101a1a05,
      0x13202424,
-     0x21023300,
-     0x21023300,
+     0x21023b00,
+     0x21023b00,
      0x59388004,
      0x24001086,
      0x2f0080c6,
-     0x21031800,
+     0x21032000,
      0x24000086,
      0x2f0080c6,
      0x2e80878a,
@@ -991,7 +999,57 @@ const uint32_t in1_pdsp1[] =  {
      0x10515121,
      0x24005082,
      0xe10c2281,
-     0x21031800,
+     0x240010c4,
+     0x2f000184,
+     0x2e808f8e,
+     0xc90bca2f,
+     0x24000082,
+     0x1f002222,
+     0xc9006e0a,
+     0x24ffa8c1,
+     0x24100081,
+     0xe1d801d1,
+     0x24ff48c1,
+     0x24040081,
+     0x24000091,
+     0xe100a18f,
+     0xe10ce192,
+     0x1f000202,
+     0x10828281,
+     0x240200c1,
+     0x24000060,
+     0xd1006006,
+     0x24000082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f006060,
+     0xd1016006,
+     0x24001082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f016060,
+     0xd1026006,
+     0x24003082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f026060,
+     0xd1036006,
+     0x24004082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f036060,
+     0xd1046006,
+     0x24006082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f046060,
+     0x6f1f60e2,
+     0x21032000,
      0x24000086,
      0x2f0080c6,
      0x2e80838a,
@@ -1001,20 +1059,20 @@ const uint32_t in1_pdsp1[] =  {
      0x58c08004,
      0x24001086,
      0x2f0080c6,
-     0x21031800,
+     0x21032000,
      0x240018c4,
      0x2f000384,
-     0x21043100,
+     0x21047300,
      0x240014c4,
      0x2f000384,
      0x69016a13,
      0x592c8002,
-     0x21042e00,
+     0x21047000,
      0x2e80838e,
      0x71046e04,
      0x240011d9,
      0x1f047b7b,
-     0x21031800,
+     0x21032000,
      0x09056e81,
      0x09036ec1,
      0x00c18181,
@@ -1025,19 +1083,19 @@ const uint32_t in1_pdsp1[] =  {
      0x2e808f8e,
      0x01088181,
      0x8281f38e,
-     0x21031800,
+     0x21032000,
      0x69046a09,
      0x59088002,
-     0x21042e00,
+     0x21047000,
      0x2e80818e,
      0x1d025d5d,
      0xc9006e02,
      0x1f025d5d,
      0x81b8338e,
-     0x21031800,
+     0x21032000,
      0x69066a0e,
      0x59148002,
-     0x21042e00,
+     0x21047000,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -1047,11 +1105,11 @@ const uint32_t in1_pdsp1[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x2103e100,
-     0x21031800,
+     0x21041b00,
+     0x21032000,
      0x69076a0e,
      0x59148002,
-     0x21042e00,
+     0x21047000,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -1061,12 +1119,12 @@ const uint32_t in1_pdsp1[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x2103ef00,
-     0x21031800,
+     0x21042900,
+     0x21032000,
      0x69086a19,
      0x24003cc0,
      0x58c08002,
-     0x21042e00,
+     0x21047000,
      0x2e808b8e,
      0x240100c2,
      0x51006e12,
@@ -1086,12 +1144,12 @@ const uint32_t in1_pdsp1[] =  {
      0x2f000184,
      0x2e80898f,
      0x05016e6e,
-     0x2103fe00,
-     0x21031800,
+     0x21043800,
+     0x21032000,
      0x69096a1a,
      0x2400a0c0,
      0x58c08002,
-     0x21042e00,
+     0x21047000,
      0x2e808d8e,
      0x240300c2,
      0x51006e13,
@@ -1107,19 +1165,27 @@ const uint32_t in1_pdsp1[] =  {
      0x8082fc91,
      0x01108282,
      0x05014e4e,
-     0x21041d00,
+     0x21045700,
      0x240018c4,
      0x2f000184,
      0x2e808b8f,
      0x05016e6e,
-     0x21041700,
-     0x21031800,
+     0x21045100,
+     0x21032000,
+     0x690a6a08,
+     0x590c8002,
+     0x21047000,
+     0x2e80838e,
+     0x24ffa8c2,
+     0x24100082,
+     0xe1d0628e,
+     0x21032000,
      0x240002d9,
      0x1f047b7b,
-     0x21031800,
+     0x21032000,
      0x240010d9,
      0x1f047b7b,
-     0x21031800,
+     0x21032000,
      0x240000e1,
      0x240010c4,
      0x2e80878e,
@@ -1129,22 +1195,22 @@ const uint32_t in1_pdsp1[] =  {
      0x01010101,
      0x0110c1c1,
      0x671f01fa,
-     0x21031800,
-     0x21031800,
-     0x21031800,
-     0x21031800,
-     0x21031800,
-     0x21031800,
+     0x21032000,
+     0x21032000,
+     0x21032000,
+     0x21032000,
+     0x21032000,
+     0x21032000,
      0x24000c86,
      0x2f0080c6,
-     0x21031800,
+     0x21032000,
      0x2e80838a,
      0x2eff818d,
      0x240068c0,
      0x58c08004,
      0x24001000,
      0xc9037b41,
-     0x21048500,
+     0x2104c700,
      0x91200e61,
      0x240100c0,
      0x68c0ca12,
@@ -1152,7 +1218,7 @@ const uint32_t in1_pdsp1[] =  {
      0x69202104,
      0x24000400,
      0xc9037b39,
-     0x21048500,
+     0x2104c700,
      0x090221c1,
      0x0100c1c1,
      0x90c12e82,
@@ -1160,15 +1226,15 @@ const uint32_t in1_pdsp1[] =  {
      0x69200304,
      0x24000400,
      0xc9037b31,
-     0x21048500,
+     0x2104c700,
      0x090521ca,
      0x0003caca,
      0x2f00808a,
-     0x21046700,
+     0x2104a900,
      0x60c0ca04,
      0x24000400,
      0xc9037b29,
-     0x21048500,
+     0x2104c700,
      0x0b05ca21,
      0x090221c1,
      0x0100c1c1,
@@ -1177,7 +1243,7 @@ const uint32_t in1_pdsp1[] =  {
      0x24000004,
      0x240018c4,
      0x2f000384,
-     0x21048d00,
+     0x2104cf00,
      0x1e03e2e2,
      0x80c12e82,
      0x2700e223,
@@ -1200,18 +1266,18 @@ const uint32_t in1_pdsp1[] =  {
      0xd1067d04,
      0xd110ff00,
      0x2f010984,
-     0x21031800,
+     0x21032000,
      0x83242e84,
      0x1f057d7d,
-     0x21031800,
+     0x21032000,
      0x100000d9,
      0x1f047b7b,
      0x1d057b7b,
-     0x21031800,
+     0x21032000,
      0x10000086,
      0x2f0080c6,
      0x1d057b7b,
-     0x21031800,
+     0x21032000,
      0x2e808f8e,
      0x2f01878e,
      0x2f020792,
@@ -1231,11 +1297,11 @@ const uint32_t in1_pdsp1[] =  {
      0x69032a03,
      0x1f016d6d,
      0x10cbcb8d,
-     0x21046b00,
+     0x2104ad00,
      0x1d057d7d,
      0x93242e84,
      0x2f010984,
-     0x21003600,
+     0x21003e00,
      0x2e808394,
      0x24000d04,
      0x2f000384,
@@ -1274,7 +1340,7 @@ const uint32_t in1_pdsp1[] =  {
      0x1f046c6c,
      0xd102b603,
      0x10d9d98d,
-     0x2104cf00,
+     0x21051100,
      0x10dada8d,
      0x111f2d2d,
      0x1d02b6b6,
@@ -1292,7 +1358,7 @@ const uint32_t in1_pdsp1[] =  {
      0x1f046c6c,
      0xd102b603,
      0x10d9d98d,
-     0x2104e100,
+     0x21052300,
      0x10dada8d,
      0x111f2d2d,
      0x1d02b6b6,
index 497d11134811e527959911236d40c6330f1facb8..24f79f6d87157ed441086b262f3507711bc1ca81 100644 (file)
@@ -50,7 +50,7 @@ const uint32_t in2_pdsp0[] =  {
      0x21000300,
      0xbabe0200,
      0x03000101,
-     0x2302689e,
+     0x2302709e,
      0x24010182,
      0x240300c2,
      0x81043782,
@@ -61,8 +61,16 @@ const uint32_t in2_pdsp0[] =  {
      0xc900ff00,
      0xd100ff00,
      0x2eff819d,
-     0x2400041d,
-     0x8100177d,
+     0x24000402,
+     0x81001762,
+     0xc901ff08,
+     0x91042481,
+     0x17002141,
+     0x10411d1d,
+     0x12011d1d,
+     0x240000e1,
+     0x81042481,
+     0x21001800,
      0xc9067d22,
      0xc9077d02,
      0xd110ff00,
@@ -73,9 +81,9 @@ const uint32_t in2_pdsp0[] =  {
      0xd106ff00,
      0x93202896,
      0xc9000403,
-     0x2300389e,
-     0x21001d00,
-     0x2301c19e,
+     0x2300409e,
+     0x21002500,
+     0x2301c99e,
      0x1d067d7d,
      0xc9077d14,
      0x1d077d7d,
@@ -83,7 +91,7 @@ const uint32_t in2_pdsp0[] =  {
      0x1f067d7d,
      0x24000504,
      0x2f010184,
-     0x21003200,
+     0x21003a00,
      0x1d047d7d,
      0x2e86098e,
      0x240023e4,
@@ -95,18 +103,18 @@ const uint32_t in2_pdsp0[] =  {
      0x24002404,
      0x2f04898e,
      0x2f000184,
-     0x21003100,
-     0x21003200,
+     0x21003900,
+     0x21003a00,
      0xd1057d02,
      0xd304ffa5,
-     0xcf057ddc,
+     0xcf057dd4,
      0xc910ff02,
      0x21001000,
-     0x2104a500,
+     0x2104e700,
      0x2480089f,
      0x0906c481,
      0x92812088,
-     0x090a1dd9,
+     0x241000d9,
      0x12c4d9d9,
      0x1f0fb6b6,
      0xc9016806,
@@ -133,7 +141,7 @@ const uint32_t in2_pdsp0[] =  {
      0x11c01717,
      0x51014a03,
      0x13161717,
-     0x21005800,
+     0x21006000,
      0x130d1717,
      0x812608d7,
      0xc9000a03,
@@ -182,7 +190,7 @@ const uint32_t in2_pdsp0[] =  {
      0x11c01a00,
      0x51000003,
      0x0b057a21,
-     0x21008d00,
+     0x21009500,
      0xd1010105,
      0x11071a00,
      0x51000003,
@@ -194,11 +202,11 @@ const uint32_t in2_pdsp0[] =  {
      0x00214949,
      0x00018989,
      0x24000042,
-     0x21009f00,
+     0x2100a700,
      0x00228989,
      0xc9016b0a,
      0x00224949,
-     0x21009f00,
+     0x2100a700,
      0xc9026b04,
      0x0b05da02,
      0x00028989,
@@ -209,7 +217,7 @@ const uint32_t in2_pdsp0[] =  {
      0x24002002,
      0x2400002e,
      0xc905b602,
-     0x2100fd00,
+     0x21010500,
      0x51016c56,
      0x51046c55,
      0xd1006b09,
@@ -238,9 +246,9 @@ const uint32_t in2_pdsp0[] =  {
      0x69010206,
      0xd1076903,
      0x2400002e,
-     0x2100c400,
+     0x2100cc00,
      0x2400012e,
-     0x2100c400,
+     0x2100cc00,
      0x6905020e,
      0x1049492e,
      0xd10bb644,
@@ -317,7 +325,7 @@ const uint32_t in2_pdsp0[] =  {
      0x812608d7,
      0x24007081,
      0x9081f489,
-     0x21004700,
+     0x21004f00,
      0x108c8cd4,
      0x91001993,
      0x01045301,
@@ -331,23 +339,23 @@ const uint32_t in2_pdsp0[] =  {
      0x209e0000,
      0x0904dede,
      0x90def486,
-     0x24022f9e,
-     0x21013500,
+     0x2402379e,
+     0x21013d00,
      0x2480099f,
-     0x24022f9e,
+     0x2402379e,
      0xc909b603,
      0x2400f081,
-     0x21012500,
+     0x21012d00,
      0xc908b605,
      0x2400e081,
      0x9081f486,
      0x51066602,
-     0x21013500,
+     0x21013d00,
      0xd10fb605,
      0x11033737,
      0x13003737,
      0x9100f486,
-     0x21013500,
+     0x21013d00,
      0x0b0ad941,
      0x10d9d981,
      0x11032121,
@@ -355,7 +363,7 @@ const uint32_t in2_pdsp0[] =  {
      0x09024141,
      0x90413882,
      0xf081e286,
-     0x21013500,
+     0x21013d00,
      0x10d7d794,
      0x24000f42,
      0x83206796,
@@ -390,7 +398,7 @@ const uint32_t in2_pdsp0[] =  {
      0x11c01a00,
      0x51000003,
      0x0b057a21,
-     0x21015d00,
+     0x21016500,
      0xd1010105,
      0x11071a00,
      0x51000003,
@@ -402,11 +410,11 @@ const uint32_t in2_pdsp0[] =  {
      0x00214646,
      0x00018686,
      0x24000042,
-     0x21016f00,
+     0x21017700,
      0x00228686,
      0xc901680a,
      0x00224646,
-     0x21016f00,
+     0x21017700,
      0xc9026804,
      0x0b057a02,
      0x00028686,
@@ -499,18 +507,18 @@ const uint32_t in2_pdsp0[] =  {
      0x2480099f,
      0xc909b603,
      0x2400f081,
-     0x2101c700,
+     0x2101cf00,
      0xc908b605,
      0x2400e081,
      0x9081f489,
      0x51066902,
-     0x21004600,
+     0x21004e00,
      0xd10fb606,
      0x11033737,
      0x13003737,
      0x812608d7,
      0x9100f489,
-     0x21004600,
+     0x21004e00,
      0x0b0ad941,
      0x10d9d981,
      0x11032121,
@@ -518,7 +526,7 @@ const uint32_t in2_pdsp0[] =  {
      0x09024141,
      0x90413882,
      0xf081e289,
-     0x21004600,
+     0x21004e00,
      0x91002481,
      0x0101e1e1,
      0x81002481,
@@ -532,7 +540,7 @@ const uint32_t in2_pdsp0[] =  {
      0x24002004,
      0x24000024,
      0x1f047d7d,
-     0x21022f00,
+     0x21023700,
      0x2480009f,
      0x24000804,
      0x2f000184,
@@ -552,18 +560,18 @@ const uint32_t in2_pdsp0[] =  {
      0x24002004,
      0x24000024,
      0x1f047d7d,
-     0x21022f00,
+     0x21023700,
      0x240832e4,
      0x2f000384,
      0x2eff8b96,
      0x008f89d7,
-     0x21020a00,
+     0x21021200,
      0x2eff8b96,
      0x008f89d7,
      0x2f05098e,
      0x24001097,
-     0x2402269e,
-     0x2104ab00,
+     0x24022e9e,
+     0x2104ed00,
      0x24000104,
      0x0508c9c4,
      0x2f000184,
@@ -581,7 +589,7 @@ const uint32_t in2_pdsp0[] =  {
      0x61100304,
      0x1f007d7d,
      0x240002de,
-     0x21024900,
+     0x21025100,
      0x2eff8792,
      0x2f018792,
      0x2f020792,
@@ -591,7 +599,7 @@ const uint32_t in2_pdsp0[] =  {
      0x11033737,
      0x13143737,
      0x240002de,
-     0x21022800,
+     0x21023000,
      0x09010300,
      0x90001580,
      0x22c0009e,
@@ -616,11 +624,11 @@ const uint32_t in2_pdsp0[] =  {
      0x24000504,
      0xd110ff00,
      0x2f010184,
-     0x21003400,
+     0x21003c00,
      0x2f05098e,
      0x13082424,
      0x2f000384,
-     0x21003400,
+     0x21003c00,
      0x1d047d7d,
      0x1d077d7d,
      0x9110078a,
@@ -631,38 +639,38 @@ const uint32_t in2_pdsp0[] =  {
      0x1f070e0e,
      0x2f04898e,
      0x2f000384,
-     0x21003400,
+     0x21003c00,
      0x1f047d7d,
      0x510ade1a,
      0xc9007d03,
      0x1d007d7d,
-     0x21011e00,
+     0x21012600,
      0x5103de06,
      0x5104de09,
      0x5105de0c,
      0x5106de0f,
      0x0b0237de,
-     0x21011a00,
+     0x21012200,
      0x24402084,
      0x24001864,
      0x2400002e,
-     0x21022f00,
+     0x21023700,
      0x24402084,
      0x24001864,
      0x2400002e,
-     0x21022f00,
+     0x21023700,
      0x24402084,
      0x24001864,
      0x24000e2e,
-     0x21022f00,
+     0x21023700,
      0x24402084,
      0x24001864,
      0x24000d2e,
-     0x21022f00,
+     0x21023700,
      0x1f060e0e,
      0x24002004,
      0x24000024,
-     0x21022f00,
+     0x21023700,
      0x240000e3,
      0x31ff0006,
      0xd110ff00,
@@ -681,26 +689,26 @@ const uint32_t in2_pdsp0[] =  {
      0x85002e83,
      0x2eff8983,
      0x83242e83,
-     0x2404a9c8,
-     0x2404ab88,
-     0x2404abc9,
-     0x2404af89,
-     0x2404b1ca,
-     0x2404b38a,
-     0x2404b3cb,
-     0x2404b38b,
-     0x2404b3cc,
-     0x2404b38c,
-     0x2404b3cd,
-     0x2404c58d,
-     0x2404d0ce,
-     0x2404ad8e,
-     0x2404abcf,
-     0x2404e58f,
-     0x2404e5d0,
-     0x2404e590,
-     0x2404e5d1,
-     0x2404e591,
+     0x2404ebc8,
+     0x2404ed88,
+     0x2404edc9,
+     0x2404f189,
+     0x2404f3ca,
+     0x2404f58a,
+     0x2404f5cb,
+     0x2404f58b,
+     0x2404f5cc,
+     0x2404f58c,
+     0x2404f5cd,
+     0x2405078d,
+     0x240512ce,
+     0x2404ef8e,
+     0x2404edcf,
+     0x2405278f,
+     0x240527d0,
+     0x24052790,
+     0x240527d1,
+     0x24052791,
      0x8500f588,
      0x24505084,
      0x108484c4,
@@ -769,7 +777,7 @@ const uint32_t in2_pdsp0[] =  {
      0x240004d9,
      0x1f047b7b,
      0x1d057b7b,
-     0x21032500,
+     0x21032d00,
      0x0b05ca21,
      0x090221c1,
      0x0100c1c1,
@@ -792,10 +800,10 @@ const uint32_t in2_pdsp0[] =  {
      0xd1067d04,
      0xd110ff00,
      0x2f010184,
-     0x21032500,
+     0x21032d00,
      0x81242e84,
      0x1f057d7d,
-     0x21032500,
+     0x21032d00,
      0x2eff8b96,
      0x05108980,
      0x24000d04,
@@ -805,15 +813,15 @@ const uint32_t in2_pdsp0[] =  {
      0x10e9e9fa,
      0x51ce0703,
      0x1f077b7b,
-     0x21032500,
+     0x21032d00,
      0x51006602,
-     0x21032500,
+     0x21032d00,
      0x51004606,
      0x05014646,
      0x2f008026,
      0x2400045b,
      0x1f057b7b,
-     0x21032500,
+     0x21032d00,
      0x81182788,
      0x2f05098e,
      0x1f067b7b,
@@ -838,20 +846,20 @@ const uint32_t in2_pdsp0[] =  {
      0x5102270e,
      0x5103270e,
      0x5104270e,
-     0x53062728,
-     0x510c27a6,
-     0x530a272a,
-     0x53082726,
-     0x530b2726,
-     0x53092726,
+     0x53062762,
+     0x510c27d8,
+     0x530a2764,
+     0x53082760,
+     0x530b2760,
+     0x53092760,
      0x5105272f,
      0x24000286,
      0x2f0080c6,
-     0x21032500,
-     0x21044700,
-     0x2102cc00,
-     0x21044400,
-     0x21044400,
+     0x21032d00,
+     0x21048900,
+     0x2102d400,
+     0x21048600,
+     0x21048600,
      0xc9067b02,
      0x2e85098e,
      0xc9047b08,
@@ -872,11 +880,11 @@ const uint32_t in2_pdsp0[] =  {
      0x1f0f8181,
      0x811007c1,
      0x1f060e0e,
-     0x21034b00,
+     0x21035300,
      0xc9057b04,
      0x24008000,
      0x81200760,
-     0x21034100,
+     0x21034900,
      0x911007c1,
      0x1f0f8181,
      0x811007c1,
@@ -885,16 +893,16 @@ const uint32_t in2_pdsp0[] =  {
      0x81082481,
      0x51003a03,
      0x1f060e0e,
-     0x21034b00,
+     0x21035300,
      0x8112079a,
      0x101a1a05,
      0x13202424,
-     0x21022f00,
-     0x21022f00,
+     0x21023700,
+     0x21023700,
      0x59388004,
      0x24001086,
      0x2f0080c6,
-     0x21032500,
+     0x21032d00,
      0x24000086,
      0x2f0080c6,
      0x2e80878a,
@@ -1004,7 +1012,57 @@ const uint32_t in2_pdsp0[] =  {
      0x10515121,
      0x24005082,
      0xe10c2281,
-     0x21032500,
+     0x240010c4,
+     0x2f000184,
+     0x2e808f8e,
+     0xc90bca2f,
+     0x24000082,
+     0x1f002222,
+     0xc9006e0a,
+     0x24ffa8c1,
+     0x24100081,
+     0xe1d801d1,
+     0x24ff48c1,
+     0x24040081,
+     0x24000091,
+     0xe100a18f,
+     0xe10ce192,
+     0x1f000202,
+     0x10828281,
+     0x240200c1,
+     0x24000060,
+     0xd1006006,
+     0x24000082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f006060,
+     0xd1016006,
+     0x24001082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f016060,
+     0xd1026006,
+     0x24003082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f026060,
+     0xd1036006,
+     0x24004082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f036060,
+     0xd1046006,
+     0x24006082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f046060,
+     0x6f1f60e2,
+     0x21032d00,
      0x24000086,
      0x2f0080c6,
      0x2e80838a,
@@ -1014,20 +1072,20 @@ const uint32_t in2_pdsp0[] =  {
      0x58c08004,
      0x24001086,
      0x2f0080c6,
-     0x21032500,
+     0x21032d00,
      0x240018c4,
      0x2f000384,
-     0x21043500,
+     0x21047700,
      0x240014c4,
      0x2f000384,
      0x69016a13,
      0x592c8002,
-     0x21043200,
+     0x21047400,
      0x2e80838e,
      0x71046e04,
      0x240011d9,
      0x1f047b7b,
-     0x21032500,
+     0x21032d00,
      0x09056e81,
      0x09036ec1,
      0x00c18181,
@@ -1038,10 +1096,10 @@ const uint32_t in2_pdsp0[] =  {
      0x2e808f8e,
      0x01088181,
      0x8281f38e,
-     0x21032500,
+     0x21032d00,
      0x69066a0e,
      0x59148002,
-     0x21043200,
+     0x21047400,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -1051,11 +1109,11 @@ const uint32_t in2_pdsp0[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x2103e500,
-     0x21032500,
+     0x21041f00,
+     0x21032d00,
      0x69076a0e,
      0x59148002,
-     0x21043200,
+     0x21047400,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -1065,12 +1123,12 @@ const uint32_t in2_pdsp0[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x2103f300,
-     0x21032500,
+     0x21042d00,
+     0x21032d00,
      0x69086a19,
      0x24003cc0,
      0x58c08002,
-     0x21043200,
+     0x21047400,
      0x2e808b8e,
      0x240100c2,
      0x51006e12,
@@ -1090,12 +1148,12 @@ const uint32_t in2_pdsp0[] =  {
      0x2f000184,
      0x2e80898f,
      0x05016e6e,
-     0x21040200,
-     0x21032500,
+     0x21043c00,
+     0x21032d00,
      0x69096a1a,
      0x2400a0c0,
      0x58c08002,
-     0x21043200,
+     0x21047400,
      0x2e808d8e,
      0x240300c2,
      0x51006e13,
@@ -1111,19 +1169,27 @@ const uint32_t in2_pdsp0[] =  {
      0x8082fc91,
      0x01108282,
      0x05014e4e,
-     0x21042100,
+     0x21045b00,
      0x240018c4,
      0x2f000184,
      0x2e808b8f,
      0x05016e6e,
-     0x21041b00,
-     0x21032500,
+     0x21045500,
+     0x21032d00,
+     0x690a6a08,
+     0x590c8002,
+     0x21047400,
+     0x2e80838e,
+     0x24ffa8c2,
+     0x24100082,
+     0xe1d0628e,
+     0x21032d00,
      0x240002d9,
      0x1f047b7b,
-     0x21032500,
+     0x21032d00,
      0x240010d9,
      0x1f047b7b,
-     0x21032500,
+     0x21032d00,
      0x240000e1,
      0x240010c4,
      0x2e80878e,
@@ -1133,22 +1199,22 @@ const uint32_t in2_pdsp0[] =  {
      0x01010101,
      0x0110c1c1,
      0x671f01fa,
-     0x21032500,
-     0x21032500,
-     0x21032500,
-     0x21032500,
-     0x21032500,
-     0x21032500,
+     0x21032d00,
+     0x21032d00,
+     0x21032d00,
+     0x21032d00,
+     0x21032d00,
+     0x21032d00,
      0x24000c86,
      0x2f0080c6,
-     0x21032500,
+     0x21032d00,
      0x2e80838a,
      0x2eff818d,
      0x240068c0,
      0x58c08004,
      0x24001000,
      0xc9037b41,
-     0x21048900,
+     0x2104cb00,
      0x91200e61,
      0x240100c0,
      0x68c0ca12,
@@ -1156,7 +1222,7 @@ const uint32_t in2_pdsp0[] =  {
      0x69202104,
      0x24000400,
      0xc9037b39,
-     0x21048900,
+     0x2104cb00,
      0x090221c1,
      0x0100c1c1,
      0x90c12e82,
@@ -1164,15 +1230,15 @@ const uint32_t in2_pdsp0[] =  {
      0x69200304,
      0x24000400,
      0xc9037b31,
-     0x21048900,
+     0x2104cb00,
      0x090521ca,
      0x0003caca,
      0x2f00808a,
-     0x21046b00,
+     0x2104ad00,
      0x60c0ca04,
      0x24000400,
      0xc9037b29,
-     0x21048900,
+     0x2104cb00,
      0x0b05ca21,
      0x090221c1,
      0x0100c1c1,
@@ -1181,7 +1247,7 @@ const uint32_t in2_pdsp0[] =  {
      0x24000004,
      0x240018c4,
      0x2f000384,
-     0x21049100,
+     0x2104d300,
      0x1e03e2e2,
      0x80c12e82,
      0x2700e223,
@@ -1204,18 +1270,18 @@ const uint32_t in2_pdsp0[] =  {
      0xd1067d04,
      0xd110ff00,
      0x2f010984,
-     0x21032500,
+     0x21032d00,
      0x83242e84,
      0x1f057d7d,
-     0x21032500,
+     0x21032d00,
      0x100000d9,
      0x1f047b7b,
      0x1d057b7b,
-     0x21032500,
+     0x21032d00,
      0x10000086,
      0x2f0080c6,
      0x1d057b7b,
-     0x21032500,
+     0x21032d00,
      0x2e808f8e,
      0x2f01878e,
      0x2f020792,
@@ -1235,11 +1301,11 @@ const uint32_t in2_pdsp0[] =  {
      0x69032a03,
      0x1f016d6d,
      0x10cbcb8d,
-     0x21046f00,
+     0x2104b100,
      0x1d057d7d,
      0x93242e84,
      0x2f010984,
-     0x21003600,
+     0x21003e00,
      0x240002de,
      0x209e0000,
      0x240002de,
@@ -1257,7 +1323,7 @@ const uint32_t in2_pdsp0[] =  {
      0x1f046c6c,
      0xd102b603,
      0x10d9d98d,
-     0x2104be00,
+     0x21050000,
      0x10dada8d,
      0x111f2d2d,
      0x1d02b6b6,
@@ -1286,7 +1352,7 @@ const uint32_t in2_pdsp0[] =  {
      0x1f046c6c,
      0xd102b603,
      0x10d9d98d,
-     0x2104db00,
+     0x21051d00,
      0x10dada8d,
      0x111f2d2d,
      0x1d02b6b6,
index dd014f742691194729f48888337f9201ec546261..eda6a3baace069ed665fd5893b74cd7c0c7dd213 100644 (file)
@@ -50,7 +50,7 @@ const uint32_t in3_pdsp0[] =  {
      0x21000300,
      0xbabe0300,
      0x03000101,
-     0x2302999e,
+     0x2302839e,
      0x24010182,
      0x240300c2,
      0x81043782,
@@ -61,8 +61,8 @@ const uint32_t in3_pdsp0[] =  {
      0xc900ff00,
      0xd100ff00,
      0x2eff819d,
-     0x2400051d,
-     0x8100177d,
+     0x24000502,
+     0x81001762,
      0xc903ff07,
      0x910c2481,
      0x11f85d5d,
@@ -105,11 +105,11 @@ const uint32_t in3_pdsp0[] =  {
      0x21003800,
      0x21003900,
      0xd1057d02,
-     0xd304ffc1,
+     0xd304ffab,
      0xcf057dd5,
      0xc910ff02,
      0x21001000,
-     0x2104d800,
+     0x2104fc00,
      0x0906c481,
      0x92812088,
      0x10c8c89f,
@@ -165,17 +165,17 @@ const uint32_t in3_pdsp0[] =  {
      0x51026904,
      0x1f060e0e,
      0x240020e4,
-     0x21026000,
+     0x21024a00,
      0x24000e2e,
      0x244020e4,
      0x24001864,
-     0x21026000,
+     0x21024a00,
      0x2400002e,
      0x24602084,
      0x24001864,
      0x10494905,
      0x811207c9,
-     0x21026000,
+     0x21024a00,
      0x10d7d794,
      0x24000f42,
      0x6902691b,
@@ -390,30 +390,8 @@ const uint32_t in3_pdsp0[] =  {
      0x209e0000,
      0x0904dede,
      0x90def486,
-     0x2402609e,
-     0x21016f00,
-     0x2402609e,
-     0xc909b603,
-     0x2400f081,
-     0x21015f00,
-     0xc908b605,
-     0x2400e081,
-     0x9081f486,
-     0x51066602,
-     0x21016f00,
-     0xd10fb605,
-     0x11033737,
-     0x13003737,
-     0x9100f486,
-     0x21016f00,
-     0x0b0ad941,
-     0x10d9d981,
-     0x11032121,
-     0x09068181,
-     0x09024141,
-     0x90413882,
-     0xf081e286,
-     0x21016f00,
+     0x24024a9e,
+     0x21015900,
      0x10d7d794,
      0x24000f42,
      0x83206796,
@@ -448,7 +426,7 @@ const uint32_t in3_pdsp0[] =  {
      0x11c01a00,
      0x51000003,
      0x0b057a21,
-     0x21019700,
+     0x21018100,
      0xd1010105,
      0x11071a00,
      0x51000003,
@@ -460,11 +438,11 @@ const uint32_t in3_pdsp0[] =  {
      0x00214646,
      0x00018686,
      0x24000042,
-     0x2101a900,
+     0x21019300,
      0x00228686,
      0xc901680a,
      0x00224646,
-     0x2101a900,
+     0x21019300,
      0xc9026804,
      0x0b057a02,
      0x00028686,
@@ -567,7 +545,7 @@ const uint32_t in3_pdsp0[] =  {
      0x24002004,
      0x24000024,
      0x1f047d7d,
-     0x21026000,
+     0x21024a00,
      0x2480009f,
      0x24000804,
      0x2f000184,
@@ -587,19 +565,19 @@ const uint32_t in3_pdsp0[] =  {
      0x24002004,
      0x24000024,
      0x1f047d7d,
-     0x21026000,
-     0x21021800,
+     0x21024a00,
+     0x21020200,
      0x240832e4,
      0x2f000384,
      0x2eff8b96,
      0x008f89d7,
-     0x21022e00,
+     0x21021800,
      0x2eff8b96,
      0x008f89d7,
      0x2f05098e,
      0x24001097,
-     0x2402589e,
-     0x2104df00,
+     0x2402429e,
+     0x21050400,
      0x24000104,
      0x0508c9c4,
      0x2f000184,
@@ -617,17 +595,17 @@ const uint32_t in3_pdsp0[] =  {
      0x11033737,
      0x1016161c,
      0x1f037d7d,
-     0x21024100,
+     0x21022b00,
      0x1f007d7d,
      0x240002de,
      0xc907ff00,
      0x24001876,
      0x83206796,
-     0x21027a00,
+     0x21026400,
      0x2eff8390,
      0xc9025d03,
      0x24000010,
-     0x21024600,
+     0x21023000,
      0x24000e10,
      0x1f061010,
      0xc907ff00,
@@ -641,7 +619,7 @@ const uint32_t in3_pdsp0[] =  {
      0x11033737,
      0x13143737,
      0x240002de,
-     0x21025900,
+     0x21024300,
      0x09010300,
      0x90001580,
      0x22c0009e,
@@ -695,23 +673,23 @@ const uint32_t in3_pdsp0[] =  {
      0x24402084,
      0x24001864,
      0x2400002e,
-     0x21026000,
+     0x21024a00,
      0x24402084,
      0x24001864,
      0x2400002e,
-     0x21026000,
+     0x21024a00,
      0x24402084,
      0x24001864,
      0x24000e2e,
-     0x21026000,
+     0x21024a00,
      0x24402084,
      0x24001864,
      0x24000d2e,
-     0x21026000,
+     0x21024a00,
      0x1f060e0e,
      0x24002004,
      0x24000024,
-     0x21026000,
+     0x21024a00,
      0x240000e3,
      0x31ff0006,
      0xd110ff00,
@@ -730,26 +708,26 @@ const uint32_t in3_pdsp0[] =  {
      0x85002e83,
      0x2eff8983,
      0x83242e83,
-     0x2404dcc8,
-     0x2404df88,
-     0x2404dfc9,
-     0x2404e489,
-     0x24051bca,
-     0x24053d8a,
-     0x240556cb,
-     0x2405628b,
-     0x24057acc,
-     0x2405868c,
-     0x2405b2cd,
-     0x2405b48d,
-     0x2405c1ce,
-     0x2404e28e,
-     0x2404dfcf,
-     0x2405c38f,
-     0x2405efd0,
-     0x2405dd90,
-     0x2405e3d1,
-     0x2405e991,
+     0x240500c8,
+     0x24050488,
+     0x240504c9,
+     0x24050989,
+     0x240540ca,
+     0x2405628a,
+     0x24057bcb,
+     0x2405878b,
+     0x24059fcc,
+     0x2405ab8c,
+     0x2405d7cd,
+     0x2405d98d,
+     0x2405e6ce,
+     0x2405078e,
+     0x240504cf,
+     0x2405e88f,
+     0x240614d0,
+     0x24060290,
+     0x240608d1,
+     0x24060e91,
      0x8500f588,
      0x24505084,
      0x108484c4,
@@ -818,7 +796,7 @@ const uint32_t in3_pdsp0[] =  {
      0x240004d9,
      0x1f047b7b,
      0x1d057b7b,
-     0x21035600,
+     0x21034000,
      0x0b05ca21,
      0x090221c1,
      0x0100c1c1,
@@ -841,10 +819,10 @@ const uint32_t in3_pdsp0[] =  {
      0xd1067d04,
      0xd110ff00,
      0x2f010184,
-     0x21035600,
+     0x21034000,
      0x81242e84,
      0x1f057d7d,
-     0x21035600,
+     0x21034000,
      0x2eff8b96,
      0x05108980,
      0x24000d04,
@@ -854,15 +832,15 @@ const uint32_t in3_pdsp0[] =  {
      0x10e9e9fa,
      0x51ce0703,
      0x1f077b7b,
-     0x21035600,
+     0x21034000,
      0x51006602,
-     0x21035600,
+     0x21034000,
      0x51004606,
      0x05014646,
      0x2f008026,
      0x2400045b,
      0x1f057b7b,
-     0x21035600,
+     0x21034000,
      0x81182788,
      0x2f05098e,
      0x1f067b7b,
@@ -887,20 +865,20 @@ const uint32_t in3_pdsp0[] =  {
      0x5102270e,
      0x5103270e,
      0x5104270e,
-     0x53062728,
-     0x510c27a6,
-     0x530a272a,
-     0x53082726,
-     0x530b2726,
-     0x53092726,
+     0x53062762,
+     0x510c27d8,
+     0x530a2764,
+     0x53082760,
+     0x530b2760,
+     0x53092760,
      0x5105272f,
      0x24000286,
      0x2f0080c6,
-     0x21035600,
-     0x21047800,
-     0x2102fd00,
-     0x21047500,
-     0x21047500,
+     0x21034000,
+     0x21049c00,
+     0x2102e700,
+     0x21049900,
+     0x21049900,
      0xc9067b02,
      0x2e85098e,
      0xc9047b08,
@@ -921,11 +899,11 @@ const uint32_t in3_pdsp0[] =  {
      0x1f0f8181,
      0x811007c1,
      0x1f060e0e,
-     0x21037c00,
+     0x21036600,
      0xc9057b04,
      0x24008000,
      0x81200760,
-     0x21037200,
+     0x21035c00,
      0x911007c1,
      0x1f0f8181,
      0x811007c1,
@@ -934,16 +912,16 @@ const uint32_t in3_pdsp0[] =  {
      0x81082481,
      0x51003a03,
      0x1f060e0e,
-     0x21037c00,
+     0x21036600,
      0x8112079a,
      0x101a1a05,
      0x13202424,
-     0x21026000,
-     0x21026000,
+     0x21024a00,
+     0x21024a00,
      0x59388004,
      0x24001086,
      0x2f0080c6,
-     0x21035600,
+     0x21034000,
      0x24000086,
      0x2f0080c6,
      0x2e80878a,
@@ -1053,7 +1031,57 @@ const uint32_t in3_pdsp0[] =  {
      0x10515121,
      0x24005082,
      0xe10c2281,
-     0x21035600,
+     0x240010c4,
+     0x2f000184,
+     0x2e808f8e,
+     0xc90bca2f,
+     0x24000082,
+     0x1f002222,
+     0xc9006e0a,
+     0x24ffa8c1,
+     0x24100081,
+     0xe1d801d1,
+     0x24ff48c1,
+     0x24040081,
+     0x24000091,
+     0xe100a18f,
+     0xe10ce192,
+     0x1f000202,
+     0x10828281,
+     0x240200c1,
+     0x24000060,
+     0xd1006006,
+     0x24000082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f006060,
+     0xd1016006,
+     0x24001082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f016060,
+     0xd1026006,
+     0x24003082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f026060,
+     0xd1036006,
+     0x24004082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f036060,
+     0xd1046006,
+     0x24006082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f046060,
+     0x6f1f60e2,
+     0x21034000,
      0x24000086,
      0x2f0080c6,
      0x2e80838a,
@@ -1063,20 +1091,20 @@ const uint32_t in3_pdsp0[] =  {
      0x58c08004,
      0x24001086,
      0x2f0080c6,
-     0x21035600,
+     0x21034000,
      0x240018c4,
      0x2f000384,
-     0x21046600,
+     0x21048a00,
      0x240014c4,
      0x2f000384,
      0x69016a13,
      0x592c8002,
-     0x21046300,
+     0x21048700,
      0x2e80838e,
      0x71046e04,
      0x240011d9,
      0x1f047b7b,
-     0x21035600,
+     0x21034000,
      0x09056e81,
      0x09036ec1,
      0x00c18181,
@@ -1087,10 +1115,10 @@ const uint32_t in3_pdsp0[] =  {
      0x2e808f8e,
      0x01088181,
      0x8281f38e,
-     0x21035600,
+     0x21034000,
      0x69066a0e,
      0x59148002,
-     0x21046300,
+     0x21048700,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -1100,11 +1128,11 @@ const uint32_t in3_pdsp0[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x21041600,
-     0x21035600,
+     0x21043200,
+     0x21034000,
      0x69076a0e,
      0x59148002,
-     0x21046300,
+     0x21048700,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -1114,12 +1142,12 @@ const uint32_t in3_pdsp0[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x21042400,
-     0x21035600,
+     0x21044000,
+     0x21034000,
      0x69086a19,
      0x24003cc0,
      0x58c08002,
-     0x21046300,
+     0x21048700,
      0x2e808b8e,
      0x240100c2,
      0x51006e12,
@@ -1139,12 +1167,12 @@ const uint32_t in3_pdsp0[] =  {
      0x2f000184,
      0x2e80898f,
      0x05016e6e,
-     0x21043300,
-     0x21035600,
+     0x21044f00,
+     0x21034000,
      0x69096a1a,
      0x2400a0c0,
      0x58c08002,
-     0x21046300,
+     0x21048700,
      0x2e808d8e,
      0x240300c2,
      0x51006e13,
@@ -1160,19 +1188,27 @@ const uint32_t in3_pdsp0[] =  {
      0x8082fc91,
      0x01108282,
      0x05014e4e,
-     0x21045200,
+     0x21046e00,
      0x240018c4,
      0x2f000184,
      0x2e808b8f,
      0x05016e6e,
-     0x21044c00,
-     0x21035600,
+     0x21046800,
+     0x21034000,
+     0x690a6a08,
+     0x590c8002,
+     0x21048700,
+     0x2e80838e,
+     0x24ffa8c2,
+     0x24100082,
+     0xe1d0628e,
+     0x21034000,
      0x240002d9,
      0x1f047b7b,
-     0x21035600,
+     0x21034000,
      0x240010d9,
      0x1f047b7b,
-     0x21035600,
+     0x21034000,
      0x240000e1,
      0x240010c4,
      0x2e80878e,
@@ -1182,22 +1218,22 @@ const uint32_t in3_pdsp0[] =  {
      0x01010101,
      0x0110c1c1,
      0x671f01fa,
-     0x21035600,
-     0x21035600,
-     0x21035600,
-     0x21035600,
-     0x21035600,
-     0x21035600,
+     0x21034000,
+     0x21034000,
+     0x21034000,
+     0x21034000,
+     0x21034000,
+     0x21034000,
      0x24000c86,
      0x2f0080c6,
-     0x21035600,
+     0x21034000,
      0x2e80838a,
      0x2eff818d,
      0x240068c0,
      0x58c08004,
      0x24001000,
      0xc9037b43,
-     0x2104bc00,
+     0x2104e000,
      0x91200e61,
      0x10cacacd,
      0x1f0fcdcd,
@@ -1207,7 +1243,7 @@ const uint32_t in3_pdsp0[] =  {
      0x69202104,
      0x24000400,
      0xc9037b39,
-     0x2104bc00,
+     0x2104e000,
      0x090221c1,
      0x0100c1c1,
      0x90c12e82,
@@ -1215,15 +1251,15 @@ const uint32_t in3_pdsp0[] =  {
      0x69200304,
      0x24000400,
      0xc9037b31,
-     0x2104bc00,
+     0x2104e000,
      0x090521ca,
      0x0003caca,
      0x2f00808a,
-     0x21049e00,
+     0x2104c200,
      0x60c0ca04,
      0x24000400,
      0xc9037b29,
-     0x2104bc00,
+     0x2104e000,
      0x0b05ca21,
      0x090221c1,
      0x0100c1c1,
@@ -1232,7 +1268,7 @@ const uint32_t in3_pdsp0[] =  {
      0x24000004,
      0x240018c4,
      0x2f000384,
-     0x2104c400,
+     0x2104e800,
      0x1e03e2e2,
      0x80c12e82,
      0x2700e223,
@@ -1255,18 +1291,18 @@ const uint32_t in3_pdsp0[] =  {
      0xd1067d04,
      0xd110ff00,
      0x2f010984,
-     0x21035600,
+     0x21034000,
      0x83242e84,
      0x1f057d7d,
-     0x21035600,
+     0x21034000,
      0x100000d9,
      0x1f047b7b,
      0x1d057b7b,
-     0x21035600,
+     0x21034000,
      0x10000086,
      0x2f0080c6,
      0x1d057b7b,
-     0x21035600,
+     0x21034000,
      0x2e808f8e,
      0x2f01878e,
      0x2f020792,
@@ -1286,15 +1322,16 @@ const uint32_t in3_pdsp0[] =  {
      0x69032a03,
      0x1f016d6d,
      0x10cbcb8d,
-     0x2104a200,
+     0x2104c600,
      0x1d057d7d,
      0x93242e84,
      0x2f010984,
      0x21003d00,
-     0x2105f600,
+     0xd1001d02,
+     0x21061b00,
      0x240002de,
      0x209e0000,
-     0x2105f600,
+     0x21061b00,
      0x240002de,
      0x209e0000,
      0x240002de,
@@ -1348,8 +1385,8 @@ const uint32_t in3_pdsp0[] =  {
      0x209e0000,
      0x11033737,
      0x13143737,
-     0x21051900,
-     0x2105f600,
+     0x21053e00,
+     0x21061b00,
      0x11033737,
      0x13643737,
      0x240002de,
@@ -1406,7 +1443,7 @@ const uint32_t in3_pdsp0[] =  {
      0x01016ec4,
      0x2f000384,
      0x00c4c0c0,
-     0x21054500,
+     0x21056a00,
      0x1066664c,
      0x2f02802c,
      0x90661261,
index 709a69b824891f1ed12775ddd88f743110b8e841..19ccb72baf315626d91305b19338deed32172698 100644 (file)
@@ -50,7 +50,7 @@ const uint32_t in4_pdsp0[] =  {
      0x21000300,
      0xbabe0401,
      0x03000101,
-     0x2302999e,
+     0x2302a29e,
      0x24010182,
      0x240300c2,
      0x81043782,
@@ -61,20 +61,29 @@ const uint32_t in4_pdsp0[] =  {
      0xc900ff00,
      0xd100ff00,
      0x2eff819d,
-     0x2400061d,
-     0x8100177d,
-     0xc901ff13,
+     0x24000602,
+     0x81001762,
+     0xc901ff1c,
+     0x91040461,
+     0x51010108,
+     0x91042481,
+     0x17002141,
+     0x10411d1d,
+     0x12011d1d,
+     0x240000e1,
+     0x81042481,
+     0x21002c00,
      0x24000680,
      0x51068003,
      0x2400a481,
-     0x21001600,
+     0x21001f00,
      0x2400a881,
      0x9081338e,
      0x9100b18f,
      0x69006e04,
      0x1d037d7d,
      0x2eff858f,
-     0x21002000,
+     0x21002900,
      0x1f037d7d,
      0x106e6e6f,
      0x108e8ed0,
@@ -99,9 +108,9 @@ const uint32_t in4_pdsp0[] =  {
      0xd106ff00,
      0x93202896,
      0xc9000403,
-     0x23004c9e,
-     0x21003700,
-     0x2301ee9e,
+     0x2300559e,
+     0x21004000,
+     0x2301f79e,
      0x1d067d7d,
      0xc9077d0e,
      0x1d077d7d,
@@ -109,24 +118,24 @@ const uint32_t in4_pdsp0[] =  {
      0x1f067d7d,
      0x24000504,
      0x2f010184,
-     0x21004600,
+     0x21004f00,
      0x1d047d7d,
      0x2e86098e,
      0x240023e4,
      0x2f04898e,
      0x2f000184,
-     0x21004500,
-     0x21004600,
+     0x21004e00,
+     0x21004f00,
      0xd1057d02,
      0xd304ffbe,
-     0xcf057dc8,
+     0xcf057dbf,
      0xc910ff02,
      0x21001000,
-     0x2104d800,
+     0x21051b00,
      0x2480089f,
      0x0906c481,
      0x92812088,
-     0x090a1dd9,
+     0x241800d9,
      0x12c4d9d9,
      0x1f0fb6b6,
      0xc9016806,
@@ -153,7 +162,7 @@ const uint32_t in4_pdsp0[] =  {
      0x11c01717,
      0x51014a03,
      0x13161717,
-     0x21006c00,
+     0x21007500,
      0x130d1717,
      0x812608d7,
      0x690e6a04,
@@ -206,7 +215,7 @@ const uint32_t in4_pdsp0[] =  {
      0x11c01a00,
      0x51000003,
      0x0b057a21,
-     0x2100a500,
+     0x2100ae00,
      0xd1010105,
      0x11071a00,
      0x51000003,
@@ -218,11 +227,11 @@ const uint32_t in4_pdsp0[] =  {
      0x00214949,
      0x00018989,
      0x24000042,
-     0x2100b700,
+     0x2100c000,
      0x00228989,
      0xc9016b0a,
      0x00224949,
-     0x2100b700,
+     0x2100c000,
      0xc9026b04,
      0x0b05da02,
      0x00028989,
@@ -236,7 +245,7 @@ const uint32_t in4_pdsp0[] =  {
      0x911008c1,
      0x1d0f8181,
      0x811008c1,
-     0x21012a00,
+     0x21013300,
      0x51016c68,
      0x51046c67,
      0xd1006b09,
@@ -265,9 +274,9 @@ const uint32_t in4_pdsp0[] =  {
      0x69010206,
      0xd1076903,
      0x2400002e,
-     0x2100df00,
+     0x2100e800,
      0x2400012e,
-     0x2100df00,
+     0x2100e800,
      0x6905020e,
      0x1049492e,
      0xd10bb656,
@@ -362,7 +371,7 @@ const uint32_t in4_pdsp0[] =  {
      0x812608d7,
      0x24007081,
      0x9081f489,
-     0x21005b00,
+     0x21006400,
      0x108c8cd4,
      0x91001993,
      0x01045301,
@@ -376,23 +385,23 @@ const uint32_t in4_pdsp0[] =  {
      0x209e0000,
      0x0904dede,
      0x90def486,
-     0x2402629e,
-     0x21016200,
+     0x24026b9e,
+     0x21016b00,
      0x2480099f,
-     0x2402629e,
+     0x24026b9e,
      0xc909b603,
      0x2400f081,
-     0x21015200,
+     0x21015b00,
      0xc908b605,
      0x2400e081,
      0x9081f486,
      0x51066602,
-     0x21016200,
+     0x21016b00,
      0xd10fb605,
      0x11033737,
      0x13003737,
      0x9100f486,
-     0x21016200,
+     0x21016b00,
      0x0b0ad941,
      0x10d9d981,
      0x11032121,
@@ -400,7 +409,7 @@ const uint32_t in4_pdsp0[] =  {
      0x09024141,
      0x90413882,
      0xf081e286,
-     0x21016200,
+     0x21016b00,
      0x10d7d794,
      0x24000f42,
      0x83206796,
@@ -435,7 +444,7 @@ const uint32_t in4_pdsp0[] =  {
      0x11c01a00,
      0x51000003,
      0x0b057a21,
-     0x21018a00,
+     0x21019300,
      0xd1010105,
      0x11071a00,
      0x51000003,
@@ -447,11 +456,11 @@ const uint32_t in4_pdsp0[] =  {
      0x00214646,
      0x00018686,
      0x24000042,
-     0x21019c00,
+     0x2101a500,
      0x00228686,
      0xc901680a,
      0x00224646,
-     0x21019c00,
+     0x2101a500,
      0xc9026804,
      0x0b057a02,
      0x00028686,
@@ -544,18 +553,18 @@ const uint32_t in4_pdsp0[] =  {
      0x2480099f,
      0xc909b603,
      0x2400f081,
-     0x2101f400,
+     0x2101fd00,
      0xc908b605,
      0x2400e081,
      0x9081f489,
      0x51066902,
-     0x21005a00,
+     0x21006300,
      0xd10fb606,
      0x11033737,
      0x13003737,
      0x812608d7,
      0x9100f489,
-     0x21005a00,
+     0x21006300,
      0x0b0ad941,
      0x10d9d981,
      0x11032121,
@@ -563,7 +572,7 @@ const uint32_t in4_pdsp0[] =  {
      0x09024141,
      0x90413882,
      0xf081e289,
-     0x21005a00,
+     0x21006300,
      0x91002481,
      0x0101e1e1,
      0x81002481,
@@ -575,7 +584,7 @@ const uint32_t in4_pdsp0[] =  {
      0x24002004,
      0x24000024,
      0x1f047d7d,
-     0x21026200,
+     0x21026b00,
      0x2480009f,
      0x24000804,
      0x2f000184,
@@ -595,18 +604,18 @@ const uint32_t in4_pdsp0[] =  {
      0x24002004,
      0x24000024,
      0x1f047d7d,
-     0x21026200,
+     0x21026b00,
      0x240832e4,
      0x2f000384,
      0x2eff8b96,
      0x008f89d7,
-     0x21023500,
+     0x21023e00,
      0x2eff8b96,
      0x008f89d7,
      0x2f05098e,
      0x24001097,
-     0x2402599e,
-     0x2104de00,
+     0x2402629e,
+     0x21052100,
      0x24000104,
      0x0508c9c4,
      0x2f000184,
@@ -625,14 +634,14 @@ const uint32_t in4_pdsp0[] =  {
      0x69100304,
      0x1f007d7d,
      0x240002de,
-     0x21027a00,
+     0x21028300,
      0x1f047d7d,
      0xc907ff00,
      0x24001876,
      0x83206796,
      0x24402084,
      0x24001864,
-     0x21026600,
+     0x21026f00,
      0x2eff8792,
      0x2f018792,
      0x2f020792,
@@ -642,7 +651,7 @@ const uint32_t in4_pdsp0[] =  {
      0x11033737,
      0x13143737,
      0x240002de,
-     0x21025b00,
+     0x21026400,
      0x09010300,
      0x90001580,
      0x22c0009e,
@@ -671,47 +680,47 @@ const uint32_t in4_pdsp0[] =  {
      0x24000504,
      0xd110ff00,
      0x2f010184,
-     0x21004800,
+     0x21005100,
      0x2f05098e,
      0x13082424,
      0x2f000384,
-     0x21004800,
+     0x21005100,
      0x1d047d7d,
      0x1d077d7d,
      0x2f04898e,
      0x2f000384,
-     0x21004800,
+     0x21005100,
      0x1f047d7d,
      0x510ade1a,
      0xc9007d03,
      0x1d007d7d,
-     0x21014b00,
+     0x21015400,
      0x5103de06,
      0x5104de09,
      0x5105de0c,
      0x5106de0f,
      0x0b0237de,
-     0x21014700,
+     0x21015000,
      0x24402084,
      0x24001864,
      0x2400002e,
-     0x21026200,
+     0x21026b00,
      0x24402084,
      0x24001864,
      0x2400002e,
-     0x21026600,
+     0x21026f00,
      0x24402084,
      0x24001864,
      0x24000e2e,
-     0x21026200,
+     0x21026b00,
      0x24402084,
      0x24001864,
      0x24000d2e,
-     0x21026200,
+     0x21026b00,
      0x1f060e0e,
      0x24002004,
      0x24000024,
-     0x21026200,
+     0x21026b00,
      0x240000e3,
      0x31ff0006,
      0xd110ff00,
@@ -730,26 +739,26 @@ const uint32_t in4_pdsp0[] =  {
      0x85002e83,
      0x2eff8983,
      0x83242e83,
-     0x2404dcc8,
-     0x2404de88,
-     0x2404dec9,
-     0x24050189,
-     0x240595ca,
-     0x24061f8a,
-     0x240637cb,
-     0x2406428b,
-     0x240653cc,
-     0x24065e8c,
-     0x240688cd,
-     0x2406888d,
-     0x240693ce,
-     0x2404e08e,
-     0x2404decf,
-     0x2406938f,
-     0x2406abd0,
-     0x2406ab90,
-     0x2406abd1,
-     0x2406ab91,
+     0x24051fc8,
+     0x24052188,
+     0x240521c9,
+     0x24054489,
+     0x2405d8ca,
+     0x2406628a,
+     0x24067acb,
+     0x2406858b,
+     0x240696cc,
+     0x2406a18c,
+     0x2406cbcd,
+     0x2406cb8d,
+     0x2406d6ce,
+     0x2405238e,
+     0x240521cf,
+     0x2406d68f,
+     0x2406eed0,
+     0x2406ee90,
+     0x2406eed1,
+     0x2406ee91,
      0x8500f588,
      0x24505084,
      0x108484c4,
@@ -820,7 +829,7 @@ const uint32_t in4_pdsp0[] =  {
      0x240004d9,
      0x1f047b7b,
      0x1d057b7b,
-     0x21035800,
+     0x21036100,
      0x0b05ca21,
      0x090221c1,
      0x0100c1c1,
@@ -843,10 +852,10 @@ const uint32_t in4_pdsp0[] =  {
      0xd1067d04,
      0xd110ff00,
      0x2f010184,
-     0x21035800,
+     0x21036100,
      0x81242e84,
      0x1f057d7d,
-     0x21035800,
+     0x21036100,
      0x2eff8b96,
      0x05108980,
      0x24000d04,
@@ -856,15 +865,15 @@ const uint32_t in4_pdsp0[] =  {
      0x10e9e9fa,
      0x51ce0703,
      0x1f077b7b,
-     0x21035800,
+     0x21036100,
      0x51006602,
-     0x21035800,
+     0x21036100,
      0x51004606,
      0x05014646,
      0x2f008026,
      0x2400045b,
      0x1f057b7b,
-     0x21035800,
+     0x21036100,
      0x81182788,
      0x2f05098e,
      0x1f067b7b,
@@ -889,20 +898,20 @@ const uint32_t in4_pdsp0[] =  {
      0x5102270e,
      0x5103270e,
      0x5104270e,
-     0x53062728,
-     0x510c27a6,
-     0x530a272a,
-     0x53082726,
-     0x530b2726,
-     0x53092726,
+     0x53062762,
+     0x510c27d8,
+     0x530a2764,
+     0x53082760,
+     0x530b2760,
+     0x53092760,
      0x5105272f,
      0x24000286,
      0x2f0080c6,
-     0x21035800,
-     0x21047a00,
-     0x2102ff00,
-     0x21047700,
-     0x21047700,
+     0x21036100,
+     0x2104bd00,
+     0x21030800,
+     0x2104ba00,
+     0x2104ba00,
      0xc9067b02,
      0x2e85098e,
      0xc9047b08,
@@ -923,11 +932,11 @@ const uint32_t in4_pdsp0[] =  {
      0x1f0f8181,
      0x811007c1,
      0x1f060e0e,
-     0x21037e00,
+     0x21038700,
      0xc9057b04,
      0x24008000,
      0x81200760,
-     0x21037400,
+     0x21037d00,
      0x911007c1,
      0x1f0f8181,
      0x811007c1,
@@ -936,16 +945,16 @@ const uint32_t in4_pdsp0[] =  {
      0x81082481,
      0x51003a03,
      0x1f060e0e,
-     0x21037e00,
+     0x21038700,
      0x8112079a,
      0x101a1a05,
      0x13202424,
-     0x21026600,
-     0x21026600,
+     0x21026f00,
+     0x21026f00,
      0x59388004,
      0x24001086,
      0x2f0080c6,
-     0x21035800,
+     0x21036100,
      0x24000086,
      0x2f0080c6,
      0x2e80878a,
@@ -1055,7 +1064,57 @@ const uint32_t in4_pdsp0[] =  {
      0x10515121,
      0x24005082,
      0xe10c2281,
-     0x21035800,
+     0x240010c4,
+     0x2f000184,
+     0x2e808f8e,
+     0xc90bca2f,
+     0x24000082,
+     0x1f002222,
+     0xc9006e0a,
+     0x24ffa8c1,
+     0x24100081,
+     0xe1d801d1,
+     0x24ff48c1,
+     0x24040081,
+     0x24000091,
+     0xe100a18f,
+     0xe10ce192,
+     0x1f000202,
+     0x10828281,
+     0x240200c1,
+     0x24000060,
+     0xd1006006,
+     0x24000082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f006060,
+     0xd1016006,
+     0x24001082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f016060,
+     0xd1026006,
+     0x24003082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f026060,
+     0xd1036006,
+     0x24004082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f036060,
+     0xd1046006,
+     0x24006082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f046060,
+     0x6f1f60e2,
+     0x21036100,
      0x24000086,
      0x2f0080c6,
      0x2e80838a,
@@ -1065,20 +1124,20 @@ const uint32_t in4_pdsp0[] =  {
      0x58c08004,
      0x24001086,
      0x2f0080c6,
-     0x21035800,
+     0x21036100,
      0x240018c4,
      0x2f000384,
-     0x21046800,
+     0x2104ab00,
      0x240014c4,
      0x2f000384,
      0x69016a13,
      0x592c8002,
-     0x21046500,
+     0x2104a800,
      0x2e80838e,
      0x71046e04,
      0x240011d9,
      0x1f047b7b,
-     0x21035800,
+     0x21036100,
      0x09056e81,
      0x09036ec1,
      0x00c18181,
@@ -1089,10 +1148,10 @@ const uint32_t in4_pdsp0[] =  {
      0x2e808f8e,
      0x01088181,
      0x8281f38e,
-     0x21035800,
+     0x21036100,
      0x69066a0e,
      0x59148002,
-     0x21046500,
+     0x2104a800,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -1102,11 +1161,11 @@ const uint32_t in4_pdsp0[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x21041800,
-     0x21035800,
+     0x21045300,
+     0x21036100,
      0x69076a0e,
      0x59148002,
-     0x21046500,
+     0x2104a800,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -1116,12 +1175,12 @@ const uint32_t in4_pdsp0[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x21042600,
-     0x21035800,
+     0x21046100,
+     0x21036100,
      0x69086a19,
      0x24003cc0,
      0x58c08002,
-     0x21046500,
+     0x2104a800,
      0x2e808b8e,
      0x240100c2,
      0x51006e12,
@@ -1141,12 +1200,12 @@ const uint32_t in4_pdsp0[] =  {
      0x2f000184,
      0x2e80898f,
      0x05016e6e,
-     0x21043500,
-     0x21035800,
+     0x21047000,
+     0x21036100,
      0x69096a1a,
      0x2400a0c0,
      0x58c08002,
-     0x21046500,
+     0x2104a800,
      0x2e808d8e,
      0x240300c2,
      0x51006e13,
@@ -1162,19 +1221,27 @@ const uint32_t in4_pdsp0[] =  {
      0x8082fc91,
      0x01108282,
      0x05014e4e,
-     0x21045400,
+     0x21048f00,
      0x240018c4,
      0x2f000184,
      0x2e808b8f,
      0x05016e6e,
-     0x21044e00,
-     0x21035800,
+     0x21048900,
+     0x21036100,
+     0x690a6a08,
+     0x590c8002,
+     0x2104a800,
+     0x2e80838e,
+     0x24ffa8c2,
+     0x24100082,
+     0xe1d0628e,
+     0x21036100,
      0x240002d9,
      0x1f047b7b,
-     0x21035800,
+     0x21036100,
      0x240010d9,
      0x1f047b7b,
-     0x21035800,
+     0x21036100,
      0x240000e1,
      0x240010c4,
      0x2e80878e,
@@ -1184,22 +1251,22 @@ const uint32_t in4_pdsp0[] =  {
      0x01010101,
      0x0110c1c1,
      0x671f01fa,
-     0x21035800,
-     0x21035800,
-     0x21035800,
-     0x21035800,
-     0x21035800,
-     0x21035800,
+     0x21036100,
+     0x21036100,
+     0x21036100,
+     0x21036100,
+     0x21036100,
+     0x21036100,
      0x24000c86,
      0x2f0080c6,
-     0x21035800,
+     0x21036100,
      0x2e80838a,
      0x2eff818d,
      0x240068c0,
      0x58c08004,
      0x24001000,
      0xc9037b41,
-     0x2104bc00,
+     0x2104ff00,
      0x91200e61,
      0x240100c0,
      0x68c0ca12,
@@ -1207,7 +1274,7 @@ const uint32_t in4_pdsp0[] =  {
      0x69202104,
      0x24000400,
      0xc9037b39,
-     0x2104bc00,
+     0x2104ff00,
      0x090221c1,
      0x0100c1c1,
      0x90c12e82,
@@ -1215,15 +1282,15 @@ const uint32_t in4_pdsp0[] =  {
      0x69200304,
      0x24000400,
      0xc9037b31,
-     0x2104bc00,
+     0x2104ff00,
      0x090521ca,
      0x0003caca,
      0x2f00808a,
-     0x21049e00,
+     0x2104e100,
      0x60c0ca04,
      0x24000400,
      0xc9037b29,
-     0x2104bc00,
+     0x2104ff00,
      0x0b05ca21,
      0x090221c1,
      0x0100c1c1,
@@ -1232,7 +1299,7 @@ const uint32_t in4_pdsp0[] =  {
      0x24000004,
      0x240018c4,
      0x2f000384,
-     0x2104c400,
+     0x21050700,
      0x1e03e2e2,
      0x80c12e82,
      0x2700e223,
@@ -1255,18 +1322,18 @@ const uint32_t in4_pdsp0[] =  {
      0xd1067d04,
      0xd110ff00,
      0x2f010984,
-     0x21035800,
+     0x21036100,
      0x83242e84,
      0x1f057d7d,
-     0x21035800,
+     0x21036100,
      0x100000d9,
      0x1f047b7b,
      0x1d057b7b,
-     0x21035800,
+     0x21036100,
      0x10000086,
      0x2f0080c6,
      0x1d057b7b,
-     0x21035800,
+     0x21036100,
      0x2e808f8e,
      0x2f01878e,
      0x2f020792,
@@ -1286,11 +1353,11 @@ const uint32_t in4_pdsp0[] =  {
      0x69032a03,
      0x1f016d6d,
      0x10cbcb8d,
-     0x2104a200,
+     0x2104e500,
      0x1d057d7d,
      0x93242e84,
      0x2f010984,
-     0x21004a00,
+     0x21005300,
      0x240002de,
      0x209e0000,
      0x240002de,
@@ -1351,7 +1418,7 @@ const uint32_t in4_pdsp0[] =  {
      0x2eff8792,
      0xd102b603,
      0x10d9d995,
-     0x21051c00,
+     0x21055f00,
      0x10dada95,
      0x111f3535,
      0x1d02b6b6,
@@ -1394,7 +1461,7 @@ const uint32_t in4_pdsp0[] =  {
      0x2700ea01,
      0x69200103,
      0x1f08b6b6,
-     0x21054700,
+     0x21058a00,
      0x61e06a03,
      0x49ef6a02,
      0x1f09b6b6,
@@ -1412,7 +1479,7 @@ const uint32_t in4_pdsp0[] =  {
      0x209e0000,
      0x11033737,
      0x13143737,
-     0x21055800,
+     0x21059b00,
      0x11033737,
      0x13643737,
      0x240002de,
@@ -1435,7 +1502,7 @@ const uint32_t in4_pdsp0[] =  {
      0x6e484bf9,
      0x01016b6b,
      0x808e100b,
-     0x21057c00,
+     0x2105bf00,
      0x57008196,
      0x586e4e0d,
      0x2700f07b,
@@ -1449,7 +1516,7 @@ const uint32_t in4_pdsp0[] =  {
      0x2400016b,
      0x09047b8e,
      0x808eb08b,
-     0x21057c00,
+     0x2105bf00,
      0x2400ff7b,
      0x2400015b,
      0x1f04b6b6,
@@ -1467,7 +1534,7 @@ const uint32_t in4_pdsp0[] =  {
      0x705b6b04,
      0x045b6b6b,
      0x8081308b,
-     0x21059200,
+     0x2105d500,
      0x9100b18e,
      0x1c7bf0f0,
      0x51004e02,
@@ -1497,12 +1564,12 @@ const uint32_t in4_pdsp0[] =  {
      0x512b6004,
      0x513c6003,
      0x513b6002,
-     0x2105b200,
+     0x2105f500,
      0x90800680,
      0x01014040,
      0x09034040,
      0x00408080,
-     0x2105a500,
+     0x2105e800,
      0x90800600,
      0x1f006161,
      0x10f1f1e2,
@@ -1518,7 +1585,7 @@ const uint32_t in4_pdsp0[] =  {
      0x6e604bf9,
      0x01016b6b,
      0x808e100b,
-     0x2105cf00,
+     0x21061200,
      0xc9006128,
      0x586e4e0d,
      0x2700f07b,
@@ -1532,7 +1599,7 @@ const uint32_t in4_pdsp0[] =  {
      0x2400016b,
      0x09047b8e,
      0x808eb08b,
-     0x2105cf00,
+     0x21061200,
      0x2400ff7b,
      0x2400015b,
      0x1f04b6b6,
@@ -1550,7 +1617,7 @@ const uint32_t in4_pdsp0[] =  {
      0x705b6b04,
      0x045b6b6b,
      0x8081308b,
-     0x2105e500,
+     0x21062800,
      0x9100b18e,
      0x1c7bf0f0,
      0x51004e02,
@@ -1580,7 +1647,7 @@ const uint32_t in4_pdsp0[] =  {
      0x2eff878a,
      0xd102b603,
      0x10d9d98d,
-     0x21060100,
+     0x21064400,
      0x10dada8d,
      0x111f2d2d,
      0x1d02b6b6,
@@ -1631,7 +1698,7 @@ const uint32_t in4_pdsp0[] =  {
      0x01016ec4,
      0x2f000384,
      0x00c4c0c0,
-     0x21062600,
+     0x21066900,
      0x1066664c,
      0x2f02802c,
      0x90661261,
index 6ceb733287e96c553b6fdaa061754cc5ac746737..c1ff94a9008c5e4f1308b84143c81f5cd89d01e4 100644 (file)
@@ -58,8 +58,8 @@ const uint32_t in4_pdsp1[] =  {
      0xc900ff00,
      0xd100ff00,
      0x2eff819d,
-     0x2400073d,
-     0x8100175d,
+     0x24000702,
+     0x81001762,
      0x24010182,
      0x240300c2,
      0x81043782,
@@ -137,7 +137,7 @@ const uint32_t in4_pdsp1[] =  {
      0x2e838786,
      0x24801c83,
      0x2400109e,
-     0x21038800,
+     0x2103c200,
      0x2e838786,
      0xc90d9908,
      0x11033737,
@@ -160,13 +160,13 @@ const uint32_t in4_pdsp1[] =  {
      0x90413882,
      0xf081e286,
      0x24801c83,
-     0x21038800,
+     0x2103c200,
      0x0b0237de,
      0x0904dede,
      0x90def486,
      0x24801c83,
      0x2400109e,
-     0x21038800,
+     0x2103c200,
      0xd106ff00,
      0x9110078a,
      0x24002004,
@@ -609,12 +609,12 @@ const uint32_t in4_pdsp1[] =  {
      0x5102270e,
      0x5103270e,
      0x5104270e,
-     0x53062751,
-     0x510c27b2,
-     0x530a2753,
-     0x5308274f,
-     0x530b274f,
-     0x5309274f,
+     0x5306278b,
+     0x510c27e4,
+     0x530a278d,
+     0x53082789,
+     0x530b2789,
+     0x53092789,
      0x5105273b,
      0x24000286,
      0x2f0080c6,
@@ -787,6 +787,56 @@ const uint32_t in4_pdsp1[] =  {
      0x10515121,
      0x24005082,
      0xe10c2281,
+     0x240010c4,
+     0x2f000184,
+     0x2e808f8e,
+     0xc90bca2f,
+     0x24000082,
+     0x1f002222,
+     0xc9006e0a,
+     0x24ffa8c1,
+     0x24100081,
+     0xe1d801d1,
+     0x24ff48c1,
+     0x24040081,
+     0x24000091,
+     0xe100a18f,
+     0xe10ce192,
+     0x1f000202,
+     0x10828281,
+     0x240200c1,
+     0x24000060,
+     0xd1006006,
+     0x24000082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f006060,
+     0xd1016006,
+     0x24001082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f016060,
+     0xd1026006,
+     0x24003082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f026060,
+     0xd1036006,
+     0x24004082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f036060,
+     0xd1046006,
+     0x24006082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f046060,
+     0x6f1f60e2,
      0x21024000,
      0x24000086,
      0x2f0080c6,
@@ -800,12 +850,12 @@ const uint32_t in4_pdsp1[] =  {
      0x21024000,
      0x240018c4,
      0x2f000384,
-     0x21037900,
+     0x2103b300,
      0x240014c4,
      0x2f000384,
      0x69016a13,
      0x592c8002,
-     0x21037600,
+     0x2103b000,
      0x2e80838e,
      0x71046e04,
      0x240011d9,
@@ -824,7 +874,7 @@ const uint32_t in4_pdsp1[] =  {
      0x21024000,
      0x69026a0c,
      0x59148002,
-     0x21037600,
+     0x2103b000,
      0x2e80878e,
      0x71106e04,
      0x240012d9,
@@ -836,7 +886,7 @@ const uint32_t in4_pdsp1[] =  {
      0x21024000,
      0x69046a09,
      0x59088002,
-     0x21037600,
+     0x2103b000,
      0x2e80818e,
      0x1d021d1d,
      0xc9006e02,
@@ -845,7 +895,7 @@ const uint32_t in4_pdsp1[] =  {
      0x21024000,
      0x69056a08,
      0x59088002,
-     0x21037600,
+     0x2103b000,
      0x2e80818e,
      0x1d011d1d,
      0xc9006e02,
@@ -853,7 +903,7 @@ const uint32_t in4_pdsp1[] =  {
      0x21024000,
      0x69066a0e,
      0x59148002,
-     0x21037600,
+     0x2103b000,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -863,11 +913,11 @@ const uint32_t in4_pdsp1[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x21032900,
+     0x21035b00,
      0x21024000,
      0x69076a0e,
      0x59148002,
-     0x21037600,
+     0x2103b000,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -877,12 +927,12 @@ const uint32_t in4_pdsp1[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x21033700,
+     0x21036900,
      0x21024000,
      0x69086a19,
      0x24003cc0,
      0x58c08002,
-     0x21037600,
+     0x2103b000,
      0x2e808b8e,
      0x240100c2,
      0x51006e12,
@@ -902,12 +952,12 @@ const uint32_t in4_pdsp1[] =  {
      0x2f000184,
      0x2e80898f,
      0x05016e6e,
-     0x21034600,
+     0x21037800,
      0x21024000,
      0x69096a1a,
      0x2400a0c0,
      0x58c08002,
-     0x21037600,
+     0x2103b000,
      0x2e808d8e,
      0x240300c2,
      0x51006e13,
@@ -923,12 +973,20 @@ const uint32_t in4_pdsp1[] =  {
      0x8082fc91,
      0x01108282,
      0x05014e4e,
-     0x21036500,
+     0x21039700,
      0x240018c4,
      0x2f000184,
      0x2e808b8f,
      0x05016e6e,
-     0x21035f00,
+     0x21039100,
+     0x21024000,
+     0x690a6a08,
+     0x590c8002,
+     0x2103b000,
+     0x2e80838e,
+     0x24ffa8c2,
+     0x24100082,
+     0xe1d0628e,
      0x21024000,
      0x240002d9,
      0x1f047b7b,
@@ -966,7 +1024,7 @@ const uint32_t in4_pdsp1[] =  {
      0x11c00101,
      0x51014703,
      0x24001641,
-     0x21039900,
+     0x2103d300,
      0x24000d41,
      0x12410101,
      0x812607c1,
@@ -1012,7 +1070,7 @@ const uint32_t in4_pdsp1[] =  {
      0x11c01a00,
      0x51000003,
      0x0b057a21,
-     0x2103cb00,
+     0x21040500,
      0xd1010105,
      0x11071a00,
      0x51000003,
@@ -1024,11 +1082,11 @@ const uint32_t in4_pdsp1[] =  {
      0x00214646,
      0x00018686,
      0x24000042,
-     0x2103dd00,
+     0x21041700,
      0x00228686,
      0xc901680a,
      0x00224646,
-     0x2103dd00,
+     0x21041700,
      0xc9026804,
      0x0b057a02,
      0x00028686,
@@ -1072,9 +1130,9 @@ const uint32_t in4_pdsp1[] =  {
      0x69010206,
      0xd1076603,
      0x2400002e,
-     0x21040600,
+     0x21044000,
      0x2400012e,
-     0x21040600,
+     0x21044000,
      0x69050214,
      0x1046462e,
      0x81186787,
index 0c782c61c623cb43bcda2c75a8078578633c2cf9..9f5ef25ad24c19640f17c498e59e143b960ea9c4 100644 (file)
@@ -50,7 +50,7 @@ const uint32_t post_pdsp0[] =  {
      0x21000300,
      0xbabe0500,
      0x03000101,
-     0x2304d49e,
+     0x23050e9e,
      0x2eff8582,
      0x8104a482,
      0x240001e2,
@@ -101,7 +101,7 @@ const uint32_t post_pdsp0[] =  {
      0x2400109e,
      0x24001004,
      0x2f000384,
-     0x2103f600,
+     0x21043000,
      0x24000804,
      0x2f000184,
      0x242031e4,
@@ -612,20 +612,20 @@ const uint32_t post_pdsp0[] =  {
      0x5102270e,
      0x5103270e,
      0x5104270e,
-     0x53062730,
-     0x510c27ae,
-     0x530a27a1,
-     0x53082771,
-     0x530b2771,
-     0x5309279d,
+     0x5306276a,
+     0x510c27e0,
+     0x530a27db,
+     0x530827ab,
+     0x530b27ab,
+     0x530927d7,
      0x51052737,
      0x24000286,
      0x2f0080c6,
      0x21024300,
-     0x2104d100,
-     0x2104d100,
-     0x2104ca00,
-     0x2104d100,
+     0x21050b00,
+     0x21050b00,
+     0x21050400,
+     0x21050b00,
      0xc9067b02,
      0x2e85098e,
      0xc9047b08,
@@ -786,6 +786,56 @@ const uint32_t post_pdsp0[] =  {
      0x10515121,
      0x24005082,
      0xe10c2281,
+     0x240010c4,
+     0x2f000184,
+     0x2e808f8e,
+     0xc90bca2f,
+     0x24000082,
+     0x1f002222,
+     0xc9006e0a,
+     0x24ffa8c1,
+     0x24100081,
+     0xe1d801d1,
+     0x24ff48c1,
+     0x24040081,
+     0x24000091,
+     0xe100a18f,
+     0xe10ce192,
+     0x1f000202,
+     0x10828281,
+     0x240200c1,
+     0x24000060,
+     0xd1006006,
+     0x24000082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f006060,
+     0xd1016006,
+     0x24001082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f016060,
+     0xd1026006,
+     0x24003082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f026060,
+     0xd1036006,
+     0x24004082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f036060,
+     0xd1046006,
+     0x24006082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f046060,
+     0x6f1f60e2,
      0x21024300,
      0x24000086,
      0x2f0080c6,
@@ -799,12 +849,12 @@ const uint32_t post_pdsp0[] =  {
      0x21024300,
      0x240018c4,
      0x2f000384,
-     0x21035b00,
+     0x21039500,
      0x240014c4,
      0x2f000384,
      0x69016a13,
      0x592c8002,
-     0x21035800,
+     0x21039200,
      0x2e80838e,
      0x71046e04,
      0x240011d9,
@@ -823,7 +873,7 @@ const uint32_t post_pdsp0[] =  {
      0x21024300,
      0x69066a0e,
      0x59148002,
-     0x21035800,
+     0x21039200,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -833,11 +883,11 @@ const uint32_t post_pdsp0[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x21030b00,
+     0x21033d00,
      0x21024300,
      0x69076a0e,
      0x59148002,
-     0x21035800,
+     0x21039200,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -847,12 +897,12 @@ const uint32_t post_pdsp0[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x21031900,
+     0x21034b00,
      0x21024300,
      0x69086a19,
      0x24003cc0,
      0x58c08002,
-     0x21035800,
+     0x21039200,
      0x2e808b8e,
      0x240100c2,
      0x51006e12,
@@ -872,12 +922,12 @@ const uint32_t post_pdsp0[] =  {
      0x2f000184,
      0x2e80898f,
      0x05016e6e,
-     0x21032800,
+     0x21035a00,
      0x21024300,
      0x69096a1a,
      0x2400a0c0,
      0x58c08002,
-     0x21035800,
+     0x21039200,
      0x2e808d8e,
      0x240300c2,
      0x51006e13,
@@ -893,12 +943,20 @@ const uint32_t post_pdsp0[] =  {
      0x8082fc91,
      0x01108282,
      0x05014e4e,
-     0x21034700,
+     0x21037900,
      0x240018c4,
      0x2f000184,
      0x2e808b8f,
      0x05016e6e,
-     0x21034100,
+     0x21037300,
+     0x21024300,
+     0x690a6a08,
+     0x590c8002,
+     0x21039200,
+     0x2e80838e,
+     0x24ffa8c2,
+     0x24100082,
+     0xe1d0628e,
      0x21024300,
      0x240002d9,
      0x1f047b7b,
@@ -928,7 +986,7 @@ const uint32_t post_pdsp0[] =  {
      0x24fff8c5,
      0x24080085,
      0x2f000384,
-     0xcd006ad2,
+     0xcd006a98,
      0x69008a09,
      0x2eff8f8e,
      0x240000e2,
@@ -947,7 +1005,7 @@ const uint32_t post_pdsp0[] =  {
      0x51008b04,
      0x24000800,
      0x09038bd0,
-     0x21038600,
+     0x2103c000,
      0x24000400,
      0x2e80818e,
      0x2f000184,
@@ -965,12 +1023,12 @@ const uint32_t post_pdsp0[] =  {
      0x0b018181,
      0x0081d08f,
      0x24000400,
-     0x21038600,
+     0x2103c000,
      0x1081818f,
-     0x21038600,
+     0x2103c000,
      0x090220c0,
      0x00c08f8f,
-     0x21038600,
+     0x2103c000,
      0xc830ee04,
      0x8e8fd012,
      0x1c30eeee,
@@ -982,7 +1040,7 @@ const uint32_t post_pdsp0[] =  {
      0x00008f8f,
      0x6ed08fe4,
      0x24000400,
-     0x21038900,
+     0x2103c300,
      0x21024300,
      0x21024300,
      0x240004c0,
@@ -1012,7 +1070,7 @@ const uint32_t post_pdsp0[] =  {
      0x2e85098e,
      0x24001481,
      0x240000c1,
-     0x55008a7e,
+     0x55008a44,
      0x60ce8109,
      0x588fc108,
      0xf0c13096,
@@ -1021,7 +1079,7 @@ const uint32_t post_pdsp0[] =  {
      0x80c20fd6,
      0x05018a8a,
      0x0104c1c1,
-     0x2103c500,
+     0x2103ff00,
      0x2e808196,
      0x0901d6c2,
      0x0082c2c2,
@@ -1029,7 +1087,7 @@ const uint32_t post_pdsp0[] =  {
      0x05018a8a,
      0x01048181,
      0x2f000384,
-     0x2103c500,
+     0x2103ff00,
      0x21024300,
      0x240080c0,
      0x58c08004,
@@ -1076,7 +1134,7 @@ const uint32_t post_pdsp0[] =  {
      0x11c00101,
      0x51014703,
      0x24001641,
-     0x21040700,
+     0x21044100,
      0x24000d41,
      0x12410101,
      0x812607c1,
@@ -1122,7 +1180,7 @@ const uint32_t post_pdsp0[] =  {
      0x11c01a00,
      0x51000003,
      0x0b057a21,
-     0x21043900,
+     0x21047300,
      0xd1010105,
      0x11071a00,
      0x51000003,
@@ -1134,11 +1192,11 @@ const uint32_t post_pdsp0[] =  {
      0x00214646,
      0x00018686,
      0x24000042,
-     0x21044b00,
+     0x21048500,
      0x00228686,
      0xc901680a,
      0x00224646,
-     0x21044b00,
+     0x21048500,
      0xc9026804,
      0x0b057a02,
      0x00028686,
@@ -1183,9 +1241,9 @@ const uint32_t post_pdsp0[] =  {
      0x69010206,
      0xd1076603,
      0x2400002e,
-     0x21047500,
+     0x2104af00,
      0x2400012e,
-     0x21047500,
+     0x2104af00,
      0x69050214,
      0x1046462e,
      0x81186787,
index 59b334261f063bea2f8110fa05a2be542bfd8036..60e0f36957dbe1aeb5dc493a53bee0aec6278822 100644 (file)
@@ -50,7 +50,7 @@ const uint32_t post_pdsp1[] =  {
      0x21000300,
      0xbabe0501,
      0x03000101,
-     0x23034e9e,
+     0x2303889e,
      0x2eff8582,
      0x8104a482,
      0x240001e2,
@@ -83,7 +83,7 @@ const uint32_t post_pdsp1[] =  {
      0x2400109e,
      0x24001004,
      0x2f000384,
-     0x21027100,
+     0x2102ab00,
      0x24000804,
      0x2f000184,
      0x242031e4,
@@ -149,7 +149,7 @@ const uint32_t post_pdsp1[] =  {
      0x2100ae00,
      0x2400109e,
      0xc907b602,
-     0x21024400,
+     0x21027e00,
      0xd105b603,
      0xd104b61b,
      0x21002e00,
@@ -263,20 +263,20 @@ const uint32_t post_pdsp1[] =  {
      0x5102270e,
      0x5103270e,
      0x5104270e,
-     0x53062734,
-     0x510c27b2,
-     0x530a2769,
-     0x53082732,
-     0x530b2765,
-     0x53092765,
+     0x5306276e,
+     0x510c27e4,
+     0x530a27a3,
+     0x5308276c,
+     0x530b279f,
+     0x5309279f,
      0x5105273b,
      0x24000286,
      0x2f0080c6,
      0x2100e600,
-     0x21034b00,
-     0x21034b00,
-     0x21034400,
-     0x21034b00,
+     0x21038500,
+     0x21038500,
+     0x21037e00,
+     0x21038500,
      0xc9067b02,
      0x2e85098e,
      0xc9047b08,
@@ -441,6 +441,56 @@ const uint32_t post_pdsp1[] =  {
      0x10515121,
      0x24005082,
      0xe10c2281,
+     0x240010c4,
+     0x2f000184,
+     0x2e808f8e,
+     0xc90bca2f,
+     0x24000082,
+     0x1f002222,
+     0xc9006e0a,
+     0x24ffa8c1,
+     0x24100081,
+     0xe1d801d1,
+     0x24ff48c1,
+     0x24040081,
+     0x24000091,
+     0xe100a18f,
+     0xe10ce192,
+     0x1f000202,
+     0x10828281,
+     0x240200c1,
+     0x24000060,
+     0xd1006006,
+     0x24000082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f006060,
+     0xd1016006,
+     0x24001082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f016060,
+     0xd1026006,
+     0x24003082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f026060,
+     0xd1036006,
+     0x24004082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f036060,
+     0xd1046006,
+     0x24006082,
+     0xf1040220,
+     0x69004003,
+     0xe1042281,
+     0x1f046060,
+     0x6f1f60e2,
      0x2100e600,
      0x24000086,
      0x2f0080c6,
@@ -454,12 +504,12 @@ const uint32_t post_pdsp1[] =  {
      0x2100e600,
      0x240018c4,
      0x2f000384,
-     0x21020200,
+     0x21023c00,
      0x240014c4,
      0x2f000384,
      0x69016a13,
      0x592c8002,
-     0x2101ff00,
+     0x21023900,
      0x2e80838e,
      0x71046e04,
      0x240011d9,
@@ -478,7 +528,7 @@ const uint32_t post_pdsp1[] =  {
      0x2100e600,
      0x69066a0e,
      0x59148002,
-     0x2101ff00,
+     0x21023900,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -488,11 +538,11 @@ const uint32_t post_pdsp1[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x2101b200,
+     0x2101e400,
      0x2100e600,
      0x69076a0e,
      0x59148002,
-     0x2101ff00,
+     0x21023900,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -502,12 +552,12 @@ const uint32_t post_pdsp1[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x2101c000,
+     0x2101f200,
      0x2100e600,
      0x69086a19,
      0x24003cc0,
      0x58c08002,
-     0x2101ff00,
+     0x21023900,
      0x2e808b8e,
      0x240100c2,
      0x51006e12,
@@ -527,12 +577,12 @@ const uint32_t post_pdsp1[] =  {
      0x2f000184,
      0x2e80898f,
      0x05016e6e,
-     0x2101cf00,
+     0x21020100,
      0x2100e600,
      0x69096a1a,
      0x2400a0c0,
      0x58c08002,
-     0x2101ff00,
+     0x21023900,
      0x2e808d8e,
      0x240300c2,
      0x51006e13,
@@ -548,12 +598,20 @@ const uint32_t post_pdsp1[] =  {
      0x8082fc91,
      0x01108282,
      0x05014e4e,
-     0x2101ee00,
+     0x21022000,
      0x240018c4,
      0x2f000184,
      0x2e808b8f,
      0x05016e6e,
-     0x2101e800,
+     0x21021a00,
+     0x2100e600,
+     0x690a6a08,
+     0x590c8002,
+     0x21023900,
+     0x2e80838e,
+     0x24ffa8c2,
+     0x24100082,
+     0xe1d0628e,
      0x2100e600,
      0x240002d9,
      0x1f047b7b,
@@ -671,7 +729,7 @@ const uint32_t post_pdsp1[] =  {
      0x108181ce,
      0x10c1c18f,
      0x570800e2,
-     0x21024f00,
+     0x21028900,
      0xc907ff00,
      0x911007ca,
      0x1d0f8a8a,
@@ -687,7 +745,7 @@ const uint32_t post_pdsp1[] =  {
      0x11c00101,
      0x51014703,
      0x24001641,
-     0x21028200,
+     0x2102bc00,
      0x24000d41,
      0x12410101,
      0x812607c1,
@@ -733,7 +791,7 @@ const uint32_t post_pdsp1[] =  {
      0x11c01a00,
      0x51000003,
      0x0b057a21,
-     0x2102b400,
+     0x2102ee00,
      0xd1010105,
      0x11071a00,
      0x51000003,
@@ -745,11 +803,11 @@ const uint32_t post_pdsp1[] =  {
      0x00214646,
      0x00018686,
      0x24000042,
-     0x2102c600,
+     0x21030000,
      0x00228686,
      0xc901680a,
      0x00224646,
-     0x2102c600,
+     0x21030000,
      0xc9026804,
      0x0b057a02,
      0x00028686,
@@ -794,9 +852,9 @@ const uint32_t post_pdsp1[] =  {
      0x69010206,
      0xd1076603,
      0x2400002e,
-     0x2102f000,
+     0x21032a00,
      0x2400012e,
-     0x2102f000,
+     0x21032a00,
      0x69050214,
      0x1046462e,
      0x81186787,
index e8084322ab1f6050a7bee952cf41a5644fc16b84..d396789797b29b40f12aaa02664a4bf28d6d1aae 100644 (file)
@@ -589,11 +589,10 @@ l_paComConfigPa6_eqos_valid_0:
 
 l_paComConfigPa6_mbox_tx_post:
             mov  r2.w0, FIRMWARE_TXCMD_PDSP_MBOX
-            sbbo r1, r2, FIRMWARE_CMD_PKT_CTRL_CFG_OFFSET, 4 
-            
-            // pass through            
-   
-         
+            sbbo r1, r2, FIRMWARE_CMD_PKT_CTRL_CFG_OFFSET, 4             
+
+            // pass through
+
 l_paComConfigPa7:
    // Scroll the CDE past the command, max counts, valid events, eroute enables and pktControl
    //mov  s_cdeCmdWd.operation,  CDE_CMD_WINDOW_ADVANCE
@@ -637,7 +636,99 @@ l_paComConfigPa10:
         //pass through 
         
 l_paComConfigPa11:
-         
+   mov  s_cdeCmdWd.byteCount,  2*SIZE(s_paComOutAcl) + 2*SIZE(s_paComRa)
+   xout XID_CDECTRL,  s_cdeCmdWd,    4
+   
+   xin  XID_CDEDATA,  s_eoamCfg, SIZE(s_eoamCfg)
+   qbbc  l_paComConfigPa12, s_paCmdCfgA.validFlag.t_paCmdConfigValidEoam
+      // clear eoam valid bits and control bits
+      mov  r2.w0, 0
+      // post EOAM enable (PDSP1, PDSP5) and PA time Stamp enable for all the Ingress PDSPs when EOAM is enabled
+      // qbbc     l_paComConfigPa12, s_paComPktCtrl.validBitMap.t_pa_pkt_ctrl_eoam_mode
+      // there is no valid bit map for EOAM, it is always valid when EOAM configuration is sent
+      set r2.b1.t_eoamEn
+      qbbc l_paComConfigPa11_0, s_eoamCfg.ctrlBitmap.t_eoam_ctrl_enable
+        // The EOAM global configurations are split and stored into Ingress 0 and Egress 0 scratch
+        // Store multiplication factor (2 bytes) in Egress0 Scratch
+        mov  r1, PAMEM_CONST_MODIFY_EGRESS0
+        sbbo s_eoamCfg.mul, r1, OFFSET_CONVERT_TIMESTAMP + 8, 2
+
+        // Rest of them are all configurations to be stored in Ingress 0 Scratch
+        mov  r1, PAMEM_CONST_RO_TIME_ACC_INGRESS0
+        // since mul is overlaid with the current roll over count, clear the count
+        ldi  s_timeAccConstants.rollOverCnt, 0
+        sbbo s_timeAccConstants,  r1, OFFSET_RO_TIME_ACC_CONSTANTS, SIZE(s_timeAccConstants)
+        sbbo s_eoamExceptionTbl,  r1, OFFSET_EOAM_EXCEPTION_TBL, SIZE(s_eoamExceptionTbl)
+        // Enable EOAM
+        set r2.b0.t_eoamEn
+                 
+l_paComConfigPa11_0:
+        mov r1.w0, r2.w0
+        // Configure Eoam
+        mov r1.w2,  FIRMWARE_CMD_EOAM_CFG  << 8             
+        // Wait until the previous command is ack-ed BIG Loop
+        mov     r0.b3,  0            
+l_paComConfigPa11_1:
+        qbbs l_paComConfigPa11_2, r0.b3.t0
+          // Mail box posting is not done yet, check if we are done waiting?              
+          mov  r2.w0, FIRMWARE_P0_MBOX                  
+          lbbo r0.b2, r2, FIRMWARE_CMD_EOAM_CFG_OFFSET, 1
+          qbne l_paComConfigPa11_2, r0.b2, 0
+          // Command can be posted          
+          sbbo r1, r2, FIRMWARE_CMD_EOAM_CFG_OFFSET, 4
+          // Indicate mail box post done for PDSP0
+          set r0.b3.t0
+                
+l_paComConfigPa11_2:
+         qbbs l_paComConfigPa11_3, r0.b3.t1
+           // Mail box posting is not done yet, check if we are done waiting?              
+           mov  r2.w0, FIRMWARE_P1_MBOX                  
+           lbbo r0.b2, r2, FIRMWARE_CMD_EOAM_CFG_OFFSET, 1
+           qbne l_paComConfigPa11_3, r0.b2, 0
+           // Command can be posted            
+           sbbo r1, r2, FIRMWARE_CMD_EOAM_CFG_OFFSET, 4
+           // Indicate mail box post done for PDSP0
+           set r0.b3.t1            
+
+l_paComConfigPa11_3:
+         qbbs l_paComConfigPa11_4, r0.b3.t2
+           // Mail box posting is not done yet, check if we are done waiting?              
+           mov  r2.w0, FIRMWARE_P3_MBOX                  
+           lbbo r0.b2, r2, FIRMWARE_CMD_EOAM_CFG_OFFSET, 1
+           qbne l_paComConfigPa11_4, r0.b2, 0
+           // Command can be posted            
+           sbbo r1, r2, FIRMWARE_CMD_EOAM_CFG_OFFSET, 4
+           // Indicate mail box post done for PDSP0
+           set r0.b3.t2           
+
+l_paComConfigPa11_4:
+          qbbs l_paComConfigPa11_5, r0.b3.t3
+            // Mail box posting is not done yet, check if we are done waiting?              
+            mov  r2.w0, FIRMWARE_P4_MBOX                  
+            lbbo r0.b2, r2, FIRMWARE_CMD_EOAM_CFG_OFFSET, 1
+            qbne l_paComConfigPa11_5, r0.b2, 0
+              // Command can be posted            
+              sbbo r1, r2, FIRMWARE_CMD_EOAM_CFG_OFFSET, 4
+                // Indicate mail box post done for PDSP0
+                set r0.b3.t3            
+
+l_paComConfigPa11_5:
+            qbbs l_paComConfigPa11_6, r0.b3.t4
+              // Mail box posting is not done yet, check if we are done waiting?              
+              mov  r2.w0, FIRMWARE_P6_MBOX                  
+              lbbo r0.b2, r2, FIRMWARE_CMD_EOAM_CFG_OFFSET, 1
+              qbne l_paComConfigPa11_6, r0.b2, 0
+                // Command can be posted            
+                sbbo r1, r2, FIRMWARE_CMD_EOAM_CFG_OFFSET, 4
+                // Indicate mail box post done for PDSP0
+                set r0.b3.t4
+                
+l_paComConfigPa11_6:
+            // Wait until all mail box are posted
+            qbne l_paComConfigPa11_1, r0.b3, 0x1F
+
+        //pass through 
+l_paComConfigPa12:   
    jmp f_cfgReply
 
     .leave cdeScope
@@ -1072,6 +1163,20 @@ l_paSysConfigPa9a_complete:
          jmp f_cfgReply
 
 l_paSysConfigPa10:
+   qbne  l_paSysConfigPa11, s_paCmdSysCfg.sysCode,  PA_SYSTEM_CONFIG_CODE_TIMESTAMP
+     // Process Ethernet OAM Time offset correction command  
+     qble l_paSysConfigPa10a,  r0.w0,  PA_CONFIG_COMMAND_SIZE_SYS_CONFIG_EOAM_TOFFSET
+     jmp  l_paSysConfigPa_err         
+         
+l_paSysConfigPa10a:
+         // Load default route configuration
+         xin   XID_CDEDATA, s_timeStampOffsetCfg, SIZE(s_timeStampOffsetCfg)             
+         // Store the configurations in Egress 0 scratch
+         mov  r2, PAMEM_CONST_MODIFY_EGRESS0
+         sbbo s_timeStampOffsetCfg, r2, OFFSET_CONVERT_TIMESTAMP, SIZE(s_timeStampOffsetCfg)        
+         jmp f_cfgReply      
+      
+l_paSysConfigPa11:
         // Error Handling: invalid command 
         mov  s_pktCxt2.commandResult, PA_COMMAND_RESULT_INVALID_CMD
         set  s_pktCxt2.ctrlFlag.t_cmdResultPatch
index e472b3d283ae830480fd4d8a6dcd1f452a42f8e2..8dc1f3319ba7af0e0ca2a490f58f5987de719eb2 100644 (file)
@@ -1431,9 +1431,15 @@ f_group7Cmd:
     
     // Extract the sub command code
     and  r1.b0,  s_ipFrag.cmdId_subCode,  PA_SUB_CMD_CODE_MASK
+    qbeq f_insTime,  r1.b0, PA_SUB_CMD_CODE_INSERT_MSG_TIME
+    qbeq f_insCount, r1.b0, PA_SUB_CMD_CODE_INSERT_MSG_CNT
     qbeq f_patchCrc, r1.b0, PA_SUB_CMD_CODE_PATCH_CRC
     qbeq fci_mProc4, r1.b0, PA_SUB_CMD_CODE_DUMMY 
-    
+
+f_insTime:
+    // TBD
+f_insCount:
+    // TBD
 #ifndef PASS_PROC_IP_FRAG  
     jmp  fci_mProc4
 
@@ -2010,7 +2016,8 @@ l_ipv6Frag_ProcessIp_1:
     mov     s_cdeCmdWd.byteCount,  IPV6_HEADER_LEN_BYTES
       
 l_ipv6Frag_ShiftCheck:    
-    qbeq    l_ipv6Frag_ProcessIp_none, s_ipFragCxt.nextHdr, IP_PROTO_NEXT_IPV6_FRAG      // Can't frag a fragged packet
+    // Can not frag a fragged packet
+    qbeq    l_ipv6Frag_ProcessIp_none, s_ipFragCxt.nextHdr, IP_PROTO_NEXT_IPV6_FRAG      
     qbeq    l_ipv6Frag_CheckNext,  s_ipFragCxt.nextHdr,   IP_PROTO_NEXT_IPV6_HOP_BY_HOP
     qbeq    l_ipv6Frag_CheckNext,  s_ipFragCxt.nextHdr,   IP_PROTO_NEXT_IPV6_ROUTE
     qbeq    l_ipv6Frag_CheckNext,  s_ipFragCxt.nextHdr,   IP_PROTO_NEXT_IPV6_DEST_OPT
@@ -2034,7 +2041,7 @@ l_ipv6Frag_HdrDone:
     add     r0, s_ipFragCxt.ipHdrLen,   IPV6_OPT_FRAG_EXTENSION_LEN_BYTES
     sub     s_ipFragCxt.payloadSize,    s_ipFragCxt.mtuSize,    r0    
 
-    // If the non-fragmentable portion consumes the full mtu, we can't frag
+    // If the non-fragmentable portion consumes the full mtu, we can not frag
     qbge    l_ipv6Frag_ProcessIp_none, s_ipFragCxt.mtuSize, r0
    
     // FragTotalSize (length of fragmentable data) = ipLen - ipHdrLen  
index ffa3662791dde02e1f5875bf987009d47d1d1cc0..f1321abedd7651bd6292a6bdb68d7658ff603c2e 100644 (file)
 f_c1ParseMac:
 
 #ifdef PASS_PROC_FIREWALL
+  qbbs  l_c1ParseMacEoam, s_runCxt.flag3.t_eoamEn  
     jmp fci_c1FirewallException
-#endif
-
-#ifdef PASS_PROC_L2
 
+l_c1ParseMacEoam:
+  // May need to rewind to beginning of the packet
+  // clear all the EOAM flags, they would be set per packet after EOAM parse
+#ifdef PASS_PROC_EOAM
+  //  clr  s_pktCxt6.eoamFlags.t_flag_ip
+  //  clr  s_pktCxt6.eoamFlags.t_flag_cipherPkt    
+  //  clr  s_pktCxt6.eoamFlags.t_flag_fDisableCnt    
+  //  clr  s_pktCxt6.eoamFlags.t_flag_knownOpcodes
+  //  clr  s_pktCxt6.eoamFlags.t_flag_8021ag
+    mov  s_pktCxt6.eoamFlags, 0
+    mov  s_pktCxt6.startOffsetEoam, 0
+#endif  // PASS_PROC_EOAM
+#endif  // PASS_PROC_FIREWALL
+
+#ifdef PASS_PROC_L2_PARSE
+
+#ifndef PASS_PROC_EOAM 
   set  s_pktCxt.hdrBitmask.SUBS_PA_BIT_HEADER_MAC
   
   // Verify and clear psFlags_errorFlags
@@ -84,7 +99,7 @@ f_c1ParseMac:
   wbs  s_flags.info.tStatus_CDEOutPacket
   mov  r1.b0, 0
   sbco  r1.b0,  cCdeOutPkt, OFFSET(s_pktDescr.psFlags_errorFlags),  SIZE(s_pktDescr.psFlags_errorFlags)
-  
+
   // record the input EMA port number (1-4)
   // Note: It is one-based port number where 0 indicates that the packet is not from CPSW
   //       We can simply add the EMAC port without mask since this is only place that this field may be updated from initial value (0)
@@ -95,7 +110,8 @@ f_c1ParseMac:
   //qbeq  l_c1ParseMac_1, s_pktDescr.srcId, 0
   qbbc  l_c1ParseMac_1, s_pktDescr.psFlags_errorFlags.t_psFlags_crcPresent  
       sub s_pktCxt.endOffset, s_pktCxt.endOffset, 4
-  
+#endif // PASS_PROC_EOAM
+
 l_c1ParseMac_1:  
   // update inport
   zero &s_l1View3bMac, SIZE(s_l1View3bMac)
@@ -115,17 +131,25 @@ l_c1ParseMac_1:
 
   // Write the entire view to the lut
   xout XID_LUT1V1,   s_l1View1aMac,    SIZE(s_l1View1aMac)
-
+  
+#ifndef PASS_PROC_EOAM 
   // cdeCmdWd.operation already has CDE_CMD_WINDOW_ADVANCE
   add  s_pktCxt.startOffset,   s_pktCxt.startOffset,  SIZE(s_macAddr)
+#else
+  add  s_pktCxt6.startOffsetEoam, s_pktCxt6.startOffsetEoam, SIZE(s_macAddr)
+  mov  s_cdeCmdWd.operation,  CDE_CMD_WINDOW_ADVANCE  
+#endif // PASS_PROC_EOAM
+
   mov  s_cdeCmdWd.byteCount,   SIZE(s_macAddr)
   xout XID_CDECTRL,            s_cdeCmdWd,            SIZE(s_cdeCmdWd)
   
 l_c1ParseMac_BM:  
   // Detect Broadcast & Multicast
   qbbc  l_c1ParseMac_BM_end,  s_macAddr.DstAddr_01.t_eth_multicast_ind
+#ifndef PASS_PROC_EOAM
        // assume it is muticast 
        set   s_pktCxt.flags.t_flag_multicast
+#endif     // PASS_PROC_EOAM  
        set   s_l1View3bMac.pktFlags.fL2Mcast
   
 l_c1ParseMac_BM_0:
@@ -134,10 +158,12 @@ l_c1ParseMac_BM_0:
   qbne  l_c1ParseMac_BM_end,  s_macAddr.DstAddr_01, r0
   qbne  l_c1ParseMac_BM_end,  s_macAddr.DstAddr_23, r0
   qbne  l_c1ParseMac_BM_end,  s_macAddr.DstAddr_45, r0 
+#ifndef PASS_PROC_EOAM  
         // It is broadcast
         clr   s_pktCxt.flags.t_flag_multicast
-        clr   s_l1View3bMac.pktFlags.fL2Mcast 
         set   s_pktCxt.flags.t_flag_broadcast
+#endif    // PASS_PROC_EOAM    
+        clr   s_l1View3bMac.pktFlags.fL2Mcast         
         set   s_l1View3bMac.pktFlags.fL2Bcast
 
 l_c1ParseMac_BM_end:
@@ -229,6 +255,7 @@ f_c1ProcessTagOrLen:
         qbne  l_c1ProcessTagOrLen9,  s_tagOrLen.asap,  0xaa
         qbne  l_c1ProcessTagOrLen9,  s_tagOrLen.ctrl,  0x03
         
+#ifndef PASS_PROC_EOAM        
         //Padding check ?
         qbbc l_c1ProcessTagOrLen00, s_runCxt.flag2.t_macPaddingChk
             // Is payload length >= 46?
@@ -260,9 +287,10 @@ l_c1ProcessTagOrLen000:
                 jmp l_c1ProcessTagOrLen9_1        
         
         
-l_c1ProcessTagOrLen00:        
+l_c1ProcessTagOrLen00:  
         // Mark 802.3
         set  s_pktCxt.hdrBitmask.SUBS_PA_BIT_HEADER_802_3
+#endif       // PASS_PROC_EOAM  
         set   s_l1View3bMac.pktFlags.f802p3
 
         //  Copy the new ethertype value to the common location
@@ -275,6 +303,7 @@ l_c1ProcessTagOrLen0:
 
     // Copy the ethertype value to LUT1 view 1
     mov  s_l1View1aMac.etherType,  s_tagOrLen.len
+
     xout XID_LUT1V1, s_l1View1aMac.etherType,  SIZE(s_l1View1aMac.etherType)
     xout XID_LUT1V3, s_l1View3bMac, SIZE(s_l1View3bMac)             
 
@@ -282,8 +311,12 @@ l_c1ProcessTagOrLen0:
     // cdeCmdWd.operation already has the value CDE_CMD_WINDOW_ADVANCE
     xout  XID_CDECTRL,   s_cdeCmdWd,          SIZE(s_cdeCmdWd)
 
+#ifndef PASS_PROC_EOAM 
     // Track the active parse
-    add  s_pktCxt.startOffset,  s_pktCxt.startOffset,  s_cdeCmdWd.byteCount
+    add  s_pktCxt.startOffset,  s_pktCxt.startOffset,  s_cdeCmdWd.byteCount 
+#else
+    add  s_pktCxt6.startOffsetEoam, s_pktCxt6.startOffsetEoam, s_cdeCmdWd.byteCount 
+#endif // PASS_PROC_EOAM
 
     // Determine the next header type based on the tag value
     // These are arranged in order of expected appearance to reduce cycles in
@@ -292,85 +325,81 @@ l_c1ProcessTagOrLen0:
 
     mov s_param.action,  SUBS_ACTION_LOOKUP
 
-.using  ipScope
-
     qbne  l_c1ProcessTagOrLen1,   s_tagOrLen.len,  s_ethertypes.ip
-        // Store DSCP in case we need DSCP priority routing
-        xin  XID_CDEDATA,  s_Ip,   OFFSET(s_Ip.totalLen) 
-        lsr s_pktCxt.priority, s_Ip.tos, 2
-        mov s_next.Hdr,  PA_HDR_IPv4
-        ret
-        
+        jmp  f_l2Ipv4Proc
+
 l_c1ProcessTagOrLen1:
 
     qbne l_c1ProcessTagOrLen2,    s_tagOrLen.len,  s_ethertypes.ipv6
-        // Store DSCP in case we need DSCP priority routing
-        xin  XID_CDEDATA,  s_Ipv6a,   OFFSET(s_Ipv6a.payloadLen)
-        lsr  s_pktCxt.priority,   s_Ipv6a.ver_tclass_flow.w2,  4
-        lsr  s_pktCxt.priority,   s_pktCxt.priority,           2
-        mov s_next.Hdr,  PA_HDR_IPv6
-        ret
-.leave ipScope
+        jmp f_l2Ipv6Proc
 
 
 l_c1ProcessTagOrLen2:
     qbne l_c1ProcessTagOrLen3,    s_tagOrLen.len,  s_ethertypes.vlan
         set s_l1View3bMac.pktFlags.fL2Vlan1
-        mov s_param.action,  SUBS_ACTION_PARSE
-        mov s_next.Hdr,      PA_HDR_VLAN
-        ret
-
+        // mov s_param.action,  SUBS_ACTION_PARSE
+        // mov s_next.Hdr,      PA_HDR_VLAN
+        // ret
+        jmp f_c1ParseVlan
 
 l_c1ProcessTagOrLen3:
 
     qbne l_c1ProcessTagOrLen4,    s_tagOrLen.len,   s_ethertypes.SpVlan
         set s_l1View3bMac.pktFlags.fL2Vlan2
-        mov s_param.action,  SUBS_ACTION_PARSE
-        mov s_next.Hdr,      PA_HDR_VLAN
-        ret
+        // mov s_param.action,  SUBS_ACTION_PARSE
+        // mov s_next.Hdr,      PA_HDR_VLAN
+        // ret
+        jmp f_c1ParseVlan
 
 l_c1ProcessTagOrLen4:
 
     qbne l_c1ProcessTagOrLen5,    s_tagOrLen.len,   s_ethertypes.mpls
-        mov s_param.action,  SUBS_ACTION_PARSE
-        mov s_next.Hdr,  PA_HDR_MPLS
-        ret
+        // mov s_param.action,  SUBS_ACTION_PARSE
+        // mov s_next.Hdr,  PA_HDR_MPLS
+        // ret
+        jmp f_c1ParseMpls        
 
 l_c1ProcessTagOrLen5:
 
     qbne l_c1ProcessTagOrLen6,    s_tagOrLen.len,   s_ethertypes.mplsMulti
-        mov s_param.action,  SUBS_ACTION_PARSE
-        mov s_next.Hdr,      PA_HDR_MPLS
-        ret
+        // mov s_param.action,  SUBS_ACTION_PARSE
+        // mov s_next.Hdr,      PA_HDR_MPLS
+        // ret
+        jmp f_c1ParseMpls
 
 l_c1ProcessTagOrLen6:
 
     qbne l_c1ProcessTagOrLen6_1,    s_tagOrLen.len,   s_ethertypes.PPPoE
-        mov s_param.action,  SUBS_ACTION_PARSE
-        mov s_next.Hdr,      PA_HDR_PPPoE
-        ret
+        // mov s_param.action,  SUBS_ACTION_PARSE
+        // mov s_next.Hdr,      PA_HDR_PPPoE
+        // ret
+        jmp f_c1ParsePPPoE
         
 l_c1ProcessTagOrLen6_1:
     qbne l_c1ProcessTagOrLen7,      s_tagOrLen.len,   s_ethertypes.PPPoE_discov
+#ifndef PASS_PROC_EOAM
     // Mark PPPoE packet and then pass through
    set  s_pktCxt.hdrBitmask.SUBS_PA_BIT_HEADER_PPPoE
+#endif    // PASS_PROC_EOAM
    set  s_l1View3bMac.pktFlags.fPPPoE //no match required
 
-l_c1ProcessTagOrLen7:  
+l_c1ProcessTagOrLen7:
+#ifndef PASS_PROC_EOAM
     // Unknown ethertype  proceed to lookup with next header type unknown.
     mov s_next.Hdr,         PA_HDR_UNKNOWN
-    
     // 802.1ag detection
     qbbc    l_c1ProcessTagOrLen8, s_runCxt.flag2.t_802_1agDet
+#endif     // PASS_PROC_EOAM
         // Common rule (draft and standard) 01 80 C2 XX XX XX or 01 80 C2 00 00 3X
         mov     r0.w0,  ETH_TYPE_802_1AG
         qbne    l_c1ProcessTagOrLen8,   s_tagOrLen.len, r0.w0   
         qbne    l_c1ProcessTagOrLen8,   s_macAddr.DstAddr_01.b1,    0x01  
         qbne    l_c1ProcessTagOrLen8,   s_macAddr.DstAddr_01.b0,    0x80
         qbne    l_c1ProcessTagOrLen8,   s_macAddr.DstAddr_23.b1,    0xc2
+#ifndef PASS_PROC_EOAM
         // draft or standard
         qbbc    l_c1ProcessTagOrLen7_1, s_runCxt.flag2.t_802_1agStd 
+#endif  // PASS_PROC_EOAM      
             qbne    l_c1ProcessTagOrLen8,   s_macAddr.DstAddr_23.b0,    0x00
             qbne    l_c1ProcessTagOrLen8,   s_macAddr.DstAddr_45.b1,    0x00
             and     r0.b0,  s_macAddr.DstAddr_45.b0,    0xF0
@@ -378,39 +407,420 @@ l_c1ProcessTagOrLen7:
         
 l_c1ProcessTagOrLen7_1:  
         // 802.1ag packet detected      
+#ifndef PASS_PROC_EOAM 
         //   Note: save one instruction since pl1Match is not important for exception route
         or   s_pktCxt.eId_portNum_nextHdr.b1,  s_pktCxt.eId_portNum_nextHdr.b1, EROUTE_802_1ag << PKT_EIDX_SHIFT
         jmp  l_c1ProcessTagOrLen9_2
+#else
+        // Record the opcde and meg level in packet context
+        set  s_pktCxt6.eoamFlags.t_flag_8021ag
+.using eoamScope        
+        // Store MEG Level and Opcode in case we need EOAM routing
+        xin  XID_CDEDATA,  s_Eoam,   SIZE(s_Eoam)
+        lsr  s_pktCxt6.megLevel, s_Eoam.megVer, EOAM_MEL_SHIFT
+        mov  s_pktCxt6.opcode,   s_Eoam.opcode
+
+        qbne l_c1ProcessTagOrLen7_2,  s_Eoam.opcode, PA_EOAM_OPCODE_MATCH1
+          set s_pktCxt6.eoamFlags.t_flag_knownOpcodes
+          jmp l_c1ProcessTagOrLen7_6
+          
+l_c1ProcessTagOrLen7_2:
+        qbne l_c1ProcessTagOrLen7_3,  s_Eoam.opcode, PA_EOAM_OPCODE_MATCH2
+          set s_pktCxt6.eoamFlags.t_flag_knownOpcodes
+          jmp l_c1ProcessTagOrLen7_6
+
+l_c1ProcessTagOrLen7_3:
+        qbne l_c1ProcessTagOrLen7_4,  s_Eoam.opcode, PA_EOAM_OPCODE_MATCH3
+          set s_pktCxt6.eoamFlags.t_flag_knownOpcodes
+          jmp l_c1ProcessTagOrLen7_6          
+
+l_c1ProcessTagOrLen7_4:
+        qbne l_c1ProcessTagOrLen7_5,  s_Eoam.opcode, PA_EOAM_OPCODE_MATCH4
+          set s_pktCxt6.eoamFlags.t_flag_knownOpcodes
+          jmp l_c1ProcessTagOrLen7_6  
+
+l_c1ProcessTagOrLen7_5:
+        qbne l_c1ProcessTagOrLen7_6,  s_Eoam.opcode, PA_EOAM_OPCODE_MATCH5
+          set s_pktCxt6.eoamFlags.t_flag_knownOpcodes
+          // jmp l_c1ProcessTagOrLen7_6          
+
+l_c1ProcessTagOrLen7_6:        
+.leave eoamScope        
+#endif // PASS_PROC_EOAM
 
 l_c1ProcessTagOrLen8:
+#ifndef PASS_PROC_EOAM
     xout XID_LUT1V3, s_l1View3bMac, SIZE(s_l1View3bMac)             
     ret
-
+#else
+.using  eoamScope
+    // Parse through the Exception protocols to disable count for match
+    // Load the protocol list from the exception table
+    // Check with each exception tabled protocol to force disable the counts
+
+    mov  r1, OFFSET_EOAM_EXCEPTION_TBL
+    // Load first two protocols to check
+    lbco r3,  PAMEM_CONST_EOAM_EXC_TABLE, r1, 4        
+    qbeq l_c1ProcessEoamExcProcComplete, r3.w2, 0
+      qbne l_c1ProcessEoamCheckProto1, r3.w2, s_tagOrLen.len
+      set s_pktCxt6.eoamFlags.t_flag_fDisableCnt       
+      jmp l_c1ProcessEoamExcProcComplete
+
+l_c1ProcessEoamCheckProto1:    
+    qbeq l_c1ProcessEoamExcProcComplete, r3.w0, 0
+      qbne l_c1ProcessEoamCheckProto2, r3.w0, s_tagOrLen.len
+      set s_pktCxt6.eoamFlags.t_flag_fDisableCnt    
+      jmp l_c1ProcessEoamExcProcComplete    
+
+l_c1ProcessEoamCheckProto2:
+    // point to next two exception protocols
+    add  r1,  r1, 4
+    lbco r3,  PAMEM_CONST_EOAM_EXC_TABLE, r1, 4        
+    qbeq l_c1ProcessEoamExcProcComplete, r3.w2, 0
+      qbne l_c1ProcessEoamCheckProto3, r3.w2, s_tagOrLen.len
+      set s_pktCxt6.eoamFlags.t_flag_fDisableCnt   
+      jmp l_c1ProcessEoamExcProcComplete
+
+l_c1ProcessEoamCheckProto3:      
+    qbeq  l_c1ProcessEoamExcProcComplete, r3.w0,0 
+      qbne l_c1ProcessEoamCheckProto4, r3.w0, s_tagOrLen.len
+      set s_pktCxt6.eoamFlags.t_flag_fDisableCnt   
+      jmp l_c1ProcessEoamExcProcComplete    
+
+l_c1ProcessEoamCheckProto4:
+    // point to next two exception protocols
+    add  r1,  r1, 4
+    lbco r3,  PAMEM_CONST_EOAM_EXC_TABLE, r1, 4        
+    qbeq l_c1ProcessEoamExcProcComplete, r3.w2, 0
+      qbne l_c1ProcessEoamCheckProto5, r3.w2, s_tagOrLen.len
+      set s_pktCxt6.eoamFlags.t_flag_fDisableCnt    
+      jmp l_c1ProcessEoamExcProcComplete
+
+l_c1ProcessEoamCheckProto5:      
+    qbeq  l_c1ProcessEoamExcProcComplete, r3.w0, 0 
+      qbne l_c1ProcessEoamCheckProto6, r3.w0, s_tagOrLen.len
+      set s_pktCxt6.eoamFlags.t_flag_fDisableCnt   
+      jmp l_c1ProcessEoamExcProcComplete    
+
+l_c1ProcessEoamCheckProto6:
+    // point to next two exception protocols
+    add  r1,  r1, 4
+    lbco r3,  PAMEM_CONST_EOAM_EXC_TABLE, r1, 4        
+    qbeq  l_c1ProcessEoamExcProcComplete, r3.w2,0
+      qbne l_c1ProcessEoamCheckProto1, r3.w2, s_tagOrLen.len
+      set s_pktCxt6.eoamFlags.t_flag_fDisableCnt   
+      jmp l_c1ProcessEoamExcProcComplete
+
+l_c1ProcessEoamCheckProto7:      
+    qbeq  l_c1ProcessEoamExcProcComplete, r3.w0, 0
+      qbne l_c1ProcessEoamExcProcComplete, r3.w0, s_tagOrLen.len
+      set s_pktCxt6.eoamFlags.t_flag_fDisableCnt    
+      //jmp l_c1ProcessEoamExcProcComplete    
+    
+l_c1ProcessEoamExcProcComplete:    
+     jmp  fci_c1Parse14
+.leave eoamScope    
+#endif // PASS_PROC_EOAM
 
 l_c1ProcessTagOrLen9:
     //  LLC/SNAP failure
     mov s_stats.value,  PA_STATS_UPDATE_REQ | PA_STATS_LLC_SNAP_FAIL 
-    
+
 l_c1ProcessTagOrLen9_1:    
     //   Note: save one instruction since pl1Match is not important for exception route
     or   s_pktCxt.eId_portNum_nextHdr.b1,  s_pktCxt.eId_portNum_nextHdr.b1, EROUTE_PARSE_FAIL << PKT_EIDX_SHIFT
+
 l_c1ProcessTagOrLen9_2:    
     mov  s_param.action,     SUBS_ACTION_EXIT
     ret 
-    
+
 #else
     // Error Handling
     mov  s_param.action,     SUBS_ACTION_EXIT
     ret 
 
-#endif    
+#endif    // PASS_PROC_L2_PARSE
 
     .leave lut1Scope
     .leave pktScope
     .leave cdeScope
     .leave macVlanScope
 
+#ifdef PASS_PROC_L2_PARSE
+// ************************************************************************************
+// * FUNCTION PURPSE: Process Ipv4 packet in L2 Parsing
+// ************************************************************************************
+// * DESCRIPTION: Process the IP packet, (EOAM: Also record the RA specific information)
+// *
+// *    On entry:
+// *                - CDE points at the IPV4 header
+// *                - cdeCmdWd.operation has CDE_CMD_WINDOW_ADVANCE
+// *                - param.action has SUBS_ACTION_PARSE
+// *
+// *    On exit:
+// *                - CDE points to the 1st byte after the ethertype (and llc/snap if present)
+// *                - param.action has the next action to take
+// *                - cdeCmdWd.operation has CDE_CMD_WINDOW_ADVANCE
+// *
+// *   Register Usage:  
+// * 
+// *   R0:    scratch
+// *   R1:    scratch
+// *   R2:      |  checkScope  
+// *   R3:              b0 - next header type  - pktScope
+// *   R4:    |  CDE commands     -  cdeScope
+// *   R5:    |                   -
+// *   R6:        |                                     | 
+// *   R7:        |                                     |
+// *   R8:        |                                     |  Note: Should not be overwritten by other prorocol header
+// *   R9:        |  LUT1 View   - lut1Scope
+// *   R10:       |                                     | 
+// *   R11:       |                                     |  LUT1 View3
+// *   R12:       |                                     |
+// *   R13:       |                                     |
+// *   R14:          |  (packet extended descriptor)                                        
+// *   R15:          |                                          
+// *   R16:          |                                          
+// *   R17:          |  LUT1 View  - lut1Scope                 
+// *   R18:          |                                  | 
+// *   R19:          |                                  |  ethertypes table
+// *   R20:          |                                  |
+// *   R21:          |                                  |
+// *   R22:     |     
+// *   R23:     |  Packet context - pktScope   
+// *   R24:     |
+// *   R25:     |
+// *   R26:     |
+// *   R27:     |
+// *   R28:  
+// *   R29:  c1RunContext (s_runCxt)                                -  Global Scope
+// *   R30:  w2-param.action  w0-function return address            -
+// *   R31:  System Flags (s_flags)                                 -
+// *
+// ***********************************************************************************/
+
+    .using  lut1Scope
+    .using  pktScope
+    .using  cdeScope
+    .using  ipScope
+
+f_l2Ipv4Proc: 
+
+#ifndef PASS_PROC_EOAM
+        // Store DSCP in case we need DSCP priority routing
+        xin  XID_CDEDATA,  s_Ip,   OFFSET(s_Ip.checksum) 
+        lsr s_pktCxt.priority, s_Ip.tos, 2
+        mov s_next.Hdr,  PA_HDR_IPv4
+        ret
+#else
+        xin  XID_CDEDATA,  s_Ip,   SIZE(s_Ip) 
+        set  s_runCxt.flags.t_l4Avil  
+        set  s_pktCxt6.eoamFlags.t_flag_ip 
+        // Setup RA Info
+        lbco  s_raInfo,  cCdeOutPkt,  SIZE(s_pktDescr) + 24,  SIZE(s_raInfo)
+        mov  s_raInfo.l3Offset, s_pktCxt6.startOffsetEoam   
+
+        // Fragmentation check
+        mov   r3.w0,    IPV4_FRAG_MASK
+        and   r3.w0,    s_Ip.fragOff,     r3.w0
+        qbeq  l_l2Ipv4Proc_2,  r3.w0, 0
+          clr  r3.w0.t_ipv4_frag_m
+          qbeq l_l2Ipv4Proc_1, r3.w0, 0
+          clr  s_runCxt.flags.t_l4Avil
+         
+l_l2Ipv4Proc_1: 
+        set s_raInfo.flags.t_ra_flag_reasm  
+        
+l_l2Ipv4Proc_2:
+
+        sbco  s_raInfo,  cCdeOutPkt,  SIZE(s_pktDescr) + 24,  SIZE(s_raInfo)
+        
+        // Check if it is ESP header as next Header, if so set Cipher Pkt Detected
+        qbne l_l2Ipv4Proc_3, s_Ip.protocol, IP_PROTO_NEXT_ESP
+          set s_pktCxt6.eoamFlags.t_flag_cipherPkt
+          
+l_l2Ipv4Proc_3:
+        qbne l_l2Ipv4Proc_4, s_Ip.protocol, IP_PROTO_NEXT_AUTH
+          set s_pktCxt6.eoamFlags.t_flag_cipherPkt 
+          
+l_l2Ipv4Proc_4:        
+        jmp fci_c1Parse14
+#endif
+    .leave lut1Scope
+    .leave pktScope
+    .leave cdeScope
+    .leave ipScope
+
+// ************************************************************************************
+// * FUNCTION PURPSE: Process Ipv6 packet in L2 Parsing
+// ************************************************************************************
+// * DESCRIPTION: Process the IP packet, (EOAM: Also record the RA specific information)
+// *
+// *    On entry:
+// *                - CDE points at the IPV4 header
+// *                - cdeCmdWd.operation has CDE_CMD_WINDOW_ADVANCE
+// *                - param.action has SUBS_ACTION_PARSE
+// *
+// *    On exit:
+// *                - CDE points to the 1st byte after the ethertype (and llc/snap if present)
+// *                - param.action has the next action to take
+// *                - cdeCmdWd.operation has CDE_CMD_WINDOW_ADVANCE
+// *
+// *   Register Usage:  
+// * 
+// *   R0:    scratch
+// *   R1:    scratch
+// *   R2:      |  checkScope  
+// *   R3:              b0 - next header type  - pktScope
+// *   R4:    |  CDE commands     -  cdeScope
+// *   R5:    |                   -
+// *   R6:        |                                     | 
+// *   R7:        |                                     |
+// *   R8:        |                                     |  Note: Should not be overwritten by other prorocol header
+// *   R9:        |  LUT1 View   - lut1Scope
+// *   R10:       |                                     | 
+// *   R11:       |                                     |  LUT1 View3
+// *   R12:       |                                     |
+// *   R13:       |                                     |
+// *   R14:          |  (packet extended descriptor)                                        
+// *   R15:          |                                          
+// *   R16:          |                                          
+// *   R17:          |  LUT1 View  - lut1Scope                 
+// *   R18:          |                                  | 
+// *   R19:          |                                  |  ethertypes table
+// *   R20:          |                                  |
+// *   R21:          |                                  |
+// *   R22:     |     
+// *   R23:     |  Packet context - pktScope   
+// *   R24:     |
+// *   R25:     |
+// *   R26:     |
+// *   R27:     |
+// *   R28:  
+// *   R29:  c1RunContext (s_runCxt)                                -  Global Scope
+// *   R30:  w2-param.action  w0-function return address            -
+// *   R31:  System Flags (s_flags)                                 -
+// *
+// ***********************************************************************************/
+
+    .using  lut1Scope
+    .using  pktScope
+    .using  cdeScope
+    .using  ipScope
+
+// Local structure defintion and assignment    
+.struct struct_ipv6Frag_ctrl
+  .u8    nextHdr
+  .u8    hdrLen
+  .u16   rsvd
+.ends
+
+.assign struct_ipv6Frag_ctrl,  r6,     r6,    s_ipv6Frag_ctrl
+
+f_l2Ipv6Proc:
+#ifndef PASS_PROC_EOAM
+        // Store DSCP in case we need DSCP priority routing
+        xin  XID_CDEDATA,  s_Ipv6a,   OFFSET(s_Ipv6a.payloadLen)
+        lsr  s_pktCxt.priority,   s_Ipv6a.ver_tclass_flow.w2,  4
+        lsr  s_pktCxt.priority,   s_pktCxt.priority,           2
+        mov s_next.Hdr,  PA_HDR_IPv6
+        ret
+#else
+        set  s_pktCxt6.eoamFlags.t_flag_ip
+        set  s_runCxt.flags.t_l4Avil 
+
+        // Setup RA Info
+        lbco s_raInfo,  cCdeOutPkt,  SIZE(s_pktDescr) + 24,  SIZE(s_raInfo)
+        mov  s_raInfo.l3Offset, s_pktCxt6.startOffsetEoam  
+
+        add  s_raInfo.ipv6NextOffset, s_pktCxt6.startOffsetEoam, OFFSET(s_Ipv6a.next)          
+        add  s_pktCxt6.startOffsetEoam,   s_pktCxt6.startOffsetEoam,  IPV6_HEADER_LEN_BYTES
+   
+        qbbs  l_l2Ipv6Proc_1_0, s_pktCxt.flags.t_flag_cascaded_forwarding
+        qbbc  l_l2Ipv6Proc_1_0, s_runCxt.flag2.t_raEn
+          sbco  s_raInfo,  cCdeOutPkt,  SIZE(s_pktDescr) + 24,  SIZE(s_raInfo)
+          jmp  l_l2Ipv6Proc_1
+l_l2Ipv6Proc_1_0: 
+   
+        // Read in the IPv6 header.
+        xin  XID_CDEDATA,  s_Ipv6a,   SIZE(s_Ipv6a)
+
+        // Pass 1 operation
+        // Fragmentation detection: Is there fragment header?
+        // Get to nextHdr field in IPv6 header
+        // Load nextHdr and hdrLen field
+        // Check to see if nextHdr is an extension header
+        zero    &s_ipv6Frag_ctrl,     SIZE(s_ipv6Frag_ctrl)
+        mov     s_ipv6Frag_ctrl.nextHdr,  s_Ipv6a.next 
+        mov     s_ipv6Frag_ctrl.hdrLen,   IPV6_HEADER_LEN_BYTES
+
+        //  Advance past the ipv6 main header
+        mov  s_cdeCmdWd.operation,   CDE_CMD_WINDOW_ADVANCE    
+l_l2Ipv6Proc_exthdrCheck:    
+        mov     s_cdeCmdWd.byteCount,   s_ipv6Frag_ctrl.hdrLen
+        xout    XID_CDECTRL,            s_cdeCmdWd,                  SIZE(s_cdeCmdWd)
+
+        qbeq    l_l2Ipv6Proc_fragfound,   s_ipv6Frag_ctrl.nextHdr, IP_PROTO_NEXT_IPV6_FRAG      
+        qbeq    l_l2Ipv6Proc_exthdrNext,  s_ipv6Frag_ctrl.nextHdr, IP_PROTO_NEXT_IPV6_HOP_BY_HOP
+        qbeq    l_l2Ipv6Proc_exthdrNext,  s_ipv6Frag_ctrl.nextHdr, IP_PROTO_NEXT_IPV6_ROUTE
+        qbeq    l_l2Ipv6Proc_exthdrNext,  s_ipv6Frag_ctrl.nextHdr, IP_PROTO_NEXT_IPV6_DEST_OPT
+        qbeq    l_l2Ipv6Proc_exthdrNext,  s_ipv6Frag_ctrl.nextHdr, IP_PROTO_NEXT_IPV6_NO_NEXT
+        jmp     l_l2Ipv6Proc_exthdrDone   
+    
+l_l2Ipv6Proc_exthdrNext:        
+        // Read the next header
+        xin     XID_CDEDATA, s_ipv6Frag_ctrl, SIZE(s_ipv6Frag_ctrl)
+        
+        // adjust the offset for next one
+        add     s_ipv6Frag_ctrl.hdrLen,    s_ipv6Frag_ctrl.hdrLen, 1
+        lsl     s_ipv6Frag_ctrl.hdrLen,    s_ipv6Frag_ctrl.hdrLen, 3
+        mov     s_raInfo.ipv6NextOffset,   s_pktCxt6.startOffsetEoam
+        add     s_pktCxt6.startOffsetEoam, s_pktCxt6.startOffsetEoam,  s_ipv6Frag_ctrl.hdrLen
+        
+        jmp     l_l2Ipv6Proc_exthdrCheck
+    
+l_l2Ipv6Proc_fragfound:
+
+        // The fragmentation header is always 8 bytes. The whole 
+        // header is read here, but only the 1st byte is used
+        xin  XID_CDEDATA,           s_Ipv6Frag,      SIZE(s_Ipv6Frag) 
+   
+        lsr   r3.w0,   s_Ipv6Frag.fragnFlag,     IPV6_FRAG_OFF_SHIFT
+        qbeq  l_l2Ipv6Proc_ExtFrag1, r3.w0, 0
+            clr  s_l1View3bIpv6.pktFlags.fL3IpContainL4
+            clr  s_runCxt.flags.t_l4Avil
+l_l2Ipv6Proc_ExtFrag1:
+        mov  s_raInfo.ipv6FragOffset, s_pktCxt6.startOffsetEoam
+        set  s_raInfo.flags.t_ra_flag_reasm
+
+l_l2Ipv6Proc_exthdrDone: 
+        qbbc  l_l2Ipv6Proc_1, s_runCxt.flag2.t_raEn
+          // wbs   s_flags.info.tStatus_CDEOutPacket
+           sbco  s_raInfo,  cCdeOutPkt,  SIZE(s_pktDescr) + 24,  SIZE(s_raInfo)
+  
+          //pass through
+        
+l_l2Ipv6Proc_1: 
+        // Check if it is ESP header as next Header, if so set Cipher Pkt Detected
+        qbne l_l2Ipv6Proc_2, s_Ipv6a.next, IP_PROTO_NEXT_ESP
+          set s_pktCxt6.eoamFlags.t_flag_cipherPkt
+          
+l_l2Ipv6Proc_2:   
+        // Check if it is AH header as next Header, if so set Cipher Pkt Detected
+        qbne l_l2Ipv6Proc_3, s_Ipv6a.next, IP_PROTO_NEXT_AUTH
+          set s_pktCxt6.eoamFlags.t_flag_cipherPkt 
+          
+l_l2Ipv6Proc_3:   
+        jmp fci_c1Parse14
+
+#endif
+        
+    .leave lut1Scope
+    .leave pktScope
+    .leave cdeScope
+    .leave ipScope
 
+#endif    
 // ***********************************************************************************
 // * FUNCTION PURPOSE: Parse VLAN tags
 // ***********************************************************************************
@@ -475,9 +885,8 @@ l_c1ProcessTagOrLen9_2:
     .using macVlanScope
 
 f_c1ParseVlan:
-
-#ifdef PASS_PROC_L2
-
+#ifdef PASS_PROC_L2_PARSE
+#ifndef PASS_PROC_EOAM
   set  s_pktCxt.hdrBitmask.SUBS_PA_BIT_HEADER_VLAN
 
   // Check agains the max
@@ -492,12 +901,16 @@ f_c1ParseVlan:
 l_c1ParseVlan1:
   // Inc the vlan count
   add  s_pktCxt.protCount,   s_pktCxt.protCount,    PROT_COUNT_VLAN_STEP
-   
+#endif
+
   // Read in the pri/cfi/vlanId fields. Mask out pri/cfi
   xin  XID_CDEDATA,         s_vtag.tag,           SIZE(s_vtag.tag)
+
+#ifndef PASS_PROC_EOAM  
   // record vlan priority 
   and  s_pktCxt.vlanPri_vLink.b1,    s_vtag.tag.b1, PKT_VALN_PRI_MASK
-  
+#endif
+
   qbbc l_c1ParseVlan2, s_l1View3bMac.pktFlags.fL2Vlan1
     // VLAN2 always appear in front of VLAN1
     mov  s_l1View3bMac.vlanId1,     s_vtag.tag
@@ -514,8 +927,11 @@ l_c1ParseVlan2:
     
     // pass through       
 l_c1ParseVlan3:
+#ifndef PASS_PROC_EOAM
   add s_pktCxt.startOffset, s_pktCxt.startOffset, SIZE(s_vtag.tag)
-
+#else
+  add  s_pktCxt6.startOffsetEoam, s_pktCxt6.startOffsetEoam, SIZE(s_vtag.tag)
+#endif
   // Scroll the CDE past the tag to point to the next ethertype candidate
   mov  s_cdeCmdWd.byteCount,  SIZE(s_vtag.tag)
   xout XID_CDECTRL,           s_cdeCmdWd,         SIZE(s_cdeCmdWd)
@@ -590,12 +1006,12 @@ l_c1ParseVlan3:
     .using mplsScope
 
 f_c1ParseMpls:
+#ifdef PASS_PROC_L2_PARSE
 
-#ifdef PASS_PROC_L2
-
+#ifndef PASS_PROC_EOAM
    set s_pktCxt.hdrBitmask.SUBS_PA_BIT_HEADER_MPLS
    mov s_stats.value,  PA_STATS_UPDATE_REQ | PA_STATS_MPLS_PKTS
-
+#endif
    xin  XID_CDEDATA,  s_mpls,  SIZE(s_mpls)   // Read in a single tag
 
    // The tag is the 20 MSBs of the 32 bit word
@@ -604,7 +1020,11 @@ f_c1ParseMpls:
 
    set  s_l1View3bMac.pktFlags.fMpls
    
+#ifndef PASS_PROC_EOAM   
    add  s_pktCxt.startOffset,   s_pktCxt.startOffset,  SIZE(s_mpls.tagTtl)
+#else
+   add  s_pktCxt6.startOffsetEoam, s_pktCxt6.startOffsetEoam, SIZE(s_mpls.tagTtl)
+#endif
 
    mov   s_cdeCmdWd.byteCount,  SIZE(s_mpls.tagTtl)
    xout  XID_CDECTRL,           s_cdeCmdWd,           SIZE(s_cdeCmdWd)
@@ -618,22 +1038,28 @@ f_c1ParseMpls:
    qbbc  l_c1ParseMpls1,  s_mpls.tagTtl.t_s
        lsr  r0.b0,  s_mpls.ipVer,   4
        qbne l_c1ParseMpls0,  r0.b0,   4
-           mov   s_next.hdr,          PA_HDR_IPv4
-           ret
+           //mov   s_next.hdr,          PA_HDR_IPv4
+           //ret
+           jmp  f_l2Ipv4Proc
 
 l_c1ParseMpls0:
        qbne l_c1ParseMpls1,  r0.b0,   6
-           mov   s_next.hdr,          PA_HDR_IPv6
-           ret
+           // mov   s_next.hdr,          PA_HDR_IPv6
+           // ret
+           jmp  f_l2Ipv6Proc
     
      
     // If there is more then one label or there is one label but the
     // next header doesnt look like IP, run the current packet through the LUT
 l_c1ParseMpls1:
+#ifndef PASS_PROC_EOAM
     mov  s_next.hdr,      PA_HDR_UNKNOWN
     ret
+#else
+    jmp fci_c1Parse14
+#endif
     
-#endif    
+#endif    //PASS_PROC_L2_PARSE
       
     .leave pktScope
     .leave cdeScope
@@ -703,7 +1129,7 @@ l_c1ParseMpls1:
 
 f_c1ParsePPPoE:
 
-#ifdef PASS_PROC_L2
+#ifdef PASS_PROC_L2_PARSE
    xin  XID_CDEDATA,  s_pppoe,  SIZE(s_pppoe)   // Read in the PPPoE header
    
    // Protocol header error check
@@ -712,17 +1138,21 @@ f_c1ParsePPPoE:
      qbne  l_c1ParsePPPoE_3, s_pppoe.code,    PPPoE_CODE_SESSION
    
 l_c1ParsePPPoE_0:
+#ifndef PASS_PROC_EOAM
    // Mark PPPoE
    set  s_pktCxt.hdrBitmask.SUBS_PA_BIT_HEADER_PPPoE
+#endif   
    set  s_l1View3bMac.pktFlags.fPPPoE
    
     mov  s_l1View1aMac.PPPoE_SessionId,  s_pppoe.sessionId
     xout XID_LUT1V1, s_l1View1aMac.PPPoE_SessionId,  SIZE(s_l1View1aMac.PPPoE_SessionId)
    
-   
-   
+#ifndef PASS_PROC_EOAM  
    add s_pktCxt.startOffset,    s_pktCxt.startOffset,  OFFSET(s_pppoe.prot)
    add s_pktCxt.endOffset,      s_pktCxt.startOffset,  s_pppoe.len
+#else
+   add  s_pktCxt6.startOffsetEoam, s_pktCxt6.startOffsetEoam, OFFSET(s_pppoe.prot)
+#endif
 
    // Always perform a lookup after finding an PPPoE headeer
    mov  s_param.action,  SUBS_ACTION_LOOKUP
@@ -731,34 +1161,49 @@ l_c1ParsePPPoE_0:
    mov   r0.w0, PPPoE_PROT_IPv4           
 
    qbne  l_c1ParsePPPoE_1,  s_pppoe.prot, r0.w0
+#ifndef PASS_PROC_EOAM    
        add   s_pktCxt.startOffset,    s_pktCxt.startOffset, SIZE(s_pppoe.prot)
-       mov   s_next.hdr,          PA_HDR_IPv4
-       ret
+#else
+       add   s_pktCxt6.startOffsetEoam, s_pktCxt6.startOffsetEoam, SIZE(s_pppoe.prot)
+#endif       
+       //mov   s_next.hdr,          PA_HDR_IPv4
+       //ret
+       jmp  f_l2Ipv4Proc
 
 l_c1ParsePPPoE_1:
    mov   r0.w0, PPPoE_PROT_IPv6
    qbne  l_c1ParsePPPoE_2,  s_pppoe.prot, r0.w0
+#ifndef PASS_PROC_EOAM    
        add   s_pktCxt.startOffset,    s_pktCxt.startOffset, SIZE(s_pppoe.prot)
-       mov   s_next.hdr,          PA_HDR_IPv6
-       ret
+#else
+       add  s_pktCxt6.startOffsetEoam, s_pktCxt6.startOffsetEoam, SIZE(s_pppoe.prot)
+#endif       
+       // mov   s_next.hdr,          PA_HDR_IPv6
+       // ret
+       jmp  f_l2Ipv6Proc       
      
     // Unsupported protocol
-    // next header doesn't look like IP;  Exception route
+    // next header does not look like IP;  Exception route
 l_c1ParsePPPoE_2:
+#ifndef PASS_PROC_EOAM
     or     s_pktCxt.eId_portNum_nextHdr.b1, s_pktCxt.eId_portNum_nextHdr.b1, EROUTE_PPPoE_CTRL << PKT_EIDX_SHIFT      
+#endif    
     jmp l_c1ParsePPPoE_4
     
     // PPPoE header Error: Exception route
 l_c1ParsePPPoE_3:
+#ifndef PASS_PROC_EOAM
     or     s_pktCxt.eId_portNum_nextHdr.b1, s_pktCxt.eId_portNum_nextHdr.b1, EROUTE_PPPoE_FAIL << PKT_EIDX_SHIFT      
-    
     // pass through
 l_c1ParsePPPoE_4:    
     // Common Error handling 
     mov s_param.action, SUBS_ACTION_EXIT
     mov  s_next.hdr,    PA_HDR_UNKNOWN
     ret
-    
+#else
+l_c1ParsePPPoE_4:  
+    jmp fci_c1Parse14
+#endif
 #endif    
       
     .leave pktScope
@@ -1734,7 +2179,7 @@ f_c1ParseIpv6:
 
 #ifdef PASS_PROC_L3
 
-// IPv6 Reassembly-assisted code does not run at PDSP of Frirewall and Reassembly
+// IPv6 Reassembly-assisted code does not run at PDSP of Firewall and Reassembly
 #ifndef PASS_PROC_FIREWALL
 
     // Reassembly-assisted operation
@@ -3533,7 +3978,7 @@ fci_c1FirewallException:
     ret  
 #endif    
 
-    .leave pktScope
+    .leave pktScope    
     
     
 
index 95b7524d80fae8dca58264dc1b8e4deb6d98830f..76aaba37c79a9e934aa87162a653ff97ed53f82e 100644 (file)
@@ -85,6 +85,7 @@
         .assign     struct_l1FcInfo,            r8,   r8,   s_l1fFc                     // l1f for Flow Cache entry
         .assign     struct_paForward,           r9,   r9,   s_matchForward
         .assign     struct_paForwardHost,       r10,  r12,  s_matchForward_host
+        .assign     struct_paForwardEoam,       r10,  r12,  s_matchForward_eoam        
         .assign     struct_paForwardSa,         r10,  r12,  s_matchForward_sa
         .assign     struct_paForwardSrio,       r10,  r12,  s_matchForward_srio
         .assign     struct_paForwardEth,        r10,  r12,  s_matchForward_eth
         .assign     struct_pasPktContext3,      r22,    r27,    s_pktCxt3
         .assign     struct_pasPktContext4,      r22,    r27,    s_pktCxt4
         .assign     struct_pasPktContext5,      r22,    r27,    s_pktCxt5
+        .assign     struct_pasPktContext6,      r22,    r27,    s_pktCxt6
         .assign     struct_pasTxPktContext,     r22,    r27,    s_txPktCxt
         .assign     struct_pasTxPktContext2,    r22,    r27,    s_txPktCxt2
         .assign     struct_pasTxPktContext3,    r22,    r27,    s_txPktCxt3
         .assign struct_ipTrafficFlow,  r11,    r13,    s_ipTf
         .assign struct_ipReassmContext,r14,    r17,    s_ipReassmCxt 
     .leave ipScope 
+
+    .enter eoamScope
+        .assign struct_eoam,           r6,     r6,     s_Eoam
+    .leave eoamScope
     
     .enter mplsScope
         .assign struct_mpls,           r14,    r15,    s_mpls
         .assign struct_paAclCfg,                r15,    r15,    s_paComInAcl                 // Must follow paComOutAcl
         .assign struct_paRaCfg,                 r16,    r16,    s_paComRa                    // Must follow paComInAcl
         .assign struct_paRaCfg,                 r17,    r17,    s_paComRa2                   // Must follow paComRa
-        
+        .assign struct_eoamCfg,                 r14,    r21,    s_eoamCfg                    // Must follow paComRa2
+        .assign struct_timeAccConstants,        r15,    r17,    s_timeAccConstants           // Split up of s_eoamCfg structure
+        .assign struct_eoamExceptionTbl,        r18,    r21,    s_eoamExceptionTbl           // Split up of s_eoamCfg structure
+        .assign struct_timeConvConst,           r14,    r16,    s_timeConvConst              // Alias to map multiplication          
         .assign struct_paSystemConfig,          r10,    r10,    s_paCmdSysCfg                // Must follow paCmd1
         .assign struct_paComEroute,             r11,    r11,    s_paComEroute                // Must follow paCmdSysCfg
         .assign struct_paFwdPlace,              r14,    r17,    s_paComErouteFwd
                .assign struct_paComEQoS,               r14,    r14,    s_paComEQoS
                .assign struct_paComIfEQoS,             r15,    r16,    s_paComIfEQoS
                .assign struct_paComIfEQoSRouteOffset,  r17,    r20,    s_paComIfEQoSRouteOffset 
+        .assign struct_timeStampOffsetCfg,      r14,    r15,    s_timeStampOffsetCfg
         .assign struct_paFwdPlace,              r16,    r19,    s_paComDrouteFwd           
         .assign struct_pktDscFine,              r6,     r13,    s_pktDescr                   // Must match same value in parsescope
         .assign struct_pktDscCpsw,              r6,     r13,    s_pktDescrCpsw               // Must match same value in parsescope
index 2c91820dab411fda523895b072eb2153b25adece..80ff5b51d711fa5503fc40e8bd83dd9228a2ae1c 100644 (file)
 #define VLAN_VID_MASK           0x0FFF
 #define VLAN_VID_B1_MASK        0x0F 
 
-
+// Ethernet OAM 
+.struct struct_eoam
+     .u8 megVer
+     .u8 opcode
+     .u16 rsvd
+.ends
+#define EOAM_MEL_SHIFT          5
 #endif // _PDSP_ETHPROTO_H
 
 
index a8afdd8152df30d018eff48a15b5ea6f2791a6a9..f90dd9072fd20ea6a3c8c3eb772845bc7050c517 100644 (file)
 //                  |                                          |      c15 
 //     0xFFF8:0400  |  User-defined Statistics Control blocks  |      OFFSET_USR_STATS_CB   // Post Processing (Used by PDSP0 only)  
 //                  |        512 entries of size 2 bytes       |      
+//                  |                                          |      c16
+//     0xFFF8:0400  |  Roll over Time Accumulation Constants   |      OFFSET_RO_TIME_ACC_CONSTANTS    // Ingress0 PDSP0
+//                  |        12 bytes                          |        
+//                  |  Ethernet OAM Exception Table            |      OFFSET_EOAM_EXCEPTION_TBL    // Ingress0 PDSP1
+//                  |        16 bytes                          |      
 //                  |                                          |
 //                  |                                          |      c16
 //     0xFFF8:0800  |  User-defined Statistics Counter blocks  |      OFFSET_USR_STATS_64B_COUNTERS // replaced by the statistics engine
 //                  |  MAC Padding Config       4 bytes        |                                  OFFSET_MAC_PADDING_CFG
 //                  |  Outer IP ACL Config      4 bytes        |                                  OFFSET_OUT_IP_ACL_CFG
 //                  |  Inner IP ACL Config      4 bytes        |                                  OFFSET_IN_IP_ACL_CFG
-//                  |  System Timestamp Tmp     8 bytes        |                                  OFFSET_TIMESTAMP_TMP     = 0xE0
-//                  |  System Timestamp         8 bytes        |                                  OFFSET_SYSTEM_TIMESTAMP  = 0xF0
-//                  |  IPv6 Fragmentation ID    4 bytes        |                                  OFFSET_IPV6_FRAG_ID      = 0xF8
+//                  |  Raw Timestamp Acc       12 bytes        |                                  OFFSET_RAW_TIME_ACC        = 0xD0
+//                  |  System Timestamp Tmp     8 bytes        |                                  OFFSET_TIMESTAMP_TMP       = 0xE0
+//                  |  System Timestamp         8 bytes        |                                  OFFSET_SYSTEM_TIMESTAMP    = 0xF0
+//                  |  IPv6 Fragmentation ID    4 bytes        |                                  OFFSET_IPV6_FRAG_ID        = 0xF8
 //                  |                                          |
 //     0xFF02:0200  |  Configurable Exception Routing          |      c20 - all pdsps  EROUTE     // Global Memory 
 //                  |     32 entries of size 16 bytes          |
 //                  |      of 32 bytes                         |
 //     0xFFF8:10c0  |  Modify PDSP 0 crc cmd. 1 Entry          |                                   OFFSET_INSERT_CRC
 //                  |      of 8 bytes                          |
+//     0xFFF8:10d0  |  Time Convertion scratch. 1 Entry        |                                   OFFSET_CONVERT_TIMESTAMP
+//                  |      of 12 bytes                         |                                    
 //     0xFFF8:10e0  |  Modify PDSP 0 timestamp cmd             |                                   OFFSET_REPORT_TIMESTAMP
 //                  |      8 bytes                             |
 //     0xFFF8:10f0  |  Modify PDSP 0 Ip Frag cmd               |                                   OFFSET_IP_FRAG
 //
 // Constants
 //
-//#define cLRAM1                      c0      // Pointer to local RAM block 1
-//#define cLRAM2                      c1      // Pointer to local RAM block 2
-//#define cLRAM3                      c2      // Pointer to local RAM block 3
-//#define cLRAM4                      c3      // Pointer to local RAM block 4
-//#define cMailbox                    c4      // Pointer to Mailbox Registers
-//#define cCdeInPkt                   c6      // Pointer to CDE new packet input region
-//#define cCdeOutPkt                  c7      // Pointer to CDE new packet output region
-//#define cCdeHeldPkt                 c8      // Pointer to CDE held packet region
-//#define cTimer                      c9      // Pointer to PDSP Timer (PDSP specific)
-//#define cLut1Regs                   c10     // Pointer to LUT1 Registers (not used)
-//#define cLut2Regs                   c11     // Pointer to LUT2 Registers
-//#define cStatistics                 c12     // Pointer to statistics block (check stats operation)
-//#define cIntStatus                  c13     // Pointer to INTD Status Reg   (not used)
-//#define cIntCount                   c14     // Pointer to INTD Count Registers (not used)
-
 // Classifier  LUT1
 //#define PAMEM_CONST_PDSP_LUT1_INFO      c0    
+//#define PAMEM_CONST_PDSP_EOAM_TS_CTX    c12
+//#define PAMEM_CONST_PDSP_EOAM_STATS_CFG c13
 //#define PAMEM_CONST_PDSP_CXT            c14    
-//#define PAMEM_CONST_TF_TABLE            c16
+//#define PAMEM_CONST_EOAM                c16
+//#define PAMEM_CONST_RO_TIME_ACC_TABLE   c16
 //#define PAMEM_CONST_IP_REASSEM_CONTEXT  c17
 //#define PAMEM_CONST_IP_PROTO            c18
 //#define PAMEM_CONST_CUSTOM              c19
 #define PAMEM_CONST_TF_TABLE            c16
 #define PAMEM_CONST_IP_REASSEM_CONTEXT  c17
 
+// Roll Over Time accumulation scratch pad for Ingress 0: 0xFFF80400
+#define PAMEM_CONST_RO_TIME_ACC_INGRESS0   0xFF480400
+#define PAMEM_CONST_RO_TIME_ACC_TABLE      c16
+#define OFFSET_RO_TIME_ACC_CONSTANTS         0
+
+// Ethernet OAM statistics count exception table Ingress 0: 0xFFF80400
+#define PAMEM_CONST_EOAM_EXC_TABLE         c16
+#define OFFSET_EOAM_EXCEPTION_TBL           12
+
+
 // Scratch memory 2 (0xFFF80A00)
 // IP traffic flow and reassembly control blocks
 //#define OFFSET_TEMP_BUFFER1             0xF00        // 0xFFF84000 based (temporary storage
 #define OFFSET_MAC_PADDING_CFG          OFFSET_IPSEC_NAT_T_CFG + 4
 #define OFFSET_OUT_IP_ACL_CFG           OFFSET_MAC_PADDING_CFG + 4
 #define OFFSET_IN_IP_ACL_CFG            OFFSET_OUT_IP_ACL_CFG + 4
+#define OFFSET_RAW_TIME_ACC             0xD0
 #define OFFSET_TIMESTAMP_TMP            0xE0
 #define OFFSET_SYS_TIMESTAMP            0xF0
 #define OFFSET_IPV6_FRAG_ID             0xF8
 #define OFFSET_EQOS_CFG_EG_DEF_PRI      OFFSET_DEFAULT_ROUTE_CFG_BASE - 4 
 
 // Modify PDSP Egress0, PDSP0 (0xFFF81000)
+#define PAMEM_CONST_MODIFY_EGRESS0      0xFFA81000
 #define PAMEM_CONST_MODIFY              c17         
 #define OFFSET_INSERT_CHKSUM            0
 #define OFFSET_BLIND_PATCH              0x40
 #define OFFSET_INSERT_CRC               0xc0
+#define OFFSET_CONVERT_TIMESTAMP        0xd0
 #define OFFSET_REPORT_TIMESTAMP         0xe0
 #define OFFSET_IP_FRAG                  0xf0
 #define OFFSET_PATCH_MSG_LEN            0xf8
index ee64a430a46a9bf43a52f3c7b836e03a795e6f22..7aec54f843a077bfab5ce3f917fc75ba233f54cd 100644 (file)
@@ -71,6 +71,8 @@
 //                  |      of 32 bytes                         |
 //     0xFFF8:10c0  |  Modify PDSP 0 crc cmd. 1 Entry          |                                   OFFSET_INSERT_CRC
 //                  |      of 8 bytes                          |
+//     0xFFF8:10d0  |  Time Convertion scratch. 1 Entry        |                                   OFFSET_CONVERT_TIMESTAMP
+//                  |      of 12 bytes                         |   
 //     0xFFF8:10e0  |  Modify PDSP 0 timestamp cmd             |                                   OFFSET_REPORT_TIMESTAMP
 //                  |      8 bytes                             |
 //     0xFFF8:10f0  |  Modify PDSP 0 Ip Frag cmd               |                                   OFFSET_IP_FRAG
 //#define OFFSET_INSERT_CHKSUM            0
 //#define OFFSET_BLIND_PATCH              0x40
 //#define OFFSET_INSERT_CRC               0xc0
+//#define OFFSET_CONVERT_TIMESTAMP        0xd0
 //#define OFFSET_REPORT_TIMESTAMP         0xe0
 //#define OFFSET_IP_FRAG                  0xf0
 //#define OFFSET_PATCH_MSG_LEN            0xf8
index ba20198d222b420c62e332f814d083176469c5b3..50d0c3628ed5c12729c0a0e2f0c9bdacf12ac7b4 100644 (file)
 #define t_pa_ef_valid_rec_lvl3  t2
 #define t_pa_ef_valid_rec_lvl4  t3
 
+// Packet routing info for EOAM packets sent to HOST
+.struct struct_paForwardEoam
+    .u32  context
+    .u16  statsIndex 
+    .u8   megLevel    
+    .u8   rsvd1
+    .u32  rsvd2
+.ends
+
 // Packet routing info for packets dropped
 .struct struct_paDiscard
     .u32  rsvd1
 #define PA_FORWARD_TYPE_SA_DIRECT   5
 #define PA_FORWARD_TYPE_DISCARD     6
 #define PA_FORWARD_TYPE_EFLOW       7
+#define PA_FORWARD_TYPE_EOAM        8
 
 #define t_pa_fwd_type_ctrl_use_loc_dma      t7
 #define PA_FORWARD_TYPE_MASK                0x0F
 #define t_paCmdConfigValidInAcl         t8
 #define t_paCmdConfigValidOutRa         t9
 #define t_paCmdConfigValidInRa          t10
+#define t_paCmdConfigValidEoam          t11
 
 // Command sizes. The assembler can't do all the SIZE(x)+SIZE(y)+... because of line size limitations
 // Command size in 32 bit words is:  struct_paCommand:         4
 #define PA_SYSTEM_CONFIG_CODE_EGRESS_PCAP    7
 #define PA_SYSTEM_CONFIG_CODE_DEFAULT_ROUTE  8
 #define PA_SYSTEM_CONFIG_CODE_EQOS           9
+#define PA_SYSTEM_CONFIG_CODE_TIMESTAMP     10
 
 // Command sizes. The assembler can't do all the SIZE(x)+SIZE(y)+... because of line size limitations
 // Command size in 32 bit words is:  struct_paCommand:         4
 //                                   struct_pa802p1agDet:      1
 //                                   struct_paIpsecNatTDet:    1  
 //                                   struct_pcap_info:         1 
+//                                   struct_paEoamTSOffset     2
+//                                   struct_paEoamProtoExcl    5
 //                MAX_PORTS (9)    * struct_pcap_cfg:          3(27)
 //                                   struct_paComDroute:       1
 //                MAX_PORTS (8)    * struct_paComDrouteCfg:    1(8)
 //                                               DefRoute Cfg: 110 words = 440 bytes (maximum)
 //                                               EQOS Cfg:      44 words = 176 bytes (minimum)
 //                                               EQOS Cfg:     310 words =1240 bytes (maximum)
-//
+//                                               EOAM Time Offset: 7 words = 28 bytes
 #define PA_CONFIG_COMMAND_SIZE_SYS_CONFIG_EROUTE         504 - 16 
 #define PA_CONFIG_COMMAND_SIZE_SYS_CONFIG_EF_EROUTE      200 - 16 
 #define PA_CONFIG_COMMAND_SIZE_SYS_CONFIG_CUSTOM_LUT1     60 - 16 
 #define PA_CONFIG_COMMAND_SIZE_SYS_CONFIG_PCAP            36 - 16
 #define PA_CONFIG_COMMAND_SIZE_SYS_CONFIG_DEF_ROUTE       76 - 16
 #define PA_CONFIG_COMMAND_SIZE_SYS_CONFIG_EQOS           176 - 16
+#define PA_CONFIG_COMMAND_SIZE_SYS_CONFIG_EOAM_TOFFSET    28 - 16
 
 #define PA_CONFIG_COMMAND_SIZE_THROUGH_EROUTE     24         // Byte up to and including struct_paComEroute
 #define PA_CONFIG_COMMAND_SIZE_THROUGH_SYSCFG     20  
 #define PA_SUB_CMD_CODE_DUMMY           0
 #define PA_SUB_CMD_CODE_IP_FRAG         1
 #define PA_SUB_CMD_CODE_PATCH_MSG_LEN   2
+#define PA_SUB_CMD_CODE_INSERT_MSG_TIME 3
+#define PA_SUB_CMD_CODE_INSERT_MSG_CNT  4
 #define PA_SUB_CMD_CODE_PATCH_CRC       0x1f
 
 // General message
 #define t_ef_rec4_valid                t15    
 
 
+// Ethernet OAM structures (common config between Ingress0 and Egress0 )
+.struct struct_eoamCfg
+      .u8   ctrlBitmap
+      .u8   rsvd1
+      .u16  rsvd2
+
+      .u32  nsRoAcc           // nano second accumulation value over one roll over (accumulates error also)
+      .u32  nsNumRoAcc        // very precise nano second accumulation value over N roll overs, to reset the accumulation error
+      .u16  numRo             // number of roll overs to consider for resetting error accumulation
+      .u16  mul               // multiplication factor, keeping the shift right factor of 13
+      
+      .u16  proto0            // first proto ID that need no statistics      
+      .u16  proto1
+
+      .u16  proto2      
+      .u16  proto3
+
+      .u16  proto4            
+      .u16  proto5
+
+      .u16  proto6      
+      .u16  proto7
+.ends
+
+#define t_eoam_ctrl_enable t0
+
+// Local structure in Ingress 0
+.struct struct_timeAccConstants
+  .u32  nsRoAcc           // nano second accumulation value over one roll over (accumulates error also)
+  .u32  nsNumRoAcc        // very precise nano second accumulation value over N roll overs, to reset the accumulation error
+  .u16  numRo             // number of roll overs to consider for resetting error accumulation
+  .u16  rollOverCnt       // roll over Count
+.ends
+
+// Local structure in Ingress 0
+.struct struct_eoamExceptionTbl
+      .u16  proto0            // first proto ID that need no statistics      
+      .u16  proto1
+      .u16  proto2      
+      .u16  proto3
+      .u16  proto4
+      .u16  proto5
+      .u16  proto6
+      .u16  proto7 
+.ends
+
+// Configuration structure for Egress 0 on time offsets
+.struct struct_timeStampOffsetCfg
+      .u32  offset_sec        // time stamp offset in seconds
+      .u32  offset_ns         // time stamp offset in nano seconds 
+.ends
+
+
+
+// Below are constants useful in converting the ticks to nano seconds (local to Egress 0)
+.struct struct_timeConvConst
+      .u32  offset_sec        // time stamp offset in seconds
+      .u32  offset_ns         // time stamp offset in nano seconds  
+      .u16  rsvd
+      .u16  mul               // multiplication factor, keeping the shift right factor of 13    
+.ends 
+
+// Below are counters to accumulate time per roll over in seconds and nano seconds (common between Ingress 0 and Egress 0)
+.struct struct_timeCounters
+      .u32  nsAccWithErr      // Counter to accumulate nano seconds per N roll overs
+      .u32  nsAccNoErr        // Counter to accumulate nano seconds per K * N * roll over
+      .u32  secAccNoErr       // Counter to accumulate seconds
+.ends
+
 #endif // _PDSP_PA_H
index c5ee71eac89b21b98b03eef73793200627f2ef6a..3c9f50e5d150571574be78e16a821d262d191bc5 100644 (file)
@@ -47,7 +47,7 @@
 
 //
 //  PDSPx informs the corresponding PDSP that the host has sent an new IP Reassembly configuration
-//        where Ingress0 PDSP0 for outer IP reassembly and Ingress4 PDSP0 for inner IP Reassembly
+//        where Ingress1 PDSP0 for outer IP reassembly and Ingress4 PDSP0 for inner IP Reassembly
 // 
 #define  FIRMWARE_CMD_IP_REASSEM_CFG            1         
 #define  FIRMWARE_CMD_IP_REASSEM_CFG_OFFSET     4       // command offset  (1st command)
 #define  FIRMWARE_INNER_IP_PDSP                 6       // Ingress4, PDSP0
 #define  FIRMWARE_OUTER_RA_PDSP                 1       // Ingress0, PDSP1
 #define  FIRMWARE_INNER_RA_PDSP                 5       // Ingress3, PDSP0
-#define  FIRMWARE_TX_CMD_PDSP                  11       // Egress1,  PDSP1
+#define  FIRMWARE_TX_CMD_PDSP                  11       // Egress0,  PDSP1
+
+//
+//  PDSPx informs the corresponding PDSP that the host has send another packet control 
+//  This is overlaid with IP Reassem configuration (PA assisted reassembly which is more likely not used as
+//  hardware support for reassembly is supported for this version of hardware
+//  however, care should be taken that no two
+//        configuration:
+//        Ingress 0 PDSP0 for PA time stamp accumulation
+//        Ingress 0 PDSP1 for EOAM feature, 
+//        Ingress 1 ESP Header Proc (time stamp )
+//        Ingress 3 PDSP5 for Firewall operations during EOAM
+//
+//  b3: command
+//  b1: valid flags
+//  b0: control flags 
+#define  FIRMWARE_CMD_EOAM_CFG                 2         
+#define  FIRMWARE_CMD_EOAM_CFG_OFFSET          4        // command offset  (1st command)
 
 //
 //  PDSPx informs the corresponding PDSP that the host has send another packet control 
@@ -64,6 +81,7 @@
 //        Ingress 1 PDSP0(2) and Ingress 4 PDSP0 (6) for IP header verfication, IP fragments routing
 //
 //  b3: command
+//  b1: valid flags
 //  b0: control flags 
 #define  FIRMWARE_CMD_PKT_CTRL_CFG            1         
 #define  FIRMWARE_CMD_PKT_CTRL_CFG_OFFSET     12       // command offset  (3rd command)
     .u16 timestamp      // Upper 16-bit of timestamp
 .ends
 
+#define PA_ONE_SEC_EXP_IN_NS        1000000000
+#define PA_EOAM_OPCODE_MATCH1       42
+#define PA_EOAM_OPCODE_MATCH2       43
+#define PA_EOAM_OPCODE_MATCH3       45
+#define PA_EOAM_OPCODE_MATCH4       46
+#define PA_EOAM_OPCODE_MATCH5       47
+#define PA_EOAM_APS_LINEAR_OPCODE   39
+#define PA_EOAM_APS_RING_OPCODE     40
+#define PA_EOAM_CCM_OPCODE          1
+
+#define PA_TIME_SHIFT_VAL           13
+
+// Below are arbitrary selected, would need to compute the actual cycles when coded in fw 
+#define PA_TIME_CORRECTION_SEC      10
+#define PA_TIME_CORRECTION_NS       10
+#define PA_TIME_AMBIGUIOUS_TIMER_TICK   (0xFFFF - 400)
+
+
+// This is a repeat of pasPktContext for Ethernet OAM enhancements
+// As Ethernet OAM packets are non IP packets, all IP related fields can 
+// over lay with the EOAM packet context
+// When the packet is delivered to host,
+// the MEG level from the packet is reported in Word 2 (b0)
+// the Opcode of the EOAM control packet is reported in Word2 (b1)
+//
+.struct  struct_pasPktContext6
+    // WORD0
+    .u8   paCmdId_Length
+    .u16  flags // 16-bit control flag
+    .u8   startOffset
+    
+    // Word 1
+    .u16  endOffset
+    .u16  eId_portNum_nextHdr
+    
+    // Word 2 
+    // reuse IP Offset location field as it is no longer needed for EOAM
+    .u8  megLevel       // MEG level 
+    .u8  opCode         // Opcode recorded from the EOAM packet
+    .u8  eoamFlags      // 8 bit flags that control statistics, indicate IPSec Transport, IPSec Tunnel or non IP pkts
+
+    // EOAM flags  
+#define t_flag_ip               t0  // Set Indicates IP Pkt otherwise non IP pkt
+#define t_flag_cipherPkt        t1  // Set Indicates Crypto packet otherwise non crypto pkt
+#define t_flag_fDisableCnt      t2  // Set Indicates force Ethernet OAM does not need record
+#define t_flag_knownOpcodes     t3  // Set Indicates that the opcode of the packet is a known EOAM control packet (1DM/LMM/LMR/DMM/DMR)
+#define t_flag_8021ag           t4  // Set indicates that 802.1ag packet is detected
+
+    .u8  startOffsetEoam
+     
+    // Word 3
+    .u16 phyLink
+    .u16 hdrBitmask
+     
+    // Word 4
+    //  /------------------------------------\
+    //  | 15         13| 12             0  |
+    //  |  vlanPri     |  virtual link     |
+    //  \------------------------------------/
+    
+    .u16 vlanPri_vLink
+    .u8  priority
+    .u8  protCount      // vlan|GRE|IP (may be removed)
+    
+     // Word 5
+    // re-use the pseudo field since the field is no longer needed */
+    .u32 count                // 32 bit counter 
+.ends
 
 // Tx (Egress Flow) Packet Info
 .struct  struct_pasTxPktContext
 
 // Classify1 run time context
 .struct  struct_c1RunContext
-    // /-------------------------------------------------------------------------------------------------------------------------\
-    // |      7         |       6        |       5        |       4       |   3       |   2              |   1     |   0         |
-    // |  held packet   | previous held  | pending config | previous skip |  L4 Avil  |  first lookup    |         | fail lookup |
-    // \-------------------------------------------------------------------------------------------------------------------------/
+    // /-------------------------------------------------------------------------------------------------------------------------------\
+    // |      7         |       6        |       5        |       4       |   3       |   2              |       1        |   0         |
+    // |  held packet   | previous held  | pending config | previous skip |  L4 Avil  |  first lookup    | extHdr Restore | fail lookup |
+    // \-------------------------------------------------------------------------------------------------------------------------------/
     .u8    flags
     
     // /-------------------------------------------------------------------------------------------------------------------------------\
-    // |      7         |       6        |       5          |       4        |       3      |       2        |     1     |      0      |
-    // |  Hdr check     | ipFragToEroute | 802.1ag standard | 802.1ag Detect | IP Reassem   |  SCTP Checksum |           |             |
+    // |      7         |       6        |       5          |       4        |       3      |       2        |     1     |      0       |
+    // |  Hdr check     | ipFragToEroute | 802.1ag standard | 802.1ag Detect | IP Reassem   |  SCTP Checksum |  pkt Cap  |  IP Reassm   |
     // \--------------------------------------------------------------------------------------------------------------------------------/
     .u8    flag2
     .u8    raFlow      // Flow Id for RA: Note the queue number is fixed:PASS_RA_QUEUE
-    .u8    pdspId
+    // /--------------------------------------------------------------------------------------------------------------------------------\
+    // |      7         |       6        |       5          |       4        |       3      |       2        |     1       |     0       |
+    // |                |                |                  |                |              |                |             | EOAM Enable |
+    // \--------------------------------------------------------------------------------------------------------------------------------/    
+    .u8    flag3
 .ends
 
+// flag bit map
 #define   t_held_packet           t7
 #define   t_previous_held         t6
 #define   t_pendingConfig         t5
 #define   t_extHdr_held           t1    // 1: extHdr is restored and need to be pushed out
 #define   t_failLookup            t0    // 1: LUT1 lookup is determined to fail due to unknown (unsupported) protocol
   
-
+// flag2 bit map
 #define   t_hdrCheck              t7    // 1: Enhanced header check is enabled
 #define   t_ipHdrCheck            t7    // 1: Enhanced IP header check is enabled (Ingress1 and Ingress4 PDSP0)
 #define   t_PPPoEHdrCheck         t7    // 1: PPPoE haeder check is enabled (Ingress0, PDSP0)
 #define   t_raUseLocDMA           t1    // 1: IP Reassembly using local DMA
 #define   t_raToQueue             t2    // 1: IP reassembly output packets to host queue
 
+// flag3 bit map
+#define   t_eoamEn                t0    // 1: Ethernet OAM feature is enabled (Ingress0-PDSP1, Ingress3-PDSP5)
+
 #define   SUBS_PKT_CTRL_RA_En              0x01
 #define   SUBS_RA_CTRL_MASK                0x07
 #define   NOT_SUBS_RA_CTRL_MASK            0xf8   
index c4999a3e8f88ce5a87ab1da153b542c3e88c0074..fb3548ace184e2be0850b5aef5c2c9da5a5a33d0 100644 (file)
Binary files a/fw/v1/post_pdsp0.bib and b/fw/v1/post_pdsp0.bib differ
index 020f926b040b8268519dcee46ceff5401840c9cf..2bfde37747b2d610d69d8e7ee2d60ebaa74b1bfd 100644 (file)
Binary files a/fw/v1/post_pdsp1.bib and b/fw/v1/post_pdsp1.bib differ
index 08a6847855364cf331e06385ffa05d746c610289..5b623bea68578b431b32634d086512d21239bda1 100644 (file)
--- a/makefile
+++ b/makefile
@@ -17,7 +17,7 @@ export LIBDIR ?= ./lib
 export ROOTDIR := ../../..
 
 # INCLUDE Directory
-export INCDIR := ../../..;$(XDC_INSTALL_PATH)/packages;$(PDK_INSTALL_PATH);$(C6X_GEN_INSTALL_PATH)/include;$(XDC_ECLIPSE_PLUGIN_INSTALL_PATH);$(XDC_FILTER_INSTALL_PATH);$(ROOTDIR)
+export INCDIR := ../../..;$(XDC_INSTALL_PATH)/packages;$(PDK_INSTALL_PATH)/.;$(C6X_GEN_INSTALL_PATH)/include;$(EDMA3LLD_BIOS6_INSTALLDIR)/packages;$(ROOTDIR)
 
 # Common Macros used in make
 
diff --git a/pa.h b/pa.h
index 439afdcf043a7a9c76a0c95b4bb75d3967018946..e4ca7fee0dcd905d29ac9ffee15b2b3d94cdf689 100644 (file)
--- a/pa.h
+++ b/pa.h
@@ -557,7 +557,7 @@ extern "C" {
  *        The minmium command buffer size allowed when using the @ref Pa_control (pa_CONTROL_SYS_CONFIG) function to perform PASS 
  *        global configuration.
  */
-#define pa_GLOBAL_CONFIG_MIN_CMD_BUF_SIZE_BYTES      72
+#define pa_GLOBAL_CONFIG_MIN_CMD_BUF_SIZE_BYTES      104
 
 /**
  *  @def  pa_802_1ag_DET_MIN_CMD_BUF_SIZE_BYTES
@@ -751,6 +751,16 @@ typedef void* paLnkHandle_t;
  */
 typedef void*  paHandleAcl_t;
 
+/**
+ * @ingroup palld_api_structures
+ * @brief  PA handle specification for EOAM (LUT1) handles
+ *
+ * @details  This type is used to reference EOAM (LUT1) entry with the EOAM table. The module
+ *           user is responsible for storing the handle and using it to refer to EOAM entry already
+ *           created through calls to @ref Pa_addEoamFlow.
+ */
+typedef void*  paHandleEoam_t;
+
 /**
  * @ingroup palld_api_structures
  * @brief  PA handle specification for Flow Cache (LUT1) handles
@@ -793,6 +803,7 @@ typedef union  {
 
   paHandleL2L3_t  l2l3Handle;  /**<  Level 2 or level 3 handle created by @ref Pa_addMac @ref Pa_addSrio, @ref Pa_addCustomLUT1 or @ref Pa_addIp */
   paHandleAcl_t   aclHandle;   /**<  ACL handle created by @ref Pa_addAcl (Gen2 only) */
+  paHandleEoam_t  eoamHandle;  /**<  EOAM handle created by @ref Pa_addEoamFlow (Gen2 only) */
   paHandleFc_t    fclHandle;   /**<  Flow Cache handle created by @ref Pa_addFc (Gen2 only) */
   paHandleL4_t    l4Handle;    /**<  Level 4 handle created by @ref Pa_addPort or @ref Pa_addCustomLUT2 */
 
@@ -857,6 +868,12 @@ typedef union  {
  */
 #define  pa_FC_HANDLE   11 
 
+/**
+ *  @def  pa_EOAM_HANDLE
+ *        EOAM (Ethernet OAM) handle
+ */
+#define  pa_EOAM_HANDLE   12 
+
 /**
  *  @def  pa_INVALID_HANDLE
  *        Invalid handle type
@@ -1281,6 +1298,7 @@ typedef struct  {
   int nMaxVlnk; /**< Maximum number of virtual links supported */
   int nMaxAcl;  /**< Maximum number of Stateless ACL handles supported (Gen2 only)*/
   int nMaxFc;   /**< Maximum number of Flow Cache Hanndles supported (Gen2 only) */
+  int nMaxEoam; /**< Maximum number of EOAM Hanndles supported (Gen2 only) */  
 } paSizeInfo_t;
 
 /**
@@ -1595,6 +1613,16 @@ typedef struct {
  */
 #define pa_PKT_CTRL_EMAC_IF_EGRESS_EQoS_MODE       0x0100
 
+#if 0
+/**
+ *  @def  pa_PKT_CTRL_CLASSIFY_EOAM
+ *        Control Info -- Set: Ingress0 PDSP1 LUT1 classification is used for Ethernet OAM classification
+ *                        Clear: Ingress0 PDSP1 LUT1 classification is used for Outer ACL classification (default)
+ *  @note This definition is only vaild at @ref paPacketControl2Config_t. 
+ */
+#define pa_PKT_CTRL_CLASSIFY_EOAM                  0x0200
+#endif
+
 /*@}*/
 /** @} */
 
@@ -1694,6 +1722,14 @@ typedef struct {
  */
 #define pa_PKT_CTRL2_VALID_EMAC_IF_EGRESS_EQoS_MODE      pa_PKT_CTRL_EMAC_IF_EGRESS_EQoS_MODE
 
+#if 0
+/**
+ *  @def  pa_PKT_CTRL2_VALID_CLASSIFY_EOAM 
+ *        - Valid Ethernet OAM Classification configuration is present
+ */
+#define pa_PKT_CTRL2_VALID_CLASSIFY_EOAM                 pa_PKT_CTRL_CLASSIFY_EOAM
+#endif
+
 /**
  *  @def  pa_PKT_CTRL2_VALID_PADDING_STATS_INDEX 
  *        - Valid rxPaddingErrStatsIndex and txPaddingStatsIndex are present
@@ -1857,6 +1893,96 @@ typedef struct {
   paRaERouteInfo_t      genErrER;      /**< Specify exception route for packets with non-critical error*/
 } paRaGroupConfig_t;
 
+/**
+ *  @ingroup palld_api_constants
+ *  @brief   Define the maximum number ethernet Protocol types supported for statistics exclusion during EOAM support 
+ *
+ */
+#define pa_MAX_EOAM_PROTO_EXCLUSION    8 
+
+/**
+ *  @ingroup palld_api_structures
+ *  @brief  PA time offset correction.
+ *
+ *  @details  paSetTimeOffset_t is used to set the 1588 time offsets at PA time 0
+ *
+ */
+typedef struct {
+  uint32_t           offset_sec;  /**< 1588 Time offset in seconds (needed for features like EOAM) at PA time 0*/
+  uint32_t           offset_ns;   /**< 1588 Time offset in nano seconds (needed for features like EOAM) at PA time 0 */  
+}paSetTimeOffset_t;
+
+/**
+ @defgroup paInputFreq Packet Accelerator PLL Frequencies
+ *  @ingroup palld_api_constants
+ *  @{
+ *
+ *  @name Packet Accelerator PLL input frequency 
+ *
+ *  paInputFreq_e is used to provide the input frequency to PASS programmed either through PA clock or
+ *  system clock in MHz. This parameter is useful in converting the ticks to seconds and nano seconds.  
+ *
+ */ 
+/** @ingroup paInputFreq */
+/*@{*/
+typedef enum {
+  pa_INPUT_FREQ_1000MHZ = 1,       /**< PASS Input frequency is 1000 MHz */
+  pa_INPUT_FREQ_1050MHZ,           /**< PASS Input frequency is 1050 MHz */
+  pa_INPUT_FREQ_1049p6MHZ          /**< PASS Input frequency is 1049.6 MHz */
+} paInputFreq_e;
+
+/*@}*/
+/** @} */
+
+/**
+ *  @ingroup palld_api_structures
+ *  @brief  PA Ethernet OAM target flow match Statistics control configuration Information.
+ *
+ *  @details  paEoamStatsCtrlConfig_t is used to control the statistics for EOAM target flow match
+ *            the ethernet Protocols listed in the configurations do not trigger the statistics increment
+ *            eventhough the target flow match happens.
+ *
+ */
+typedef struct {
+  uint8_t                  numProtoExcl;                          /**< Number of protocol exclusions that do not need statistics */
+  uint16_t                 exclEthTypes[pa_MAX_EOAM_PROTO_EXCLUSION]; /**< maximum number of ethernet types exclusion list that do not need statistics */  
+} paEoamStatsCtrlConfig_t;
+
+/**
+ *  @defgroup paEoamGlobalValidInfo  PA EOAM Global Configuration Valid Bit Definitions
+ *  @ingroup palld_api_constants
+ *  @{
+ *
+ *  @name PA Global Config Valid Bit Definitions
+ *
+ *  Bitmap definition of the validBitmap in @ref paEoamGlobalConfig_t. 
+ */ 
+/*@{*/
+/**
+ *  @def  pa_EOAM_VALID_STATS_CTRL
+ *        - Control to increment the Ethernet OAM target flow matches is present
+ */
+#define pa_EOAM_VALID_STATS_CTRL              (1<<0)
+
+/* @} */ /* ingroup */
+/** @} */
+
+
+/**
+ *  @ingroup palld_api_structures
+ *  @brief  PA Ethernet OAM Global Configuration Information.
+ *
+ *  @details  paEoamGlobalConfig_t is used to configure the Ethernet OAM parameters.
+ *
+ */
+typedef struct {
+  uint32_t                 validBitMap; /**< Valid control bits as defined at @ref paEoamGlobalValidInfo */
+  uint32_t                 enable;      /**< Enable/Disable EOAM feature, As Outer ACL and EOAM can not co-exist, make sure Outer ACL
+                                             entries are all removed before adding the EOAM entries in the LUT table */
+  paInputFreq_e            freq;        /**< Mandatory: PA Input Frequency in MHz as defined at @ref paInputFreq_e */ 
+  paEoamStatsCtrlConfig_t  statsCtrl;   /**< Ethernet OAM control packet target flow match count control @ref paEoamStatsCtrlConfig_t */
+} paEoamGlobalConfig_t;
+
 /**
  * @ingroup palld_api_structures
  * @brief PA System Configuration Information structure
@@ -1877,6 +2003,7 @@ typedef struct {
   paRaGroupConfig_t*        pOutIpRaGroupConfig;   /**< Poimter to the outer IP Reassembly group configuration structure */
   paRaGroupConfig_t*        pInIpRaGroupConfig;    /**< Poimter to the inner IP Reassembly group configuration structure */
   paPacketControl2Config_t* pPktControl2;         /**< Pointer to the packet control 2 configuration structure */  
+  paEoamGlobalConfig_t*     pEoamConfig;           /**< Pointer to the EOAM Global configuration structure */
 } paSysConfig_t;
 
 /**
@@ -2060,7 +2187,7 @@ typedef struct  {
  *
  */
 #define pa_N_BUFS_GEN1          5
-#define pa_N_BUFS_GEN2          7
+#define pa_N_BUFS_GEN2          8
  
 #define pa_N_BUFS               pa_N_BUFS_GEN2
 
@@ -2114,6 +2241,14 @@ typedef struct  {
  */
 #define pa_BUF_FC_TABLE         6
 
+/**
+ *  @def  pa_BUF_EOAM_TABLE
+ *        PA LLD match table of EOAM entries such as Y1731
+ *
+ *  @note This definition is valid for the second generation PASS only.
+ */
+#define pa_BUF_EOAM_TABLE       7
+
 /*  @}  */  
 /** @} */
 
@@ -2992,6 +3127,16 @@ paReturn_t Pa_close (Pa_Handle handle, void* bases[]);
  */
 #define  pa_CMD_EF_OP                      18 
 
+/*  @def  pa_CMD_INS_TIME
+ *        Insert the time values in packets (Gen 2 support only)
+ */
+#define  pa_CMD_INS_TIME                   19  
+
+/*  @def  pa_CMD_INS_COUNT
+ *        Insert the time values in packets (Gen 2 support only)
+ */
+#define  pa_CMD_INS_COUNT                  20
+
    
 /*  @}  */  
 /** @} */
@@ -3302,6 +3447,31 @@ typedef struct {
 
 } paTxChksum_t;
 
+/**
+ *  @ingroup palld_api_structures
+ *  @brief  Insert time in EOAM packet configuration
+ *
+ *  @details  paInsTime_t is used in the call @ref Pa_formatTxCmd to create a tx 
+ *            command header that instructs the packet accelerator sub-system to insert the
+ *            time bytes in the specified offset of the packet.
+ */
+typedef struct {
+  uint16_t startOffset;   /**<  Byte location, from SOP, to insert 8 bytes time values 4 byte second, 4 byte nano second */
+} paInsTime_t;
+
+/**
+ *  @ingroup palld_api_structures
+ *  @brief  Insert Count in EOAM packet configuration
+ *
+ *  @details  paInsCount_t is used in the call @ref Pa_formatTxCmd to create a tx 
+ *            command header that instructs the packet accelerator sub-system to insert the
+ *            specified user stats counter bytes in the specified offset of the packet.
+ */
+typedef struct {
+
+  uint16_t startOffset;   /**<  Byte location, from SOP, to insert count values */
+  uint16_t countIndex;    /**<  Counter index to insert */  
+} paInsCount_t;
 
 /**
  *  @defgroup copyCtrlInfo  PA Copy Command Control Info Bit Definitions
@@ -3745,6 +3915,8 @@ typedef struct {
     paCmdVerifyPktErr_t verifyPktErr;  /**< Specify Packet error Verification command specific parameters */
     paCmdSplitOp_t      split;   /**< Specify Split command sepcific parameters */
     paCmdEfOp_t         efOp;    /**< Specify Egress Flow operation command specific parameters (PASS Gen2 only) */
+    paInsTime_t         insTime; /**< Specify insert time in the messages like Ethernet OAM packets (PASS Gen2 only)*/
+    paInsCount_t        insCount; /**< Specify insert count in the messages like Ethernet OAM packets (PASS Gen2 only)*/    
   }params;                      /**< Contain the command specific parameters */
 
 } paCmdInfo_t;
@@ -3923,6 +4095,13 @@ typedef struct  {
  */
 #define pa_ETH_INFO_VALID_INPORT                (1<<5)
 
+/**
+ *  @def  pa_ETH_INFO_VALID_VLAN_PRI
+ *        - Input VLAN PRI is present
+ */
+#define pa_ETH_INFO_VALID_VLAN_PRI              (1<<6)
+
+
 /* @} */ /* ingroup */
 /** @} */
 
@@ -3946,8 +4125,29 @@ typedef struct  {
   uint16_t           ethertype;     /**< Ethertype field. */
   uint32_t           mplsTag;       /**< MPLS tag. Only the outer tag is examined */
   uint16_t           inport;        /**< Input EMAC port number as specified by @ref paEmacPort */
+  uint8_t            vlanPri;       /**< VLAN tag PCP field, 3 bits showing priority */
 } paEthInfo2_t;
 
+
+/**
+ *  @ingroup palld_api_structures
+ *  @brief  EOAM look up information
+ *
+ *  @details  paEoamFlowInfo_t is used to specify the flow parameters used in EOAM packet classification.
+ *
+ */
+typedef struct {
+  uint16_t    validBitMap;  /**< Valid bit map reserved for future enhancements */
+  uint8_t     flowId;       /**< Specifies the packet DMA flow ID, which defines the free queuese are 
+                                 used for receiving EOAM control packets */
+  uint16_t    destQueue;    /**< Specifies the destination queue used for receiving EOAM control packets */
+  uint32_t    swInfo0;      /**< Placed in SwInfo0 for EOAM control packets to host */                                   
+  uint16_t    statsIndex;   /**< user defined counter index binded with an EOAM target flow */
+  uint8_t     megLevel;     /**< Maintenance Entity Group Level threshold to decide need statistics or not. 
+                                 MEG Level is a 3-bit field. It contains an integer value that identifies MEG
+                                 level of OAM PDU. Value ranges from 0 to 7 */  
+} paEoamFlowInfo_t;
+
 /**
  *  @defgroup paAclInfoValidBit  PA ACL Matching Info Valid Bit Definitions
  *  @ingroup palld_api_constants
@@ -4861,6 +5061,13 @@ typedef struct {
  */
 #define  pa_CONTROL_RA_CONFIG               5
 
+/**
+ *  @def  pa_CONTROL_EOAM_TIME_OFFSET_CONFIG
+ *        This control provides a provision to correct the initial values set for time offsets
+ *        during Ethernet Operations And maintenance support
+ */
+#define  pa_CONTROL_TIME_OFFSET_CONFIG      6
+
 /**
  *  @def  pa_CONTROL_MAX_CONFIG_GEN1
  *        Maximum global configuration types on NSS Gen1 devices 
@@ -4871,7 +5078,7 @@ typedef struct {
  *  @def  pa_CONTROL_MAX_CONFIG_GEN2
  *        Maximum global configuration types on NSS Gen2 devices
  */
-#define  pa_CONTROL_MAX_CONFIG_GEN2         pa_CONTROL_RA_CONFIG
+#define  pa_CONTROL_MAX_CONFIG_GEN2         pa_CONTROL_TIME_OFFSET_CONFIG
 
 /*  @}  */  
 /** @} */
@@ -4893,6 +5100,7 @@ typedef struct {
     paEmacPortConfig_t         emacPortCfg;       /**< Specify interface based port configuration information */
     paRaConfig_t               raCfg;             /**< Specify RA global configuration information (PASS Gen2 only) 
                                                        @note RA global configuration does not require command buffer. */                                                              
+    paSetTimeOffset_t          tOffsetCfg;        /**< Specify Ethernet OAM time stamp offset information  (PASS Gen2 only) */
   }params;                                        /**< Contain the control operation specific parameters */
 } paCtrlInfo_t;
 
@@ -5461,6 +5669,22 @@ typedef struct paAclStats_s  {
   
 } paAclStats_t;
 
+/**
+ * @ingroup palld_api_structures
+ * @brief PA EOAM Entry Statistics Structure
+ *
+ * @details This structures define the PA EOAM per-entry statistics provided 
+ *          with API function @ref Pa_queryEoamStats ().
+ */
+
+typedef struct paEoamStats_s  {
+
+  uint32_t   nMatchPackets;     /**< Number of packets which matchs the Eoam rule */
+  uint32_t   nMatchBytes;       /**< Total bytes of the matched packets */
+  
+} paEoamStats_t;
+
+
 /**
  * @ingroup palld_api_structures
  * @brief PA Timestamp Structure
@@ -5799,6 +6023,47 @@ paReturn_t Pa_addMac2  (  Pa_Handle        iHandle,
                           paCmdReply_t     *reply,
                           int              *cmdDest
                        );
+
+/**
+ *   @ingroup palld_api_functions
+ *   @brief  Pa_addEoamFlow adds an Ethernet OAM target flow entry to the L2 table
+ *
+ *   @details  A new entry is added if the EOAM flow configuration info is unique in the modules handle table. If
+ *           the value is not unique then the routing information for the existing entry is changed to
+ *           the values provided in the function.
+ *
+ *           L2 values that are not to be used for packet routing are set to 0.
+ *
+ *           On return the command buffer (cmd) contains a formatted command for the sub-system. The 
+ *           destination for the command is provided in cmdDest. The module user must send the formatted
+ *           command to the sub-system. The sub-system will generate a reply
+ *           and this reply must be sent back to this module through the @ref Pa_forwardResult API.
+
+ *
+ *  @param[in]      iHandle     The driver instance handle
+ *  @param[in]      ethInfo     Value @ref paEthInfo2_t
+ *  @param[in]      eoamInfo    Ethernet OAM target flow information
+ *  @param[out]     handle      Pointer to EOAM Handle. LLD puts the allocated EOAM handle in this location.
+ *  @param[out]     cmd         Where the created command is placed
+ *  @param[in,out]  cmdSize     Input the size of cmd buffer, on output the actual size used. @ref cmdMinBufSize
+ *  @param[in]      reply       Where the sub-system sends the command reply
+ *  @param[out]     cmdDest     Value (@ref cmdTxDest) 
+ *  @retval                     Value (@ref ReturnValues)
+ *  @pre                        A driver instance must be created and tables initialized, Ethernet OAM System Configuration
+ *                              and EOAM timer offset configurations are complete.
+ *              
+ */
+
+paReturn_t Pa_addEoamFlow  (Pa_Handle         iHandle,
+                            paEthInfo2_t      *ethInfo,    
+                            paEoamFlowInfo_t  *eoamInfo,   
+                            paHandleEoam_t    *handle,     
+                            paCmd_t           cmd,
+                            uint16_t          *cmdSize,
+                            paCmdReply_t      *reply,
+                            int               *cmdDest
+                           );
+
                          
 /**
  *   @ingroup palld_api_functions
@@ -5871,6 +6136,29 @@ paReturn_t Pa_delAclHandle (Pa_Handle       iHandle,
                             paCmdReply_t    *reply,
                             int             *cmdDest );
 
+/**
+ *   @ingroup palld_api_functions
+ *   @brief  Pa_delEoamHandle deletes an EOAM handle
+ *
+ *   @details  This function is used to remove an entry from the LUT1-EOAM lookup 
+ *
+ *   @param[in]     iHandle     The driver instance handle
+ *   @param[in]     handle      Pointer to the EOAM handle to delete
+ *   @param[out]    cmd         Where the created command is placed
+ *   @param[in]     cmdSize     The size of the cmd buffer
+ *   @param[in]     reply       Where the sub-system sends the command reply
+ *   @param[out]    cmdDest     Value (@ref cmdTxDest)
+ *   @retval                    Value (@ref ReturnValues)
+ *   @pre                       A driver instance must be created and tables initialized
+ */
+paReturn_t Pa_delEoamHandle (Pa_Handle       iHandle,
+                            paHandleEoam_t  *handle, 
+                            paCmd_t         cmd,
+                            uint16_t        *cmdSize,
+                            paCmdReply_t    *reply,
+                            int             *cmdDest );
+
+
 /**
  *   @ingroup palld_api_functions
  *   @brief  Pa_addIp adds an IP address to the L3 table
@@ -7013,6 +7301,27 @@ paReturn_t Pa_queryAclStats (Pa_Handle      iHandle,
                              uint16_t       doClear, 
                              paAclStats_t  *pAclStats);
 
+/**
+ *  @ingroup palld_api_functions
+ *  @brief  Pa_queryEoamStats queries EOAM per-entry statistics (PASS Gen2 only)
+ *
+ *  @details  This function is used to query the EOAM per-entry statistics. 
+ *            The statistics can be optionally cleared after reading through the doClear parameter.
+ *
+ *  @param[in]    iHandle    The driver instance handle
+ *  @param[in]    eoamHandle The EOAM handle
+ *  @param[in]    doClear    If TRUE then stats are cleared after being read
+ *  @param[out]   pEoamStats Pointer to the eoamStats buffer
+ *  @retval                  Value (@ref ReturnValues)
+ *  @pre                     A driver instance must be created and tables initialized
+ *
+ *  @note: This API is not supported at the first generation PASS
+ */
+paReturn_t Pa_queryEoamStats (Pa_Handle      iHandle,
+                              paHandleEoam_t eoamHandle,
+                              uint16_t       doClear, 
+                              paEoamStats_t  *pEoamStats);
+
 /**
  *  @ingroup palld_api_functions
  *  @brief  Pa_formatTxRoute formats the commands to add checksums and route a Tx packet
old mode 100755 (executable)
new mode 100644 (file)
index b6302a6..981af74
@@ -171,7 +171,19 @@ extern "C" {
  *        Instruct PDSP to perform message length patching after IPv4 fragmentation operation. This command is
  *        valid only if it is in conjunction with the PASAHO_PAMOD_IP_FRAGMENT command.
  */
-#define PASAHO_PAMOD_PATCH_MSG_LEN  PASAHO_PAMOD_GROUP_7   
+#define PASAHO_PAMOD_PATCH_MSG_LEN  PASAHO_PAMOD_GROUP_7  
+
+/**
+ *  @def  PASAHO_PAMOD_INSERT_MSG_TIME
+ *        Instruct PDSP to perform message time insert for packets such as Ethernet OAM. 
+ */
+#define PASAHO_PAMOD_INSERT_MSG_TIME  PASAHO_PAMOD_GROUP_7 
+
+/**
+ *  @def  PASAHO_PAMOD_INSERT_MSG_COUNT
+ *        Instruct PDSP to perform message count insert for packets such as Ethernet OAM. 
+ */
+#define PASAHO_PAMOD_INSERT_MSG_COUNT  PASAHO_PAMOD_GROUP_7 
 
 /* SA commands */
 /**
@@ -306,7 +318,9 @@ typedef enum {
 
   PASAHO_SUB_CMD_DUMMY        = 0,   /**< Dummy */
   PASAHO_SUB_CMD_IP_FRAG,            /**< IPv4 fragmentation */
-  PASAHO_SUB_CMD_PATCH_MSG_LEN       /**< Message length Patching */ 
+  PASAHO_SUB_CMD_PATCH_MSG_LEN,      /**< Message length Patching */ 
+  PASAHO_SUB_CMD_INS_TIME,           /**< Ethernet EOAM insert time at specified offset */
+  PASAHO_SUB_CMD_INS_COUNT           /**< Ethernet EOAM insert count at specified offset */
 } pasaho_SubCmdCode_e;
 /*@}*/
 /** @} */
@@ -362,8 +376,12 @@ typedef struct pasahoLongInfo_s  {
   uint32_t   word5;  /**< Control block word 5 */
   uint32_t   word6;  /**< Control block word 6 */
   uint32_t   word7;  /**< Control block word 7 */
-  uint32_t   word8;  /**< Control block word 8 (optional) */
-  uint32_t   word9;  /**< Control block word 9 (optional) */
+  uint32_t   word8;  /**< Control block word 8 */
+  uint32_t   word9;  /**< Control block word 9 */
+  uint32_t   word10; /**< Control block word 10 (optional) */
+  uint32_t   word11; /**< Control block word 11 (optional) */
+  uint32_t   word12; /**< Control block word 12 (optional) */
+  uint32_t   word13; /**< Control block word 13 (optional) */  
 } pasahoLongInfo_t;
 
 /** 
@@ -1286,6 +1304,68 @@ typedef struct pasahoEfOp_s  {
 /*@}*/
 /** @} */
 
+
+/* Insert Message time command */
+/**
+ *  @ingroup pasaho_if_structures
+ *  @brief  pasahoInsMsgTime_t defines the message time insert command. The command structure is defined as 32 bit
+ *          values to work with the hardware regardless of the device endianness.
+ *
+ *  @details 
+ */
+
+typedef struct pasahoInsMsgTime_s  {
+    uint32_t  word0;          /**< Contains the message time patching command information. @ref PASAHO_insert_msg_time_command_macros */
+} pasahoInsMsgTime_t;
+
+/** 
+ *  @defgroup PASAHO_insert_msg_time_command_macros  PASAHO Message Time Insert Command Macros
+ *  @ingroup pasaho_if_macros
+ *  @{
+ *  @name PASAHO Message Time Insert Command Macros
+ *  Macros used by the PASAHO Message Time Insert Command
+ *  
+ */
+/*@{*/
+
+#define PASAHO_SET_SUB_CODE_INS_MSG_TIME(x) PASAHO_SET_BITFIELD((x)->word0, PASAHO_SUB_CMD_INS_TIME, 24, 5)    /**< Set sub-command code to indicate Message Time Insert command */
+#define PASAHO_SET_INS_OFFSET_MSG_TIME(x,offset)   PASAHO_SET_BITFIELD((x)->word0, offset, 0, 16)             /**< Set the offset from start of packet to insert the 8 byte time */
+
+/*@}*/ /* @name PASAHO Message Time Insert Command Macros */
+/** @}*/ /* PASAHO_insert_msg_time_command_macros */
+
+/* Insert Message Count command */
+/**
+ *  @ingroup pasaho_if_structures
+ *  @brief  pasahoInsMsgCount_t defines the message count insert command. The command structure is defined as 32 bit
+ *          values to work with the hardware regardless of the device endianness.
+ *
+ *  @details 
+ */
+
+typedef struct pasahoInsMsgCount_s  {
+    uint32_t  word0;          /**< Contains the message count patching command information. @ref PASAHO_insert_msg_count_command_macros */
+    uint32_t  word1;          /**< Contains the message count patching command information. @ref PASAHO_insert_msg_count_command_macros */
+} pasahoInsMsgCount_t;
+
+/** 
+ *  @defgroup PASAHO_insert_msg_count_command_macros  PASAHO Message Count Insert Command Macros
+ *  @ingroup pasaho_if_macros
+ *  @{
+ *  @name PASAHO Message Count Insert Command Macros
+ *  Macros used by the PASAHO Message Count Insert Command
+ *  
+ */
+/*@{*/
+
+#define PASAHO_SET_SUB_CODE_INS_MSG_COUNT(x)        PASAHO_SET_BITFIELD((x)->word0, PASAHO_SUB_CMD_INS_COUNT, 24, 5)    /**< Set sub-command code to indicate Message Count Insert command */
+#define PASAHO_SET_INS_OFFSET_MSG_COUNT(x,offset)   PASAHO_SET_BITFIELD((x)->word0, offset, 0, 16)                      /**< Set the offset from start of packet to insert the 4 byte count */
+#define PASAHO_SET_COUNTER_INDEX_FOR_MSG_COUNT(x,offset)   PASAHO_SET_BITFIELD((x)->word1, offset, 0, 16)               /**< Set the counter index to read from, to insert the 4 byte count */
+
+/*@}*/ /* @name PASAHO Message Count Insert Command Macros */
+/** @}*/ /* PASAHO_insert_msg_count_command_macros */
+
+
 #ifdef __cplusplus
 }
 #endif
index 2aaa2291cf481a84415e3d94c9d34158fd78afec..d0624b581693ec43e3febe8e26d7263abd04b386 100644 (file)
@@ -3348,6 +3348,27 @@ Pa_addIp2_end:
 \r
 } /* Pa_addIp2 */\r
 \r
+/*******************************************************************************************\r
+ * FUNCTION PURPOSE: Add an EOAM entry to the Ethernet OAM table\r
+ *******************************************************************************************\r
+ * DESCRIPTION: The EOAM entry is verified and added to the EOAM table. \r
+ *              The following LUT1 are used to store EOAM related entries at NetCP 1.5:\r
+ *                  - Ingess 0, PDSP1, LUT1_1\r
+ *              This API is not supported for NetCP 1.0\r
+ *                \r
+ ********************************************************************************************/\r
+  paReturn_t Pa_addEoamFlow  (Pa_Handle         iHandle,\r
+                              paEthInfo2_t      *ethInfo,    \r
+                              paEoamFlowInfo_t  *eoamInfo,   \r
+                              paLnkHandle_t     *handle,     \r
+                              paCmd_t           cmd,\r
+                              uint16_t          *cmdSize,\r
+                              paCmdReply_t      *reply,\r
+                              int               *cmdDest\r
+                             )\r
+{\r
+  return (pa_API_UNSUPPORTED);\r
+}\r
 /****************************************************************************\r
  * FUNCTION PURPOSE: Add a destination TCP/UDP/GTPU port to the lookup\r
  ****************************************************************************\r
index 136f16657df33879aecb6ef0638ff065e5065a7f..0e06ae6b23b14af74900031609ccfc22ac61567e 100644 (file)
@@ -987,7 +987,12 @@ static paReturn_t pa_control_get_cmd_size(paCtrlInfo_t *ctrl, uint16_t *pCmdSize
         case pa_CONTROL_RA_CONFIG:
             *pCmdSize = 0;
             break;
-            
+
+        case pa_CONTROL_TIME_OFFSET_CONFIG:
+              *pCmdSize = sizeof(pafrmCommand_t) + offsetof(pafrmCommandSysConfigPa_t, u) - sizeof(uint32_t) 
+                        + sizeof(pafrmSetTOffsetCfg_t);
+              break;
+
         default:
             ret = pa_ERR_CONFIG;
             break;
@@ -1489,6 +1494,8 @@ paReturn_t Pa_addMac2  (  Pa_Handle    iHandle,
     l2Entry.cfg.mac.mplsTag    =  ethInfo->mplsTag;
   if(ethInfo->validBitMap & pa_ETH_INFO_VALID_INPORT)
     l2Entry.cfg.mac.inport     =  ethInfo->inport;
+  if(ethInfo->validBitMap & pa_ETH_INFO_VALID_VLAN_PRI)
+    l2Entry.cfg.mac.vlanPri    =  ethInfo->vlanPri;
     
   /* The MPLS label is restricted to 20 bits */
   if (l2Entry.cfg.mac.mplsTag & ~PA_MPLS_LABEL_MASK)  
@@ -1681,10 +1688,17 @@ Pa_addMac2_send_cmd:
     
   if (ethInfo->validBitMap & pa_ETH_INFO_VALID_INPORT)
   {
-    al1->u.mac.inport = (uint8_t)l2Entry.cfg.mac.inport;
+    al1->u.mac.inport  = SWIZ(l2Entry.cfg.mac.inport);
     CBWords1 |=  PAFRM_LUT1_VALID_INPORT;
     priority += 10;
   }
+
+  if (ethInfo->validBitMap & pa_ETH_INFO_VALID_VLAN_PRI)
+  {
+    al1->u.mac.vlanPri1 = SWIZ(l2Entry.cfg.mac.vlanPri);
+    CBWords1 |=  PAFRM_LUT1_VALID_VLAN_PRI1;
+    priority += 10;
+  }  
   
   al1->CBWords0 = SWIZ(CBWords0);
   al1->CBWords1 = SWIZ(CBWords1); 
@@ -2452,6 +2466,110 @@ Pa_delAclHandle_end:
 
 } /* Pa_delAclHandle */
 
+/***************************************************************************************
+ * FUNCTION PURPOSE: Delete an EOAM handle
+ ***************************************************************************************
+ * DESCRIPTION: The handle is deleted. Dependent handles are left intact
+ ***************************************************************************************/
+paReturn_t Pa_delEoamHandle (Pa_Handle       iHandle,
+                            paHandleEoam_t  *handle, 
+                            paCmd_t         cmd,
+                            uint16_t        *cmdSize,
+                            paCmdReply_t    *reply,
+                            int             *cmdDest )
+{
+  paInst_t              *paInst  = (paInst_t *) pa_CONV_OFFSET_TO_BASE(paLObj.cfg.instPoolBaseAddr, iHandle);
+  paL2L3Header_t        *hdr     = (paL2L3Header_t *) pa_CONV_OFFSET_TO_BASE(paLObj.cfg.instPoolBaseAddr, *handle);
+  pafrmCommand_t        *fcmd;
+  pafrmCommandDelLut1_t *del;
+  uint16_t              csize, comId;
+  paReturn_t            ret = pa_OK;
+  uint32_t              mtCsKey;  
+  uint8_t               pdsp = 0;
+  paEoamEntry_t         *eoamTable;
+  
+  
+  if((cmd == NULL) || (cmdSize == NULL) || (reply == NULL) || (cmdDest == NULL))
+    return(pa_INVALID_INPUT_POINTER);
+  
+  /* Sanity check the command buffer */
+  csize = sizeof(pafrmCommand_t)+ sizeof(pafrmCommandDelLut1_t) -sizeof(uint32_t);
+  if (*cmdSize < csize)
+    return (pa_INSUFFICIENT_CMD_BUFFER_SIZE);
+
+  *cmdSize = csize;
+
+  /* Sanity check the command reply information.  */
+  if ((reply->dest != pa_DEST_HOST) && (reply->dest != pa_DEST_DISCARD))
+    return (pa_INVALID_CMD_REPLY_DEST);
+    
+  /* Refresh PA Instance for read only */
+  Pa_osalMtCsEnter(&mtCsKey);
+  Pa_osalBeginMemAccess (paInst, sizeof(paInst_t));
+  eoamTable = (paEoamEntry_t *)pa_CONV_OFFSET_TO_BASE(paLObj.cfg.instPoolBaseAddr, paInst->paBufs[PA_BUFFNUM_EOAM_TABLE].base);  
+
+  /* Inform the host a table entry will be changed. */
+  Pa_osalBeginMemAccess (eoamTable,
+                         paInst->paBufs[PA_BUFFNUM_EOAM_TABLE].size);
+
+  /* Basic sanity check. The base address of the table is not verified, however */
+  if ((hdr == NULL) || (hdr->type != PA_TABLE_ENTRY_TYPE_EOAM)) {
+    ret = pa_INVALID_INPUT_HANDLE;
+    goto Pa_delEoamHandle_end;
+  }
+
+  if (hdr->status == PA_TBL_STAT_INACTIVE)  {
+    ret = pa_HANDLE_INACTIVE;
+    goto Pa_delEoamHandle_end;
+  }
+
+  comId = PA_COMID_EOAM | hdr->tableIdx;
+  
+  /* Find command destination and PDSP number */
+  switch (hdr->pdspNum)
+  {
+    case PASS_INGRESS0_PDSP1:
+        *cmdDest = pa_CMD_TX_DEST_0;
+        pdsp = 1;
+        break;
+        
+    default:
+        ret = pa_ERR_CONFIG;
+        goto Pa_delEoamHandle_end;
+  }
+  
+  /* Create the command */
+  fcmd = pa_format_fcmd_header (cmd, reply, PAFRM_CONFIG_COMMAND_DEL_LUT1, comId, pdsp, csize);
+  del = (pafrmCommandDelLut1_t *)&(fcmd->cmd);
+  del->index = SWIZ(hdr->lutIdx);
+  
+  /* Validity of the destination was already checked (HOST), so no other cases 
+   * must be considered */
+  if (reply->dest == pa_DEST_HOST)
+    fcmd->replyDest = PAFRM_DEST_PKTDMA;
+  else
+    fcmd->replyDest = PAFRM_DEST_DISCARD;
+
+  /* Mark the entry as disabled */
+  hdr->status = PA_TBL_STAT_INACTIVE;
+  
+Pa_delEoamHandle_end:
+  
+  /* Release the table */
+  Pa_osalEndMemAccess (eoamTable,
+                       paInst->paBufs[PA_BUFFNUM_EOAM_TABLE].size);
+                       
+  Pa_osalEndMemAccess (paInst, sizeof(paInst_t));
+  Pa_osalMtCsExit(mtCsKey);  
+
+  /* clear the handle */
+  *handle = NULL;
+
+  return (ret);
+
+} /* Pa_delEoamHandle */
+
+
 /***************************************************************************************
  * FUNCTION PURPOSE: Delete a FC handle
  ***************************************************************************************
@@ -3829,6 +3947,261 @@ Pa_addIp2_end:
 
 } /* Pa_addIp2 */
 
+/*******************************************************************************************
+ * FUNCTION PURPOSE: Add an Ethernet OAM entry to the Ethernet OAM table
+ *******************************************************************************************
+ * DESCRIPTION: The Ethernet OAM entry is verified and added to the EOAM table. 
+ *              The following LUT1 are used to store EOAM related entries at NetCP 1.5:
+ *                  - Ingess 0, PDSP1, LUT1_1
+ *              This API is not supported for NetCP 1.0
+ *                
+ ********************************************************************************************/
+  paReturn_t Pa_addEoamFlow  (Pa_Handle         iHandle,
+                              paEthInfo2_t      *ethInfo,    
+                              paEoamFlowInfo_t  *eoamInfo,   
+                              paHandleEoam_t    *handle,     
+                              paCmd_t           cmd,
+                              uint16_t          *cmdSize,
+                              paCmdReply_t      *reply,
+                              int               *cmdDest
+                             )
+{
+  /* The entry is created in the stack and then copied to the table. This allows
+   * for a comparison with other table entries to verify there is not an identical
+   * entry or an entry that would supercede this one */
+
+  paInst_t               *paInst    = (paInst_t *) pa_CONV_OFFSET_TO_BASE(paLObj.cfg.instPoolBaseAddr, iHandle);
+  paEoamEntry_t          *eoamTable;
+
+  paEoamEntry_t           eoamEntry;
+  pafrmCommand_t         *fcmd;
+  pafrmCommandAddLut1_t  *al1;
+  int                     i;
+  uint16_t                csize;
+  uint16_t                priority, bitMask = 0;
+  paReturn_t              ret = pa_OK;
+  uint32_t                mtCsKey, CBWords0, CBWords1; 
+  uint16_t                lut1Index = PAFRM_LUT1_INDEX_LAST_FREE;
+  
+  if((ethInfo == NULL) || (eoamInfo == NULL) || (handle == NULL) || (cmd == NULL) || (cmdSize == NULL) || (reply == NULL) || (cmdDest == NULL))
+    return(pa_INVALID_INPUT_POINTER);
+
+  /* Check if global eoam configuration is done before adding any entry to the table */
+  if (PA_GET_STATE_EOAM(paInst) == 0)
+     return (pa_LUT_ENTRY_FAILED);
+
+  if (paLObj.cfg.rmServiceHandle) {
+    int32_t lutInst  = pa_LUT1_INST_0_1;    
+    if (!pa_rmService (Rm_service_RESOURCE_ALLOCATE_USE, rmLut, &lutInst, NULL)) {
+      return pa_RESOURCE_USE_DENIED;
+    }
+
+       /* we use RM only for permission check, so freeing up immediately */
+       if (!pa_rmService (Rm_service_RESOURCE_FREE, rmLut, &lutInst, NULL)) {
+      return pa_RESOURCE_FREE_DENIED;
+    }
+  }
+
+  /* Sanity check the command buffer */
+  csize = sizeof(pafrmCommand_t)+sizeof(pafrmCommandAddLut1_t)-sizeof(uint32_t);
+  if (*cmdSize < csize)
+    return (pa_INSUFFICIENT_CMD_BUFFER_SIZE);
+
+  /* Return the actual size of the buffer used */
+  *cmdSize = csize;
+
+  /* Sanity check the command reply information.  */
+  if (reply->dest != pa_DEST_HOST)
+    return (pa_INVALID_CMD_REPLY_DEST);
+  
+  /* Form the table entry. Status is not required */
+  memset (&eoamEntry, 0, sizeof(paL2Entry_t));
+  if(ethInfo->validBitMap & pa_ETH_INFO_VALID_DST)
+    memcpy (eoamEntry.cfg.mac.dstMac,  ethInfo->dst,  sizeof(paMacAddr_t));
+  if(ethInfo->validBitMap & pa_ETH_INFO_VALID_SRC)
+    memcpy (eoamEntry.cfg.mac.srcMac,  ethInfo->src,  sizeof(paMacAddr_t));
+  if(ethInfo->validBitMap & pa_ETH_INFO_VALID_VLAN)
+    eoamEntry.cfg.mac.vlan     =  ethInfo->vlan;
+  if(ethInfo->validBitMap & pa_ETH_INFO_VALID_ETHERTYPE)
+    eoamEntry.cfg.mac.ethertype  =  ethInfo->ethertype;
+  if(ethInfo->validBitMap & pa_ETH_INFO_VALID_MPLSTAG)
+    eoamEntry.cfg.mac.mplsTag    =  ethInfo->mplsTag;
+  if(ethInfo->validBitMap & pa_ETH_INFO_VALID_INPORT)
+    eoamEntry.cfg.mac.inport     =  ethInfo->inport;
+  if(ethInfo->validBitMap & pa_ETH_INFO_VALID_VLAN_PRI)
+    eoamEntry.cfg.mac.vlanPri    =  ethInfo->vlanPri;
+    
+  /* The MPLS label is restricted to 20 bits */
+  if (eoamEntry.cfg.mac.mplsTag & ~PA_MPLS_LABEL_MASK)  
+     return(pa_INVALID_MPLS_LABEL);
+  
+  /* Refresh PA Instance */
+  Pa_osalMtCsEnter(&mtCsKey);
+  Pa_osalBeginMemAccess (paInst, sizeof(paInst_t));
+  
+  eoamTable    = (paEoamEntry_t *)pa_CONV_OFFSET_TO_BASE(paLObj.cfg.instPoolBaseAddr, paInst->paBufs[PA_BUFFNUM_EOAM_TABLE].base);     
+
+  /* Signal the application that a table modification will be done */
+  Pa_osalBeginMemAccess ((void*) eoamTable, 
+                                          paInst->paBufs[PA_BUFFNUM_EOAM_TABLE].size);
+
+  /* Look for an identical entry in the table. If one is found, return it */
+  /* perform entry check only if the LUT1 index is not specified by user */
+  if (lut1Index == PAFRM_LUT1_INDEX_LAST_FREE) {
+    for (i = 0; i < paInst->nEoam;  i++)  {
+
+      if ( ((eoamTable[i].hdr.status  == PA_TBL_STAT_PENDING_SUBS_REPLY) ||
+            (eoamTable[i].hdr.status  == PA_TBL_STAT_ACTIVE)             ) &&
+            (eoamTable[i].hdr.subType == PA_TABLE_ENTRY_SUBTYPE_MAC )) {
+
+        if (!memcmp (&(eoamTable[i].cfg), &(eoamEntry.cfg), sizeof(paL2InCfg_t)))  {
+          /* Identical entry identified */
+          if (eoamTable[i].hdr.status == PA_TBL_STAT_PENDING_SUBS_REPLY) {
+            *handle = (paHandleEoam_t)pa_CONV_BASE_TO_OFFSET(paLObj.cfg.instPoolBaseAddr,&eoamTable[i]);
+            ret = pa_INVALID_DUP_ENTRY;
+            goto Pa_addEoamFlow_end;
+          }                     
+          else {
+              /*  
+               * Identical entry is identified, reuse the same table entry
+               * Keep the entry status since it simply replaces the original entry
+               * and the user may decide not to forward the packet
+               */ 
+            lut1Index = eoamTable[i].hdr.lutIdx;
+            ret = pa_DUP_ENTRY;   
+            goto Pa_addEoamFlow_send_cmd;
+          }                  
+        }
+      }
+    }
+  }
+
+  /* Find a free entry in the table */
+  for (i = 0; i < paInst->nEoam; i++)  {
+
+    if (eoamTable[i].hdr.status == PA_TBL_STAT_INACTIVE)
+      break;
+
+  }
+
+  if (i == paInst->nEoam)  {
+    ret = pa_HANDLE_TABLE_FULL;
+    goto Pa_addEoamFlow_end;
+  }
+  
+Pa_addEoamFlow_send_cmd:
+  
+  /* The handle is just a pointer to the table entry */
+  *handle = (paHandleEoam_t)pa_CONV_BASE_TO_OFFSET(paLObj.cfg.instPoolBaseAddr,&eoamTable[i]);
+
+  /* Create the command */
+  fcmd = pa_format_fcmd_header (cmd, reply, PAFRM_CONFIG_COMMAND_ADDREP_LUT1, PA_COMID_EOAM  | i, 1, csize);
+
+  /* Validity of the destination was already checked (HOST), so no other cases 
+   * must be considered */
+  fcmd->replyDest = PAFRM_DEST_PKTDMA;
+
+  al1  = (pafrmCommandAddLut1_t *) &(fcmd->cmd);
+  
+  al1->index    = SWIZ(lut1Index);  
+  al1->type     = PAFRM_COM_ADD_LUT1_STANDARD;
+    
+  CBWords0      = PAFRM_LUT1_CLASS_STANDARD << PAFRM_LUT1_CLASS_SHIFT;
+  CBWords1      = PAFRM_LUT1_VALID_PKTTYPE;
+  priority      = 0; 
+  
+  al1->u.mac.pktType     = PAFRM_L2_PKT_TYPE_MAC;
+
+  if(ethInfo->validBitMap & pa_ETH_INFO_VALID_DST)
+  {
+    memcpy (al1->u.mac.dmac, eoamEntry.cfg.mac.dstMac, sizeof(paMacAddr_t));
+    CBWords0 |=  PAFRM_LUT1_VALID_DMAC_ALL;
+    priority += 10;
+  }  
+
+  if(ethInfo->validBitMap & pa_ETH_INFO_VALID_SRC)
+  {
+    memcpy (al1->u.mac.smac, eoamEntry.cfg.mac.srcMac, sizeof(paMacAddr_t));
+    CBWords0 |=  PAFRM_LUT1_VALID_SMAC;
+    priority += 10;
+  }  
+
+  if(ethInfo->validBitMap & pa_ETH_INFO_VALID_ETHERTYPE)
+  {
+    al1->u.mac.etherType = SWIZ(eoamEntry.cfg.mac.ethertype);
+    CBWords0 |=  PAFRM_LUT1_VALID_ETHERTYPE;
+    priority += 10;
+    
+  }
+  
+  if (ethInfo->validBitMap & pa_ETH_INFO_VALID_MPLSTAG) 
+  {
+    al1->u.mac.mpls     = SWIZ(eoamEntry.cfg.mac.mplsTag);
+    CBWords0 |=  PAFRM_LUT1_VALID_MPLS;
+    priority += 10;
+  }
+
+  if(ethInfo->validBitMap & pa_ETH_INFO_VALID_VLAN)
+  {
+    al1->u.mac.vlanId1  = SWIZ(eoamEntry.cfg.mac.vlan);
+    CBWords1 |=  PAFRM_LUT1_VALID_VLANID1;
+    priority += 10;
+    
+  }  
+    
+  if (ethInfo->validBitMap & pa_ETH_INFO_VALID_INPORT)
+  {
+    al1->u.mac.inport = SWIZ(eoamEntry.cfg.mac.inport);
+    CBWords1 |=  PAFRM_LUT1_VALID_INPORT;
+    priority += 10;
+  }
+
+  if (ethInfo->validBitMap & pa_ETH_INFO_VALID_VLAN_PRI)
+  {
+    al1->u.mac.vlanPri1 = SWIZ(eoamEntry.cfg.mac.vlanPri);
+    CBWords1 |=  PAFRM_LUT1_VALID_VLAN_PRI1;
+    priority += 10;
+  }  
+  
+  al1->CBWords0   = SWIZ(CBWords0);
+  al1->CBWords1   = SWIZ(CBWords1); 
+  al1->priority   = SWIZ(priority);
+  al1->bitMask    = SWIZ(bitMask);
+
+  /* Forwarding information */
+  al1->match.forwardType        = PAFRM_FORWARD_TYPE_EOAM;
+  al1->match.flowId             = SWIZ(eoamInfo->flowId);
+  al1->match.queue              = SWIZ(eoamInfo->destQueue); 
+  al1->match.u.eoam.context     = SWIZ(eoamInfo->swInfo0);
+  al1->match.u.eoam.megLevel    = SWIZ(eoamInfo->megLevel);
+  al1->match.u.eoam.statsIndex  = SWIZ(eoamInfo->statsIndex);
+
+  if (ret != pa_DUP_ENTRY)
+  {
+    /* Initialze, the table entry, add the status and pdsp NUM */
+    eoamEntry.hdr.type     = PA_TABLE_ENTRY_TYPE_EOAM;
+    eoamEntry.hdr.subType  = PA_TABLE_ENTRY_SUBTYPE_MAC;
+    eoamEntry.hdr.status   = PA_TBL_STAT_PENDING_SUBS_REPLY;
+    eoamEntry.hdr.pdspNum  = PASS_INGRESS0_PDSP1;
+    eoamEntry.hdr.lutIdx   = -1;
+    eoamEntry.hdr.tableIdx = i;
+
+    memcpy (&eoamTable[i], &eoamEntry, sizeof(paL2Entry_t));
+  }
+
+  /* The destination for this command must be PDSP 1 */
+  *cmdDest = pa_CMD_TX_DEST_0;
+  
+Pa_addEoamFlow_end:
+  Pa_osalEndMemAccess ((void *) eoamTable,
+                       paInst->paBufs[PA_BUFFNUM_EOAM_TABLE].size);
+  Pa_osalEndMemAccess (paInst, sizeof(paInst_t));
+  Pa_osalMtCsExit(mtCsKey);  
+  
+  return (ret);
+
+}
+
 /*******************************************************************************************
  * FUNCTION PURPOSE: Add an ACL entry to the ACL table
  *******************************************************************************************
@@ -3877,6 +4250,14 @@ paReturn_t  Pa_addAcl  (Pa_Handle          iHandle,
   {
     return (pa_INVALID_INPUT_POINTER);
   }
+
+  /* ACL Outer IP resource can not be used when EOAM is there in the system */
+  if ( (aclInst == pa_ACL_INST_OUTER_IP) &&
+       (PA_GET_STATE_EOAM(paInst) == 1) )
+  {
+    /* LUT1 resource for Outer ACL can not be used as it is used for EOAM classification */
+    return (pa_RESOURCE_USE_DENIED);
+  }
   
   /* Sanity check the command buffer */
   csize = sizeof(pafrmCommand_t)+sizeof(pafrmCommandAddLut1_t)-sizeof(uint32_t); 
@@ -5821,6 +6202,7 @@ paReturn_t Pa_forwardResult (Pa_Handle iHandle, void *vresult, paEntryHandle_t *
 {
   paInst_t              *paInst = (paInst_t *) pa_CONV_OFFSET_TO_BASE(paLObj.cfg.instPoolBaseAddr, iHandle);
   paL2Entry_t           *l2Table;
+  paEoamEntry_t         *eoamTable;  
   paL3Entry_t           *l3Table;
   paAclEntry_t          *aclTable = NULL;
   paFcEntry_t           *fcTable = NULL;
@@ -5832,6 +6214,7 @@ paReturn_t Pa_forwardResult (Pa_Handle iHandle, void *vresult, paEntryHandle_t *
   paL3Entry_t           *l3e = NULL, *l3e2 = NULL;
   paAclEntry_t          *acle = NULL;
   paFcEntry_t           *fce = NULL;
+  paEoamEntry_t         *eoame = NULL;
   paL2L3Header_t        *hdr, *hdr2;
   paL4Entry_t           *pL4Entry;
   int8_t                 origStatus, origStatus2;
@@ -5867,7 +6250,13 @@ paReturn_t Pa_forwardResult (Pa_Handle iHandle, void *vresult, paEntryHandle_t *
     Pa_osalBeginMemAccess ( (void *) vlnkTable,
                            paInst->paBufs[PA_BUFFNUM_VIRTUAL_LNK_TABLE].size);
   } 
-                          
+
+  if (paInst->paBufs[PA_BUFFNUM_EOAM_TABLE].size)
+  {
+    eoamTable  = (paEoamEntry_t *)pa_CONV_OFFSET_TO_BASE(paLObj.cfg.instPoolBaseAddr, paInst->paBufs[PA_BUFFNUM_EOAM_TABLE].base);  
+    Pa_osalBeginMemAccess ((void *) eoamTable,
+                           paInst->paBufs[PA_BUFFNUM_EOAM_TABLE].size);    
+  }  
   if (paInst->paBufs[PA_BUFFNUM_ACL_TABLE].size)
   {
     aclTable  = (paAclEntry_t *)pa_CONV_OFFSET_TO_BASE(paLObj.cfg.instPoolBaseAddr, paInst->paBufs[PA_BUFFNUM_ACL_TABLE].base);
@@ -5910,6 +6299,17 @@ paReturn_t Pa_forwardResult (Pa_Handle iHandle, void *vresult, paEntryHandle_t *
       hdr = &(acle->hdr);
       retHandle->l2l3Handle = (paHandleL2L3_t)pa_CONV_BASE_TO_OFFSET(paLObj.cfg.instPoolBaseAddr,acle);
       *handleType           =  pa_ACL_HANDLE;
+    } 
+    else if ((fcmd->comId & PA_COMID_L_MASK) == PA_COMID_EOAM) {
+      if (NULL == eoamTable)
+      {
+        ret = pa_INVALID_INPUT_HANDLE;
+        goto Pa_forwardResult_end;
+      }  
+      eoame = &eoamTable[fcmd->comId & PA_COMID_IDX_MASK];
+      hdr = &(eoame->hdr);
+      retHandle->l2l3Handle = (paHandleL2L3_t)pa_CONV_BASE_TO_OFFSET(paLObj.cfg.instPoolBaseAddr,eoame);
+      *handleType           =  pa_EOAM_HANDLE;      
     } else {
     
       if (NULL == fcTable)
@@ -6088,6 +6488,11 @@ Pa_forwardResult_end:
     Pa_osalEndMemAccess ((void *)aclTable,
                          paInst->paBufs[PA_BUFFNUM_ACL_TABLE].size);
   }
+  if (paInst->paBufs[PA_BUFFNUM_EOAM_TABLE].size)
+  {
+    Pa_osalEndMemAccess ((void *)eoamTable,
+                         paInst->paBufs[PA_BUFFNUM_EOAM_TABLE].size);
+  }  
   if (paInst->paBufs[PA_BUFFNUM_FC_TABLE].size)
   {
     Pa_osalEndMemAccess ((void *)fcTable,
@@ -7628,8 +8033,8 @@ paReturn_t Pa_control (Pa_Handle      iHandle,
   uint16_t            csize;
   paReturn_t          ret = pa_OK;
   uint32_t            mtCsKey;  
-  
- if(ctrl == NULL)return(pa_INVALID_INPUT_POINTER);
+
 if(ctrl == NULL)return(pa_INVALID_INPUT_POINTER);
   
   if((ctrl->code > pa_CONTROL_MAX_CONFIG_GEN2))
     return (pa_ERR_CONFIG);
@@ -7858,6 +8263,12 @@ paReturn_t Pa_control (Pa_Handle      iHandle,
     if (cfg->pOutAclConfig)
     {
         paAclConfig_t* pAclCfg = cfg->pOutAclConfig;
+
+        /* ACL config is not permitted when EOAM is enabled */
+        if (PA_GET_STATE_EOAM(paInst) == 1)
+        {
+          ret = pa_ERR_CONFIG;
+        }
     
         /* range check */
         if (pAclCfg->action >  pa_ACL_ACTION_MAX) 
@@ -7969,6 +8380,87 @@ paReturn_t Pa_control (Pa_Handle      iHandle,
         pa_ra_group_cfg(pRaGroupCfg, &paLObj.pSysRegs->RA.FLOW_OVERRIDE[1], 1);        
     
     }
+
+    /* EOAM Global Configuration */
+    if (cfg->pEoamConfig)
+    {
+        paEoamGlobalConfig_t* pEoamCfg = cfg->pEoamConfig;      
+        paInst->cfg.eOamConfig = *pEoamCfg;
+
+        /* Check if EOAM table is allocated for global configuration */
+        if (paInst->nEoam <= 0)
+          return (pa_ERR_CONFIG);
+
+        if (pEoamCfg->enable) 
+        {
+          PA_SET_STATE_EOAM(paInst, 1); /* EOAM is now enabled */
+          cpa->eoam.ctrlBitMap |= PAFRM_EOAM_CONTROL_EN;
+        }
+        else
+        {
+          PA_SET_STATE_EOAM(paInst, 0); /* EOAM is now disabled */ 
+          cpa->eoam.ctrlBitMap &= ~PAFRM_EOAM_CONTROL_EN;          
+        }
+        
+        cpa->validFlag       |= PAFRM_COMMAND_CONFIG_VALID_EOAM;
+        cpa->eoam.ctrlBitMap  = SWIZ(cpa->eoam.ctrlBitMap);        
+
+        if (pEoamCfg->enable)
+        {
+          switch (pEoamCfg->freq)
+          {
+              case pa_INPUT_FREQ_1000MHZ: 
+                {
+                  cpa->eoam.mul        = 24576;
+                  cpa->eoam.nsNumRoAcc = 393210;
+                  cpa->eoam.nsRoAcc    = 393210;
+                  cpa->eoam.numRo      = 1;
+                  break;
+                }
+              case pa_INPUT_FREQ_1050MHZ:
+                {
+                  cpa->eoam.mul        = 23406;
+                  cpa->eoam.nsNumRoAcc = 2621400;
+                  cpa->eoam.nsRoAcc    = 374486;
+                  cpa->eoam.numRo      = 7; 
+                  break;
+                }
+              case pa_INPUT_FREQ_1049p6MHZ:
+                {
+                  cpa->eoam.mul        = 23415;
+                  cpa->eoam.nsNumRoAcc = 122878125;
+                  cpa->eoam.nsRoAcc    = 374628;
+                  cpa->eoam.numRo      = 328;              
+                  break;
+                }
+              default:
+                return (pa_ERR_CONFIG);        
+          }
+        
+
+          cpa->eoam.mul        = SWIZ(cpa->eoam.mul);              
+          cpa->eoam.nsNumRoAcc = SWIZ(cpa->eoam.nsNumRoAcc);              
+          cpa->eoam.nsRoAcc    = SWIZ(cpa->eoam.nsRoAcc);              
+          cpa->eoam.numRo      = SWIZ(cpa->eoam.numRo);
+
+          if (pEoamCfg->validBitMap & pa_EOAM_VALID_STATS_CTRL)
+          {  
+            paEoamStatsCtrlConfig_t   *eoamStatsCtrlCfg = &pEoamCfg->statsCtrl;
+            int   i, numProtos = eoamStatsCtrlCfg->numProtoExcl;
+
+            if (numProtos > pa_MAX_EOAM_PROTO_EXCLUSION)
+               return (pa_ERR_CONFIG);
+
+            if (numProtos)
+            {
+              for ( i = 0; i < numProtos; i++ )
+              {
+                cpa->eoam.exclEthTypes[i] = SWIZ(eoamStatsCtrlCfg->exclEthTypes[i]);
+              }
+            }
+          } 
+        }
+    }
   
     /* Destination can be any PDSP, but POST PDSP0 is used since it is lightly loaded */
     *cmdDest = pa_CMD_TX_DEST_5;
@@ -8088,12 +8580,27 @@ paReturn_t Pa_control (Pa_Handle      iHandle,
             break;
         }
 
+        case pa_CONTROL_TIME_OFFSET_CONFIG:
+        {
+          paSetTimeOffset_t  *tsCfg        = &ctrl->params.tOffsetCfg;
+
+          ccfg->cfgCode = PAFRM_SYSTEM_CONFIG_CODE_TIME_OFFSET_CFG;
+          /* time offset correction configuration, can be any PDSP */
+          ccfg->u.timeOffsetCfg.offset_sec = tsCfg->offset_sec;
+          ccfg->u.timeOffsetCfg.offset_ns  = tsCfg->offset_ns;
+          
+          ccfg->u.timeOffsetCfg.offset_sec = SWIZ(ccfg->u.timeOffsetCfg.offset_sec);
+          ccfg->u.timeOffsetCfg.offset_ns  = SWIZ(ccfg->u.timeOffsetCfg.offset_ns);          
+          /* Command proc at Ingress 4 PDSP1 */
+          *cmdDest = pa_CMD_TX_DEST_4;
+          break;
+        }
+
         default:
           ret = pa_ERR_CONFIG;
           break;       
     }
   }
-  
   return (ret);
 
 } /* Pa_control */
@@ -8288,7 +8795,41 @@ paReturn_t Pa_queryAclStats (Pa_Handle      handle,
   
   return (pa_OK);
 
-} /* Pa_queryAclStats */                            
+} /* Pa_queryAclStats */ 
+
+/********************************************************************************
+ * FUNCTION PURPOSE: Query EOAM statistics
+ ********************************************************************************
+ * DESCRIPTION: This API queries EOAM statistics
+ ********************************************************************************/
+paReturn_t Pa_queryEoamStats (Pa_Handle       handle,
+                              paHandleEoam_t  eoamHandle,
+                              uint16_t        doClear, 
+                              paEoamStats_t  *pEoamStats)
+{
+
+  paL2Entry_t  *eoamEntry = (paL2Entry_t *)pa_CONV_OFFSET_TO_BASE(paLObj.cfg.instPoolBaseAddr, eoamHandle);
+                         
+  volatile    uint32_t *pSrcCnt;
+  
+  if (pEoamStats == NULL)
+    return(pa_INVALID_INPUT_POINTER);
+  
+  /* Refresh EOAM Instance for read only */
+  Pa_osalBeginMemAccess (eoamEntry, sizeof(paL2L3Header_t));
+  
+  pSrcCnt = doClear? &paLObj.pSysRegs->COLLECT_STATS[PASS_EOAM_STATS_BASE_ENTRY(eoamEntry->hdr.tableIdx)]:
+                     &paLObj.pSysRegs->QUERY_STATS[PASS_EOAM_STATS_BASE_ENTRY(eoamEntry->hdr.tableIdx)];
+  
+  Pa_osalEndMemAccess (eoamEntry, sizeof(paL2L3Header_t));
+  
+  pEoamStats->nMatchPackets = pSrcCnt[0];
+  pEoamStats->nMatchBytes   = pSrcCnt[1];
+  
+  return (pa_OK);
+
+} /* Pa_queryEoamStats */
+
 
 /********************************************************************************
  * FUNCTION PURPOSE: Query Flow Cache statistics
@@ -9049,6 +9590,32 @@ paReturn_t Pa_formatTxCmd (int             nCmd,
         }
         break;
 
+      case pa_CMD_INS_TIME:
+        {          
+          paInsTime_t  *insTime            = &cmdInfo[index].params.insTime;
+          pasahoInsMsgTime_t *fwInsMsgTime = (pasahoInsMsgTime_t *)(bufAddr + cmdOffset);
+          PASAHO_SET_CMDID (fwInsMsgTime, PASAHO_PAMOD_INSERT_MSG_TIME);
+          PASAHO_SET_SUB_CODE_INS_MSG_TIME(fwInsMsgTime);     
+          PASAHO_SET_INS_OFFSET_MSG_TIME(fwInsMsgTime, insTime->startOffset);
+          cmdOffset += sizeof (pasahoInsMsgTime_t);
+          if(fAlignDetect)
+            cmdBlockSize+=sizeof(pasahoInsMsgTime_t);           
+        }
+        break;
+      case pa_CMD_INS_COUNT:
+        {          
+          paInsCount_t  *insCount          = &cmdInfo[index].params.insCount;
+          pasahoInsMsgCount_t *fwInsMsgCnt = (pasahoInsMsgCount_t *)(bufAddr + cmdOffset);
+          PASAHO_SET_CMDID (fwInsMsgCnt, PASAHO_PAMOD_INSERT_MSG_COUNT);
+          PASAHO_SET_SUB_CODE_INS_MSG_TIME(fwInsMsgCnt);     
+          PASAHO_SET_INS_OFFSET_MSG_COUNT(fwInsMsgCnt, insCount->startOffset);
+          PASAHO_SET_COUNTER_INDEX_FOR_MSG_COUNT(fwInsMsgCnt, insCount->countIndex);
+          cmdOffset += sizeof (pasahoInsMsgCount_t);
+          if(fAlignDetect)
+            cmdBlockSize+=sizeof(pasahoInsMsgCount_t);           
+        }
+        break;
+        
       default:
         return (pa_ERR_CONFIG);
     }
@@ -9324,11 +9891,11 @@ paReturn_t Pa_getTimestamp  (Pa_Handle            iHandle,
         0xFFF08800,         /* C9: PDSP Timer (PDSP specific) */
         0xFFF09000,         /* C10: LUT1 Registers */
         0xFFF09400,         /* C11: LUT2 Registers */
-        0x00000000,         /* C12: Reserved*/
-        0x00000000,         /* C13: Reserved*/
+        0x00000000,         /* C12: Reserved */
+        0x00000000,         /* C13: Reserved */
         0xFFF80000,         /* C14: PDSP Context */
         0x00000000,         /* C15: Reserved*/
-        0xFFF80400,         /* C16: IP Traffic Flow */
+        0xFFF80400,         /* C16: Time Accumulation Constants and EOAM Exception table */
         0xFFF80800,         /* C17: IP Reassembly Control Block */
         0xFFF80C00,         /* C18: IP Protocol Table */
         0xFF020000,         /* C19: Custom LUT1 and global configuration */
@@ -9360,11 +9927,11 @@ paReturn_t Pa_getTimestamp  (Pa_Handle            iHandle,
         0xFFF18800,         /* C9: PDSP Timer (PDSP specific) */
         0xFFF19000,         /* C10: LUT1 Registers */
         0xFFF19400,         /* C11: LUT2 Registers */
-        0x00000000,         /* C12: Reserved*/
+        0x00000000,         /* C12: Reserved */
         0x00000000,         /* C13: Reserved*/
         0xFFF80100,         /* C14: PDSP Context */
         0x00000000,         /* C15: Reserved*/
-        0xFFF80400,         /* C16: IP Traffic Flow */
+        0xFFF80400,         /* C16: Time Accumulation Constants and EOAM Exception table */
         0xFFF80800,         /* C17: IP Reassembly Control Block */
         0xFFF80D00,         /* C18: IP Protocol Table */
         0xFF020000,         /* C19: Custom LUT1 and global configuration */
@@ -9396,7 +9963,7 @@ paReturn_t Pa_getTimestamp  (Pa_Handle            iHandle,
         0xFFF08800,         /* C9: PDSP Timer (PDSP specific) */
         0xFFF09000,         /* C10: LUT1 Registers */
         0xFFF09400,         /* C11: LUT2 Registers */
-        0x00000000,         /* C12: Reserved*/
+        0x00000000,         /* C12: Reserved */
         0x00000000,         /* C13: Reserved*/
         0xFFF80000,         /* C14: PDSP Context */
         0x00000000,         /* C15: Reserved*/
@@ -9432,7 +9999,7 @@ paReturn_t Pa_getTimestamp  (Pa_Handle            iHandle,
         0xFFF18800,         /* C9: PDSP Timer (PDSP specific) */
         0xFFF19000,         /* C10: LUT1 Registers */
         0xFFF19400,         /* C11: LUT2 Registers */
-        0x00000000,         /* C12: Reserved*/
+        0x00000000,         /* C12: Reserved */
         0x00000000,         /* C13: Reserved*/
         0xFFF80100,         /* C14: PDSP Context */
         0x00000000,         /* C15: Reserved*/
@@ -9468,7 +10035,7 @@ paReturn_t Pa_getTimestamp  (Pa_Handle            iHandle,
         0xFFF08800,         /* C9: PDSP Timer (PDSP specific) */
         0xFFF09000,         /* C10: LUT1 Registers */
         0xFFF09400,         /* C11: LUT2 Registers */
-        0x00000000,         /* C12: Reserved*/
+        0x00000000,         /* C12: Reserved */
         0x00000000,         /* C13: Reserved*/
         0xFFF80000,         /* C14: PDSP Context */
         0x00000000,         /* C15: Reserved*/
@@ -9504,7 +10071,7 @@ paReturn_t Pa_getTimestamp  (Pa_Handle            iHandle,
         0xFFF08800,         /* C9: PDSP Timer (PDSP specific) */
         0xFFF09000,         /* C10: LUT1 Registers */
         0xFFF09400,         /* C11: LUT2 Registers */
-        0x00000000,         /* C12: Reserved*/
+        0x00000000,         /* C12: Reserved */
         0x00000000,         /* C13: Reserved*/
         0xFFF80000,         /* C14: PDSP Context */
         0x00000000,         /* C15: Reserved*/
@@ -9540,7 +10107,7 @@ paReturn_t Pa_getTimestamp  (Pa_Handle            iHandle,
         0xFFF08800,         /* C9: PDSP Timer (PDSP specific) */
         0xFFF09000,         /* C10: LUT1 Registers */
         0xFFF09400,         /* C11: LUT2 Registers */
-        0x00000000,         /* C12: Reserved*/
+        0x00000000,         /* C12: Reserved */
         0x00000000,         /* C13: Reserved*/
         0xFFF80000,         /* C14: PDSP Context */
         0x00000000,         /* C15: Reserved*/
@@ -9576,7 +10143,7 @@ paReturn_t Pa_getTimestamp  (Pa_Handle            iHandle,
         0xFFF18800,         /* C9: PDSP Timer (PDSP specific) */
         0xFFF19000,         /* C10: LUT1 Registers */
         0xFFF19400,         /* C11: LUT2 Registers */
-        0x00000000,         /* C12: Reserved*/
+        0x00000000,         /* C12: Reserved */
         0x00000000,         /* C13: Reserved*/
         0x00000000,         /* C14: Reserved*/
         0x00000000,         /* C15: Reserved*/
@@ -9612,7 +10179,7 @@ paReturn_t Pa_getTimestamp  (Pa_Handle            iHandle,
         0xFFF08800,         /* C9: PDSP Timer (PDSP specific) */
         0xFFF09000,         /* C10: LUT1 Registers */
         0xFFF09400,         /* C11: LUT2 Registers */
-        0x00000000,         /* C12: Reserved*/
+        0x00000000,         /* C12: Reserved */
         0x00000000,         /* C13: Reserved*/
         0x00000000,         /* C14: Reserved*/
         0xFFF80400,         /* C15: User Stats Control Block */
@@ -9648,7 +10215,7 @@ paReturn_t Pa_getTimestamp  (Pa_Handle            iHandle,
         0xFFF18800,         /* C9: PDSP Timer (PDSP specific) */
         0xFFF19000,         /* C10: LUT1 Registers */
         0xFFF19400,         /* C11: LUT2 Registers */
-        0x00000000,         /* C12: Reserved*/
+        0x00000000,         /* C12: Reserved */
         0x00000000,         /* C13: Reserved*/
         0x00000000,         /* C14: Reserved*/
         0xFFF80400,         /* C15: User Stats Control Block */
index 5a6e4dfd3adf329a0e7db9df0c0c9e51799f272d..e61469b55825d55dcbc09fd1ed55455fec374cd0 100644 (file)
@@ -249,6 +249,15 @@ typedef struct pafrmDiscard_s  {
 #define PAFRM_CUSTOM_TYPE_LUT1 pa_CUSTOM_TYPE_LUT1    /* 1 */
 #define PAFRM_CUSTOM_TYPE_LUT2 pa_CUSTOM_TYPE_LUT2    /* 2 */
 
+/* Routing information used to forward Ethernet OAM packets */
+typedef struct pafrmEoamForward_s  {
+  uint32_t context;             /* Information returned in SwInfo0 for the control packets forwarded to host */
+  uint16_t statsIndex;          /* entry statistics index */  
+  uint8_t  megLevel;            /* MEG threshold level to compare for counter statistics */    
+  uint8_t  rsvd1;
+  uint32_t rsvd2;               /* Reserved for future use */
+} pafrmForwardEoam_t;
+
 /*
  * Routing information used to forward packets fromm PA sub-system to various destinations
  */
@@ -266,6 +275,7 @@ typedef struct pafrmForward_s  {
     pafrmForwardPa_t   pa;      /* PA internal routing information */
     pafrmForwardEf_t   ef;      /* PA Egress Flow information */
     pafrmDiscard_t     discard; /* Discard specific routing information */
+    pafrmForwardEoam_t eoam;    /* Ethernet OAM specific routing information */  
   } u;
   
 } pafrmForward_t;
@@ -278,10 +288,10 @@ enum  {
  PAFRM_FORWARD_TYPE_SRIO,         /* use PAFRM_DEST_CDMA */
  PAFRM_FORWARD_TYPE_SA_DIRECT,    /* use flowId as stream ID  */
  PAFRM_FORWARD_TYPE_DISCARD,
- PAFRM_FORWARD_TYPE_EFLOW          
+ PAFRM_FORWARD_TYPE_EFLOW,
+ PAFRM_FORWARD_TYPE_EOAM          
 };
 
-
 #define PAFRM_FORWARD_CONTROL_USE_LOC_DMA       0x80          /* SASS only: Use local DMA */
 #define PAFRM_FORWARD_TYPE_MASK                 0x0F
 
@@ -429,6 +439,29 @@ typedef struct pafrmRaConfig_s{
 #define PAFRM_RA_CONTROL_USE_LOC_DMA    (1 << 1)     /* Input traffic uses local DMA */
 #define PAFRM_RA_CONTROL_TO_QUEUE       (1 << 2)     /* Output packets are delivered to host queue */             
 
+/* Ethernet OAM Global configuration (Shared Scratch RAM) */
+#define     PAFRM_EOAM_MAX_PROTOCOLS    8
+
+typedef struct pafrmEoamCfg_s {
+  uint8_t   ctrlBitMap;   /* EOAM Control Bits */
+  uint8_t   rsvd[3];      /* alignment */
+  uint32_t  nsRoAcc;      /* nano second accumulation over a roll_over periods */  
+  uint32_t  nsNumRoAcc;   /* nano second accumulation over (N * roll_over) periods */  
+
+  uint16_t  numRo;        /* Number of Roll overs to consider for error correction  */  
+  uint16_t  mul;          /* Multiplication factor, keeping shift factor as 13 */    
+  
+  uint16_t  exclEthTypes[PAFRM_EOAM_MAX_PROTOCOLS]; /* Eth Protocols that do not trigger counts on target flow match */
+} pafrmEoamCfg_t;
+
+#define PAFRM_EOAM_CONTROL_EN             (1 << 0)     /* EOAM is enabled */
+
+/* time stamp offset set configuration (Shared RAM) */
+typedef struct pafrmEoamSetTOffsetCfg_s {
+  uint32_t  offset_sec;   /* 4 byte 1588 time offset at PA time 0 for seconds */
+  uint32_t  offset_ns;    /* 4 byte 1588 time offset at PA time 0 for nano seconds */
+} pafrmSetTOffsetCfg_t;
+
 /* Exception routing enumeration */
 /* For reference only */
 enum  {
@@ -669,7 +702,7 @@ typedef struct pafrmCommandConfigPa_s
   pafrmAclConfig_t           inAcl;          /* Inner IP ACL Configuration */
   pafrmRaConfig_t            outRa;          /* Outer IP RA configuration */
   pafrmRaConfig_t            inRa;           /* Inner IP RA configuration */
-  
+  pafrmEoamCfg_t             eoam;           /* Ethernet OAM global configuration */  
 } pafrmCommandConfigPa_t;
 
 #define PAFRM_COMMAND_CONFIG_VALID_MAX_COUNTS       (1 << 0)
@@ -683,6 +716,7 @@ typedef struct pafrmCommandConfigPa_s
 #define PAFRM_COMMAND_CONFIG_VALID_IN_IP_ACL        (1 << 8)
 #define PAFRM_COMMAND_CONFIG_VALID_OUT_IP_RA        (1 << 9)
 #define PAFRM_COMMAND_CONFIG_VALID_IN_IP_RA         (1 << 10)
+#define PAFRM_COMMAND_CONFIG_VALID_EOAM             (1 << 11)
 
 /* PA system configuration command */
 typedef struct pafrmCommandSysConfigPa_s
@@ -702,22 +736,23 @@ typedef struct pafrmCommandSysConfigPa_s
     pafrmPktCapCfg_t          egressPktCapCfg; /* Egress packet capture configuration */       
     pafrmDefRouteCfg_t        defRouteCfg;     /* Ingress default route configuration */       
     pafrmEQosModeConfig_t     eqosCfg;         /* Eqos configuration */
+    pafrmSetTOffsetCfg_t      timeOffsetCfg;   /* time offset configuration */
   } u;  
   
 } pafrmCommandSysConfigPa_t;
 
 /* PA system configuration codes */
-#define PAFRM_SYSTEM_CONFIG_CODE_EROUTE         0
-#define PAFRM_SYSTEM_CONFIG_CODE_CUSTOM_LUT1    1
-#define PAFRM_SYSTEM_CONFIG_CODE_CUSTOM_LUT2    2
-#define PAFRM_SYSTEM_CONFIG_CODE_802_1AG        3
-#define PAFRM_SYSTEM_CONFIG_CODE_IPSEC_NAT_T    4
-#define PAFRM_SYSTEM_CONFIG_CODE_GTPU           5
-#define PAFRM_SYSTEM_CONFIG_CODE_IGRESS_PCAP    6
-#define PAFRM_SYSTEM_CONFIG_CODE_EGRESS_PCAP    7
-#define PAFRM_SYSTEM_CONFIG_CODE_DEFAULT_ROUTE  8
-#define PAFRM_SYSTEM_CONFIG_CODE_EQoS_MODE      9
-
+#define PAFRM_SYSTEM_CONFIG_CODE_EROUTE              0
+#define PAFRM_SYSTEM_CONFIG_CODE_CUSTOM_LUT1         1
+#define PAFRM_SYSTEM_CONFIG_CODE_CUSTOM_LUT2         2
+#define PAFRM_SYSTEM_CONFIG_CODE_802_1AG             3
+#define PAFRM_SYSTEM_CONFIG_CODE_IPSEC_NAT_T         4
+#define PAFRM_SYSTEM_CONFIG_CODE_GTPU                5
+#define PAFRM_SYSTEM_CONFIG_CODE_IGRESS_PCAP         6
+#define PAFRM_SYSTEM_CONFIG_CODE_EGRESS_PCAP         7
+#define PAFRM_SYSTEM_CONFIG_CODE_DEFAULT_ROUTE       8
+#define PAFRM_SYSTEM_CONFIG_CODE_EQoS_MODE           9
+#define PAFRM_SYSTEM_CONFIG_CODE_TIME_OFFSET_CFG    10
 
 /* Protocol field values (IPV4) / next header (IPV6) */
 #define IP_PROTO_IPV6_HOP_BY_HOP    0   // IPv6 extension header - hop by hop 
@@ -1091,6 +1126,41 @@ typedef struct pafrmCommandAddLut1_s  {
 #define PAFRM_COM_ADD_LUT1_CUSTOM      2   /* Custom LUT1 */
 #define PAFRM_COM_ADD_LUT1_VLINK       3   /* Standard entry with virtual Link */
 
+#if 0
+/* Add EOAM entry to LUT1 of PDSP1 (gen 2 support only) */
+#define PAFRM_EOAM_1DM_PKT_OPCODE      45
+#define PAFRM_EOAM_LMR_PKT_OPCODE      42
+#define PAFRM_EOAM_LMM_PKT_OPCODE      43
+#define PAFRM_EOAM_DMR_PKT_OPCODE      46
+#define PAFRM_EOAM_DMM_PKT_OPCODE      47
+
+typedef struct pafrmCommandAddEoam_s  {
+
+  uint16_t index;         /* LUT1 index */
+  uint8_t  type;          /* Custom or standard, EOAM uses standard */
+  uint8_t  rsvd1;         /* Reserved for future use */
+
+  uint8_t  megLevel;      /* MEG Level */
+  uint8_t  rsvd2;
+  uint16_t statsIndex;    /* entry statistics index  */
+  
+  /* LUT1 view */
+  pafrmComL1Mac_t       mac;     /* matching information for MAC entry */
+  
+  /* Command header */
+  uint16_t range1Hi;     /* Range High for bytes 44-45 */
+  uint16_t range0Hi;     /* Range High for bytes 42-43 */
+  uint32_t CBWords0;     /* Care Bits Word0 */
+  uint32_t CBWords1;     /* Care Bits Word1 */
+  uint16_t bitMask;      /* BitMask for Bytes 0-1 */
+  uint16_t priority;     /* Record priority "score", relative index */
+  
+  /* Routing information for EOAM control packets when a match is found */
+  pafrmEoamForward_t    eoamFwd;
+  
+} pafrmCommandAddEoam_t;
+#endif
+
 /* Delete entry from LUT1 */
 typedef struct pafrmCommandDelLut1_s
 {
index a7982ef101982483f024d2b612efda36db7dae2c..4c12b334e71e6d387d831e7f61b2415e7dd9062e 100644 (file)
@@ -87,7 +87,7 @@
  *                PA_BUFFNUM_ACL_TABLE - the ACL handle table
  *                PA_BUFFNUM_FC_TABLE - the FC handle table
  */
-const int paMemAligns[pa_N_BUFS_GEN2] = { 8, 8, 8, 8, 8, 8, 8 };
+const int paMemAligns[pa_N_BUFS_GEN2] = { 8, 8, 8, 8, 8, 8, 8, 8 };
 
 
 /* Check that MAX_CMD_BUF_SIZE is correct */
@@ -208,6 +208,9 @@ paReturn_t Pa_getBufferReq (paSizeInfo_t *sizeCfg, int sizes[], int aligns[])
   
   /* FC Table size requirements */
   sizes[PA_BUFFNUM_FC_TABLE] = sizeCfg->nMaxFc * sizeof(paFcEntry_t);
+
+  /* Ethernet OAM table Size requirements */
+  sizes[PA_BUFFNUM_EOAM_TABLE] = sizeCfg->nMaxEoam * sizeof(paL2Entry_t);  
   
   for ( i = 0; i < pa_N_BUFS_GEN2; i++)
   {
@@ -413,6 +416,7 @@ paReturn_t Pa_create (paConfig_t *config, void* bases[], Pa_Handle *pHandle)
   paL3Entry_t  *l3Table;
   paAclEntry_t *aclTable;
   paFcEntry_t  *fcTable;
+  paL2Entry_t  *eoamTable;  
   paUsrStatsLnkEntry_t *lnkTable;
   paVirtualLnk_t *vlnkTable;
   int          i;
@@ -451,12 +455,14 @@ paReturn_t Pa_create (paConfig_t *config, void* bases[], Pa_Handle *pHandle)
   paInst->nMaxVlnk = sizeCfg->nMaxVlnk;
   paInst->nAcl = sizeCfg->nMaxAcl;
   paInst->nFc = sizeCfg->nMaxFc;
+  paInst->nEoam = sizeCfg->nMaxEoam;
   paInst->paBufs[PA_BUFFNUM_L2_TABLE].size = sizes[PA_BUFFNUM_L2_TABLE];
   paInst->paBufs[PA_BUFFNUM_L3_TABLE].size = sizes[PA_BUFFNUM_L3_TABLE];
   paInst->paBufs[PA_BUFFNUM_USR_STATS_LNK_TABLE].size = sizes[PA_BUFFNUM_USR_STATS_LNK_TABLE];
   paInst->paBufs[PA_BUFFNUM_VIRTUAL_LNK_TABLE].size = sizes[PA_BUFFNUM_VIRTUAL_LNK_TABLE];
   paInst->paBufs[PA_BUFFNUM_ACL_TABLE].size = sizes[PA_BUFFNUM_ACL_TABLE];
   paInst->paBufs[PA_BUFFNUM_FC_TABLE].size = sizes[PA_BUFFNUM_FC_TABLE];
+  paInst->paBufs[PA_BUFFNUM_EOAM_TABLE].size = sizes[PA_BUFFNUM_EOAM_TABLE];  
   
   if (config->initTable)  {
 
@@ -491,6 +497,26 @@ paReturn_t Pa_create (paConfig_t *config, void* bases[], Pa_Handle *pHandle)
 
     Pa_osalEndMemAccess ((void*) l3Table,
                          paInst->paBufs[PA_BUFFNUM_L3_TABLE].size);
+
+    if (paInst->nEoam) 
+    {
+      eoamTable = (paL2Entry_t *)pa_CONV_OFFSET_TO_BASE(config->instPoolBaseAddr, paInst->paBufs[PA_BUFFNUM_EOAM_TABLE].base);
+
+      Pa_osalBeginMemAccess ((void*) eoamTable, 
+                             paInst->paBufs[PA_BUFFNUM_EOAM_TABLE].size);
+
+      memset (eoamTable, 0, paInst->paBufs[PA_BUFFNUM_EOAM_TABLE].size);
+
+      /* The status value PA_TBL_STAT_INACTIVE should have a value of 0, but take the safe approach */
+      for (i = 0; i < paInst->nEoam; i++) {
+        eoamTable[i].hdr.status    = PA_TBL_STAT_INACTIVE;
+        eoamTable[i].hdr.tableIdx  = i;
+        eoamTable[i].hdr.type      = PA_TABLE_ENTRY_TYPE_L2;
+      }
+
+      Pa_osalEndMemAccess ((void*) eoamTable, 
+                           paInst->paBufs[PA_BUFFNUM_EOAM_TABLE].size);
+    }     
                          
     if (paInst->nAcl)
     {
@@ -616,6 +642,7 @@ paReturn_t Pa_create (paConfig_t *config, void* bases[], Pa_Handle *pHandle)
   
   PA_SET_STATE_READY(paInst, 1);
   PA_SET_STATE_GTPU_LINK(paInst, 0);
+  PA_SET_STATE_EOAM(paInst, 0); /* Default EOAM is not enabled */
   
   Pa_osalEndMemAccess (paInst, sizeof(paInst_t));
   Pa_osalMtCsExit(mtCsKey);  
index 72851029e32676a0f67a790bd7d86c91ed324f76..22d1c763554fc584ff75b14c6bbe424588620383 100644 (file)
@@ -78,7 +78,7 @@ extern "C" {
 #define PA_BUFFNUM_VIRTUAL_LNK_TABLE        pa_BUF_VLINK_TABLE
 #define PA_BUFFNUM_ACL_TABLE                pa_BUF_ACL_TABLE
 #define PA_BUFFNUM_FC_TABLE                 pa_BUF_FC_TABLE
+#define PA_BUFFNUM_EOAM_TABLE               pa_BUF_EOAM_TABLE 
 /* 
  * Table Entry status
  */
@@ -102,7 +102,8 @@ typedef struct paL2MacCfg_s  {
   uint16_t  ethertype;   /* Ethernet Type */
   
   uint32_t  mplsTag;     /* MPLS tag */
-  uint16_t  inport;      /* Input EMAC port */
+  uint8_t   inport;      /* Input EMAC port */
+  uint8_t   vlanPri;     /* VLAN priority */
   
 }  paL2MacCfg_t;
 
@@ -198,6 +199,10 @@ typedef struct paVlinkEntry_s  {
 
 typedef paVlinkEntry_t  paVirtualLnk_t;
 
+/*
+ * An EOAM table element (same as L2 Table)
+ */
+typedef paL2Entry_t paEoamEntry_t;
 
 /*
  * An ACL table element (expansion of L3 table) 
@@ -227,6 +232,7 @@ typedef struct paFcEntry_s  {
 #define  PA_TABLE_ENTRY_TYPE_VL    5
 #define  PA_TABLE_ENTRY_TYPE_ACL   10
 #define  PA_TABLE_ENTRY_TYPE_FC    11
+#define  PA_TABLE_ENTRY_TYPE_EOAM  12
 #define  PA_TABLE_ENTRY_TYPE_NONE  0xFF /* The L4 entry does not connect to a upper layer (no longer used) */
 
 /* PA Enter sub-types */
@@ -288,19 +294,21 @@ typedef struct {
   paAclConfig_t             inAclConfig;          /* the inner ACL configuration structure */
   paRaGroupConfig_t         outIpRaGroupConfig;   /* the outer IP Reassembly group configuration structures */
   paRaGroupConfig_t         inIpRaGroupConfig;    /* the inner IP Reassembly group configuration structures */
+  paEoamGlobalConfig_t      eOamConfig;           /* the ethernet OAM configuration structure */
 } paSysInfo_t;
 
 /*
  * PASS command ID formatting
- *  Bit 14-15 is used to identify the type of table in the command comId field
+ *  Bit 12-15 is used to identify the type of table in the command comId field
  */
-#define PA_COMID_L2        (0 << 14)
-#define PA_COMID_L3        (1 << 14)
-#define PA_COMID_ACL       (2 << 14)
-#define PA_COMID_FC        (3 << 14)
+#define PA_COMID_L2        (0 << 12)
+#define PA_COMID_L3        (1 << 12)
+#define PA_COMID_ACL       (2 << 12)
+#define PA_COMID_FC        (3 << 12)
+#define PA_COMID_EOAM      (4 << 12)
 
-#define PA_COMID_L_MASK    (3 << 14)
-#define PA_COMID_IDX_MASK  (~(3 << 14))
+#define PA_COMID_L_MASK    (15 << 12)
+#define PA_COMID_IDX_MASK  (~(15 << 12))
 
 /*
  * PDSPs and PDSP Layout
@@ -389,6 +397,7 @@ typedef struct paInst_s  {
   int  nUsrStats;       /* Number of user-defined statistics in the user-statistics linking table */
   int  nAcl;            /* Number of entries in ACL table */
   int  nFc;             /* Number of entries in FC table */
+  int  nEoam;           /* Number of entries in EOAM table */
   int16_t  nMaxVlnk;    /* Number of virtual links in the VLNK table */
   int16_t  n2152Entries;/* Number of active GTP-U (UDP port = 2158) ports */
                         /* 0 to 1 transition: Disable GTP-U processing */
@@ -397,7 +406,8 @@ typedef struct paInst_s  {
   uint32_t stateBitfield;  /* TRUE: Instance State */
 /* Bit 0: PASS Ready
    Bit 1: GTPU Classification with link
-   Bit 2-31: Reserved
+   Bit 2: EOAM Classification 
+   Bit 3-31: Reserved
 */
   paSysInfo_t cfg;      /* record the global system configurations */
   uint32_t    usrStatsAllocBitmap[PA_USR_STATS_BITMAP_SIZE];/* User-defined statistics allocation bitmap */
@@ -408,6 +418,9 @@ typedef struct paInst_s  {
 #define PA_TEST_STATE_READY(a)         UTL_GET_BITFIELD((a)->stateBitfield, 0, 1)
 #define PA_SET_STATE_GTPU_LINK(a,b)    UTL_SET_BITFIELD((a)->stateBitfield, b, 1, 1)
 #define PA_TEST_STATE_GTPU_LINK(a)     UTL_GET_BITFIELD((a)->stateBitfield, 1, 1)
+#define PA_SET_STATE_EOAM(a,b)         UTL_SET_BITFIELD((a)->stateBitfield, b, 2, 1)
+#define PA_GET_STATE_EOAM(a)           UTL_GET_BITFIELD((a)->stateBitfield, 2, 1)
+
 /*
  * PDSP mapping structure
  */
@@ -439,6 +452,10 @@ typedef struct paPdspMap_s {
 #define PASS_ACL_STATS_SIZE     1024
 #define PASS_ACL_STATS_BASE_ENTRY(index) (PASS_ACL_STATS_BASE+(index)*2)
 
+#define PASS_EOAM_STATS_BASE     0x400
+#define PASS_EOAM_STATS_SIZE     1024
+#define PASS_EOAM_STATS_BASE_ENTRY(index) (PASS_EOAM_STATS_BASE+(index)*2)
+
 /*
  *  MPLS labels are restriced to 20 bits
  */
index cf76d170ec8e95e3b7c0ba10abefe7a7f75eb32d..df0697636c5bd218fd5174bcd8414c9e5f5a3a10 100644 (file)
@@ -17,6 +17,7 @@
 -ccs.linkFile "PASS_INSTALL_PATH/ti/drv/pa/test/PAUnitTest/src/tests/test11.c" 
 -ccs.linkFile "PASS_INSTALL_PATH/ti/drv/pa/test/PAUnitTest/src/tests/test12.c" 
 -ccs.linkFile "PASS_INSTALL_PATH/ti/drv/pa/test/PAUnitTest/src/tests/test13.c" 
+-ccs.linkFile "PASS_INSTALL_PATH/ti/drv/pa/test/PAUnitTest/src/tests/test14.c"
 -ccs.linkFile "PASS_INSTALL_PATH/ti/drv/pa/example/reassemLib/reassemLib.c" 
 -ccs.linkFile "PASS_INSTALL_PATH/ti/drv/pa/fw/v1/pa2_in0_pdsp0_bin.c" 
 -ccs.linkFile "PASS_INSTALL_PATH/ti/drv/pa/fw/v1/pa2_in0_pdsp1_bin.c" 
index 6214332734cbe3da94fa8ff488dfa2d984b6af0e..2125c34b7b2d450ead0c3d40030eb9849673c610 100644 (file)
@@ -17,6 +17,7 @@
 -ccs.linkFile "PASS_INSTALL_PATH/ti/drv/pa/test/PAUnitTest/src/tests/test11.c" 
 -ccs.linkFile "PASS_INSTALL_PATH/ti/drv/pa/test/PAUnitTest/src/tests/test12.c" 
 -ccs.linkFile "PASS_INSTALL_PATH/ti/drv/pa/test/PAUnitTest/src/tests/test13.c" 
+-ccs.linkFile "PASS_INSTALL_PATH/ti/drv/pa/test/PAUnitTest/src/tests/test14.c"
 -ccs.linkFile "PASS_INSTALL_PATH/ti/drv/pa/example/reassemLib/reassemLib.c" 
 -ccs.linkFile "PASS_INSTALL_PATH/ti/drv/pa/fw/v1/pa2_in0_pdsp0_bin.c" 
 -ccs.linkFile "PASS_INSTALL_PATH/ti/drv/pa/fw/v1/pa2_in0_pdsp1_bin.c" 
index a70bea1b5db1f690ff610a338f6769b771d3dd71..3bc8ea5771b2916d676d26bcede718e86439b51c 100644 (file)
@@ -72,6 +72,7 @@ uint8_t memUsrStatsLnkTbl[TF_ROUND_UP(TF_USR_STATS_LNK_TABLE_SIZE, TF_CACHE_LINE
 uint8_t memVLinkRam[TF_ROUND_UP(TF_VLINK_TABLE_SIZE, TF_CACHE_LINESZ)]ALIGN(TF_CACHE_LINESZ);
 uint8_t memAclRam[TF_ROUND_UP(TF_ACL_TABLE_SIZE, TF_CACHE_LINESZ)]ALIGN(TF_CACHE_LINESZ);
 uint8_t memFcRam[TF_ROUND_UP(TF_FC_TABLE_SIZE, TF_CACHE_LINESZ)]ALIGN(TF_CACHE_LINESZ);
+uint8_t memEoamRam[TF_ROUND_UP(TF_EOAM_TABLE_SIZE, TF_CACHE_LINESZ)]ALIGN(TF_CACHE_LINESZ);
 
 /******************************************************************************
 * Macro to convert to IP Register Virtual Address from a mapped base Virtual Address
@@ -1568,7 +1569,20 @@ int initPa (void)
 
   bases[pa_BUF_FC_TABLE] = (void *)memFcRam;
 
-  
+
+  /* The 8th buffer is the Ethernet OAM table */
+  if ((uint32_t)memEoamRam & (aligns[pa_BUF_EOAM_TABLE] - 1))  {
+    printf ("initPa: Pa_getBufferReq requires %d alignment for Ethernet OAM buffer, but address is 0x%08x\n", aligns[pa_BUF_EOAM_TABLE], (uint32_t)memEoamRam);
+    return (-1);
+  }
+
+  if (sizeof(memEoamRam) <  sizes[pa_BUF_EOAM_TABLE])  {
+    printf ("initPa: Pa_getBufferReq requires %d bytes for Ethernet OAM buffer, have only %d\n", sizes[pa_BUF_EOAM_TABLE], sizeof(memEoamRam));
+    return (-1);
+  }
+
+  bases[pa_BUF_EOAM_TABLE] = (void *)memEoamRam;  
+
   /* set default RA system configuration */
   raCfg.ipv4MinPktSize      = 28;   /* 20-byte IPv4 header plus 8-byte payload */
   raCfg.numCxts             = 250;
index 568aaba932b88eca6d36724c40c2b71bbd488f60..4785a47ffd076f170e45684a55590f32d00c247f 100644 (file)
@@ -1186,9 +1186,9 @@ int initPa (void)
 \r
 #ifdef NSS_GEN2\r
    \r
-  paSize.nMaxAcl = TF_MAX_NUM_ACL_HANDLES;\r
-  paSize.nMaxFc = TF_MAX_NUM_FC_HANDLES;\r
-  \r
+  paSize.nMaxAcl  = TF_MAX_NUM_ACL_HANDLES;\r
+  paSize.nMaxFc   = TF_MAX_NUM_FC_HANDLES;\r
+  paSize.nMaxEoam = TF_MAX_NUM_EOAM_HANDLES;\r
 #endif  \r
   \r
   ret = Pa_getBufferReq(&paSize, sizes, aligns);\r
@@ -1287,12 +1287,24 @@ int initPa (void)
   }\r
 \r
   if (sizeof(memFcRam) <  sizes[pa_BUF_FC_TABLE])  {\r
-    System_printf ("initPa: Pa_getBufferReq requires %d bytes for Flow Cache buffer, have only %d\n", sizes[pa_BUF_FC_TABLE], sizeof(memAclRam));\r
+    System_printf ("initPa: Pa_getBufferReq requires %d bytes for Flow Cache buffer, have only %d\n", sizes[pa_BUF_FC_TABLE], sizeof(memFcRam));\r
     return (-1);\r
   }\r
 \r
   bases[pa_BUF_FC_TABLE] = (void *)memFcRam;\r
 \r
+  /* The 8th buffer is the Eoam table */\r
+  if ((uint32_t)memEoamRam & (aligns[pa_BUF_EOAM_TABLE] - 1))  {\r
+    System_printf ("initPa: Pa_getBufferReq requires %d alignment for Ethernet OAM buffer, but address is 0x%08x\n", aligns[pa_BUF_EOAM_TABLE], (uint32_t)memEoamRam);\r
+    return (-1);\r
+  }\r
+\r
+  if (sizeof(memEoamRam) <  sizes[pa_BUF_EOAM_TABLE])  {\r
+    System_printf ("initPa: Pa_getBufferReq requires %d bytes for Ethernet OAM buffer, have only %d\n", sizes[pa_BUF_EOAM_TABLE], sizeof(memEoamRam));\r
+    return (-1);\r
+  }\r
+\r
+  bases[pa_BUF_EOAM_TABLE] = (void *)memEoamRam;\r
   \r
   /* set default RA system configuration */\r
   raCfg.ipv4MinPktSize      = 28;   /* 20-byte IPv4 header plus 8-byte payload */\r
index 8750aaa918bd6eb3080b8ca03074a7b812ae85c5..7da69aac4b27609f9f941b6a381d0e91c117f2b6 100644 (file)
@@ -1,3 +1,4 @@
+
 /*
  *
  * Copyright (C) 2010-2013 Texas Instruments Incorporated - http://www.ti.com/ 
@@ -40,22 +41,24 @@ paTest_t  paTestList[] = {
        { paTestUnconfigured,   "Packet reception while unconfigured",      PA_TEST_NOT_RUN },
        { paTestSrioRouting,    "Pa_addSrio and SRIO routing",              PA_TEST_NOT_RUN },
        { paTestL2Routing,      "Pa_addMac and L2 routing",                 PA_TEST_NOT_RUN },
-       { paTestL3Routing,              "Pa_addIp and L3 Routing",                              PA_TEST_NOT_RUN },
+       { paTestL3Routing,                "Pa_addIp and L3 Routing",                                PA_TEST_NOT_RUN },
 #ifdef NSS_GEN2    
-       { paTestACL,                "Pa_addAcl and ACL filtering",                      PA_TEST_NOT_RUN },
+       { paTestEOAMFlow,       "Pa_addEoamFlow and Ethernet OAM Support",  PA_TEST_NOT_RUN },
+       { paTestACL,                    "Pa_addAcl and ACL filtering",                    PA_TEST_NOT_RUN },
 #endif    
-       { paTestL4Routing,              "Pa_addPort and L4 Routing",                    PA_TEST_NOT_RUN },
+       { paTestL4Routing,                "Pa_addPort and L4 Routing",                      PA_TEST_NOT_RUN },
        { paTestPatchRoute,     "Blind patch and route",                    PA_TEST_NOT_RUN },
        { paTestTxFmtRt,        "Tx checksum and routing",                  PA_TEST_NOT_RUN },
-       { paTestCustom,                 "Custom routing",                                               PA_TEST_NOT_RUN },
-       { paTestMultiRouting,   "Multi-routing",                                                PA_TEST_NOT_RUN },
+       { paTestCustom,                     "Custom routing",                                                     PA_TEST_NOT_RUN },
+       { paTestMultiRouting,   "Multi-routing",                                                          PA_TEST_NOT_RUN },
        { paTestIPv4FragReassem,"IPv4 Fragmentation and Reassembly",        PA_TEST_NOT_RUN },
        { paTestIPv6FragReassem,"IPv6 Fragmentation and Reassembly",        PA_TEST_NOT_RUN },
 #ifdef NSS_GEN2    
-       { paTestEflow,              "Egress Flow and Packet Forwarding Test",   PA_TEST_NOT_RUN },
+       { paTestEflow,                "Egress Flow and Packet Forwarding Test",   PA_TEST_NOT_RUN },
 #endif    
-       { paTestUnconfigured,   "Packet reception while unconfigured",      PA_TEST_NOT_RUN }, 
-       { NULL,                 NULL,                                  PA_TEST_NOT_RUN }
+       { paTestUnconfigured,   "Packet reception while unconfigured",      PA_TEST_NOT_RUN },
+#endif
+       { NULL,                 NULL,                                       PA_TEST_NOT_RUN }
 };
 
 #define PAU_NUM_TESTS       ((sizeof(paTestList)/sizeof(paTest_t)) - 1)
old mode 100755 (executable)
new mode 100644 (file)
index 2fae8ea..c03fef1
@@ -59,6 +59,9 @@ uint8_t memVLinkRam[TF_ROUND_UP(TF_VLINK_TABLE_SIZE, TF_CACHE_LINESZ)];
 #pragma DATA_ALIGN(memAclRam, TF_CACHE_LINESZ);
 uint8_t memAclRam[TF_ROUND_UP(TF_ACL_TABLE_SIZE, TF_CACHE_LINESZ)];
 
+#pragma DATA_ALIGN(memEoamRam, TF_CACHE_LINESZ);
+uint8_t memEoamRam[TF_ROUND_UP(TF_EOAM_TABLE_SIZE, TF_CACHE_LINESZ)];
+
 #pragma DATA_ALIGN(memUsrStatsLnkTbl, TF_CACHE_LINESZ);
 uint8_t memUsrStatsLnkTbl[TF_ROUND_UP(TF_USR_STATS_LNK_TABLE_SIZE, TF_CACHE_LINESZ)];
 
index 9b388727899641299aca8e03704fc27c76324f67..1fac07038bf3ad5bc859719cdae6f3801b08a93a 100644 (file)
@@ -1596,6 +1596,63 @@ Cppi_HostDesc *testCommonAddCl4Config (tFramework_t *tf, Bool handleLink, uint16
 } \r
 \r
 #ifdef NSS_GEN2\r
+Cppi_HostDesc *testCommonAddEoam(tFramework_t     *tf, \r
+                                 paEthInfo2_t     *ethInfo, \r
+                                 paEoamFlowInfo_t *eoamInfo,  \r
+                                 paHandleEoam_t   *eoamHandle,\r
+                                            int32_t           Qrecycle, \r
+                                            int32_t           QCmdMem, \r
+                                            paCmdReply_t     *repInfo, \r
+                                            int              *cmdDest, \r
+                                            uint16_t         *cmdSize, \r
+                                            paReturn_t       *paret)\r
+{\r
+    Cppi_HostDesc *hd;\r
+    Qmss_Queue     q;\r
+    uint32_t       psCmd;\r
+    \r
+    /* Pop a descriptor with a linked buffer to create the command */\r
+    hd = (Cppi_HostDesc *)(((uint32_t)Qmss_queuePop (QCmdMem)) & ~15);\r
+    if (hd == NULL)\r
+      return (NULL);\r
+      \r
+    *cmdSize = hd->origBufferLen;\r
+    \r
+    *paret = Pa_addEoamFlow (tf->passHandle,\r
+                             ethInfo,\r
+                             eoamInfo,\r
+                             eoamHandle,\r
+                   (paCmd_t) hd->buffPtr,\r
+                             cmdSize,\r
+                             repInfo,\r
+                             cmdDest);\r
+               \r
+      /* Restore the descriptor and return it on PA failure */\r
+    if ((*paret != pa_OK)) {\r
+      hd->buffLen = hd->origBufferLen;\r
+      Qmss_queuePush (QCmdMem, (Ptr)hd, hd->buffLen, TF_SIZE_DESC, Qmss_Location_TAIL);\r
+      return (NULL);\r
+    }\r
+    \r
+#ifdef PA_SIM_BUG_4BYTES\r
+      *cmdSize = (*cmdSize+3)& ~3;\r
+#endif\r
+  \r
+    /* Setup the return for the descriptor */\r
+      q.qMgr = 0;\r
+      q.qNum = Qrecycle;\r
+      Cppi_setReturnQueue (Cppi_DescType_HOST, (Cppi_Desc *)hd, q);\r
+      \r
+      /* Mark the packet as a configuration packet */\r
+      psCmd = PASAHO_PACFG_CMD;\r
+      Cppi_setPSData (Cppi_DescType_HOST, (Cppi_Desc *)hd, (uint8_t *)&psCmd, 4);\r
+      \r
+      hd->buffLen = *cmdSize;\r
+      Cppi_setPacketLen (Cppi_DescType_HOST, (Cppi_Desc *)hd, *cmdSize);\r
+      \r
+      return (hd);\r
+}\r
+\r
 Cppi_HostDesc *testCommonAddAcl (tFramework_t *tf, int aclInst,int action, paAclInfo_t *aclInfo,  \r
                                         paHandleAcl_t *aclhandle, paHandleL2L3_t linkedHandle, paHandleAcl_t nextHandle, \r
                                  int32_t Qrecycle, int32_t QCmdMem, \r
@@ -2686,6 +2743,48 @@ Cppi_HostDesc *testCommonDelL4Handles (tFramework_t *tf, paHandleL4_t l4Handle,
 \r
 #ifdef NSS_GEN2\r
 \r
+Cppi_HostDesc *testCommonDelEoamHandle (tFramework_t *tf, paHandleEoam_t *paHdl, int Qrecycle, int QCmdMem, paCmdReply_t *cmdReply, \r
+                                                                          int *cmdDest, uint16_t *cmdSize, paReturn_t *paret)\r
+{\r
+       Cppi_HostDesc *hd;\r
+       Qmss_Queue     q;\r
+       uint32_t                   psCmd;\r
+       \r
+       /* Pop a descriptor with a linked buffer to create the command */\r
+       hd = (Cppi_HostDesc *)(((uint32_t)Qmss_queuePop (QCmdMem)) & ~15);\r
+       if (hd == NULL)\r
+               return (NULL);\r
+               \r
+       *cmdSize = hd->origBufferLen;\r
+       \r
+       *paret = Pa_delEoamHandle (tf->passHandle, paHdl, (paCmd_t)hd->buffPtr, cmdSize, cmdReply, cmdDest);\r
+       \r
+        /* Restore the descriptor and return it on PA failure */\r
+       if (*paret != pa_OK)  {\r
+               hd->buffLen = hd->origBufferLen;\r
+               Qmss_queuePush (QCmdMem, (Ptr)hd, hd->buffLen, TF_SIZE_DESC, Qmss_Location_TAIL);\r
+               return (NULL);\r
+       }\r
+       \r
+#ifdef PA_SIM_BUG_4BYTES\r
+       *cmdSize = (*cmdSize+3)& ~3;\r
+#endif\r
+\r
+       /* Setup the return for the descriptor */\r
+       q.qMgr = 0;\r
+       q.qNum = Qrecycle;\r
+       Cppi_setReturnQueue (Cppi_DescType_HOST, (Cppi_Desc *)hd, q);\r
+       \r
+       /* Mark the packet as a configuration packet */\r
+       psCmd = PASAHO_PACFG_CMD;\r
+    Cppi_setPSData (Cppi_DescType_HOST, (Cppi_Desc *)hd, (uint8_t *)&psCmd, 4);\r
+       \r
+    hd->buffLen = *cmdSize;\r
+       Cppi_setPacketLen (Cppi_DescType_HOST, (Cppi_Desc *)hd, *cmdSize);\r
+       \r
+       return (hd);\r
+}\r
+\r
 Cppi_HostDesc *testCommonDelAclHandle (tFramework_t *tf, paHandleAcl_t *paHdl, int Qrecycle, int QCmdMem, paCmdReply_t *cmdReply, \r
                                                                           int *cmdDest, uint16_t *cmdSize, paReturn_t *paret)\r
 {\r
index 309b617faefc9e5076024d7867fde247757c6c1e..2acbb3d8ca9de3b3419bbb318671027a274e82c0 100644 (file)
@@ -410,6 +410,10 @@ extern uint8_t memFcRam[TF_ROUND_UP(TF_FC_TABLE_SIZE, TF_CACHE_LINESZ)];
 \r
 #define TF_USR_STATS_LNK_TABLE_SIZE   (pa_USR_STATS_MAX_COUNTERS * 4)  /* Require 4 bytes per satistics */ \r
 extern uint8_t memUsrStatsLnkTbl[TF_USR_STATS_LNK_TABLE_SIZE];\r
+\r
+#define TF_MAX_NUM_EOAM_HANDLES        512\r
+#define TF_EOAM_TABLE_SIZE     (TF_MAX_NUM_EOAM_HANDLES * 36)  /* Requires 36 bytes per entry */\r
+extern uint8_t memEoamRam[TF_ROUND_UP(TF_EOAM_TABLE_SIZE, TF_CACHE_LINESZ)];\r
        \r
 /* QM memory */        \r
 #define TF_NUM_DESC             128            /* 128 host descriptors managed by the QM */\r
@@ -759,6 +763,16 @@ Cppi_HostDesc *testCommonAddAcl (tFramework_t *tf, int aclInst,int action, paAcl
                                         paHandleAcl_t *aclhandle, paHandleL2L3_t linkedHandle, paHandleAcl_t nextHandle, \r
                                  int32_t Qrecycle, int32_t QCmdMem, \r
                                         paCmdReply_t *repInfo, int *cmdDest, uint16_t *cmdSize, paReturn_t *paret);\r
+Cppi_HostDesc *testCommonAddEoam(tFramework_t     *tf, \r
+                                 paEthInfo2_t     *ethInfo, \r
+                                 paEoamFlowInfo_t *eoamInfo,  \r
+                                            paHandleL2L3_t   *eoamHandle, \r
+                                            int32_t           Qrecycle, \r
+                                            int32_t           QCmdMem, \r
+                                            paCmdReply_t     *repInfo, \r
+                                            int              *cmdDest, \r
+                                            uint16_t         *cmdSize, \r
+                                            paReturn_t       *paret);\r
 Cppi_HostDesc *testCommonAddFc  (tFramework_t *tf, int index, paEfOpInfo_t *efInfo, paFcInfo_t *fcInfo,  \r
                                         paHandleFc_t *fchandle, int32_t Qrecycle, int32_t QCmdMem, \r
                                         paCmdReply_t *repInfo, int *cmdDest, uint16_t *cmdSize, paReturn_t *paret);\r
@@ -768,6 +782,8 @@ Cppi_HostDesc *testCommonDelL4Handles (tFramework_t *tf, paHandleL4_t l4Handle,
                                                                           int *cmdDest, uint16_t *cmdSize, paReturn_t *paret);         \r
 Cppi_HostDesc *testCommonDelAclHandle (tFramework_t *tf, paHandleAcl_t *paHdl, int Qrecycle, int QCmdMem, paCmdReply_t *cmdReply, \r
                                                                           int *cmdDest, uint16_t *cmdSize, paReturn_t *paret);\r
+Cppi_HostDesc *testCommonDelEoamHandle (tFramework_t *tf, paHandleEoam_t *paHdl, int Qrecycle, int QCmdMem, paCmdReply_t *cmdReply, \r
+                                                                          int *cmdDest, uint16_t *cmdSize, paReturn_t *paret);\r
 Cppi_HostDesc *testCommonDelFcHandle (tFramework_t *tf, paHandleFc_t *paHdl, int Qrecycle, int QCmdMem, paCmdReply_t *cmdReply, \r
                                                                          int *cmdDest, uint16_t *cmdSize, paReturn_t *paret);\r
 Cppi_HostDesc *testCommonAddIp (tFramework_t *tf, int index, paIpInfo_t *ipInfo, paRouteInfo_t *matchRoute, paRouteInfo_t *nfailRoute, \r
@@ -849,6 +865,7 @@ void* paTestMultiRouting (void *args);
 void* paTestIPv4FragReassem (void *args);\r
 void* paTestIPv6FragReassem (void *args);\r
 void* paTestACL (void *args);\r
+void* paTestEOAMFlow(void *args);\r
 void* paTestEflow (void *args);\r
 #else\r
 void paTestUnconfigured (UArg a0, UArg a1);\r
@@ -864,6 +881,7 @@ void paTestMultiRouting (UArg a0, UArg a1);
 void paTestIPv4FragReassem (UArg a0, UArg a1);\r
 void paTestIPv6FragReassem (UArg a0, UArg a1);\r
 void paTestACL (UArg a0, UArg a1);\r
+void paTestEOAMFlow(UArg a0, UArg a1);\r
 void paTestEflow (UArg a0, UArg a1);\r
 #endif\r
 #endif /* _PAUTEST_H */\r
index 8f18a5c7815650e9d3e7e128888fce3fa452c246..077b085c92f81a3e872235a79cc7c14096c8c4b1 100644 (file)
@@ -377,7 +377,9 @@ static paTestStatus_t testSendIpv4 (tFramework_t *tf, paTest_t *pat)
     uint32_t   cmdStack[5][(sizeof(pasahoNextRoute_t) + (3 * sizeof(pasahoComChkCrc_t)) + sizeof(pasahoReportTimestamp_t)) / sizeof (uint32_t)];
     uint16_t   cmdStackSize[5] = {CMD_BUF_SIZE, CMD_BUF_SIZE, CMD_BUF_SIZE, CMD_BUF_SIZE, CMD_BUF_SIZE};
     uint32_t   rxTimestamp[5], txTimestamp[5];
+#ifndef NSS_GEN2
     uint32_t   rxTimestampMSW[5], txTimestampMSW[5];
+#endif
     paTimestamp_t timestamp[5];
     paCmdInfo_t cmdInfo[5];
        uint32_t        *swinfo;
@@ -702,7 +704,9 @@ static paTestStatus_t testSendIpv4 (tFramework_t *tf, paTest_t *pat)
                System_printf ("%s (%s:%d): Error getting control info from received data packet\n", tfName, __FILE__, __LINE__);
                return (PA_TEST_FAILED);
         }
+#ifndef NSS_GEN2
         rxTimestampMSW[i] = PASAHO_LINFO_READ_TSTAMP_MSB(pinfo);
+#endif
         testCommonRecycleLBDesc (tf, hd); 
 
         if (eflags != errFlagsExptd[i])  {
@@ -732,9 +736,10 @@ static paTestStatus_t testSendIpv4 (tFramework_t *tf, paTest_t *pat)
         }
         
         Cppi_getTimeStamp (Cppi_DescType_HOST, (Cppi_Desc *)hd, &txTimestamp[i]);
-        txTimestampMSW[i] = swinfo[1];
         
-#ifndef NSS_GEN2        
+#ifndef NSS_GEN2
+        txTimestampMSW[i] = swinfo[1];
+
         if (txTimestamp[i] > rxTimestamp[i])
         {
             System_printf ("%s (%s:%d): Rx timestamp 0x%08x is ealier than Tx timestamp 0x%08x\n", tfName, __FILE__, __LINE__, rxTimestamp[i],txTimestamp[i]);