]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - keystone-rtos/sa-lld.git/commitdiff
sa: pka: Fix illegal memory accesses
authorStephen Molfetta <sjmolfetta@ti.com>
Thu, 16 Jul 2020 21:43:37 +0000 (16:43 -0500)
committerSivaraj R <sivaraj@ti.com>
Fri, 23 Oct 2020 05:17:36 +0000 (00:17 -0500)
Read/write between PKA and application RAM is adjusted to the proper
size required for the operation.

Fixes PDK-7083

Signed-off-by: Stephen Molfetta <sjmolfetta@ti.com>
src/salldpka.c

index f1537594edaf382b0c15f5f279c248d550d0a758..d1c26895607b268f762b53aa9e9d3963324c72c9 100644 (file)
@@ -906,7 +906,7 @@ static int16_t salld_pka_op_pkcp_setup(salldObj_t *inst, Sa_PkaReqInfo2_t* pPkaR
     } 
         
     sap_pka_write((volatile uint32_t *)(baseAddr + SA_PKA_A_BASE),  
-           pPkaOp->pA, pPkaReqInfo->aLen<<2);
+           pPkaOp->pA, pPkaReqInfo->aLen);
     pPkcpRegs->PKA_ALENGTH = pPkaReqInfo->aLen;
     
     if (pPkaReqInfo->bLen && (pPkaReqInfo->operation != sa_PKA_OP_ADD_SUB))
@@ -922,7 +922,7 @@ static int16_t salld_pka_op_pkcp_setup(salldObj_t *inst, Sa_PkaReqInfo2_t* pPkaR
         } 
     
         sap_pka_write((volatile uint32_t *)(baseAddr + SA_PKA_B_BASE), 
-               pPkaOp->pB, pPkaReqInfo->bLen<<2);
+               pPkaOp->pB, pPkaReqInfo->bLen);
         pPkcpRegs->PKA_BLENGTH = pPkaReqInfo->bLen;
         pPkcpRegs->PKA_BPTR = SA_PKA_B_OFFSET;
         
@@ -973,8 +973,8 @@ static int16_t salld_pka_op_pkcp_setup(salldObj_t *inst, Sa_PkaReqInfo2_t* pPkaR
             }  
             else
             {
-                sap_pka_write((volatile uint32_t *)(baseAddr + SA_PKA_B_BASE), pPkaOp->pB, pPkaReqInfo->aLen<<2);
-                sap_pka_write((volatile uint32_t *)(baseAddr + SA_PKA_C_BASE), pPkaOp->pC, pPkaReqInfo->aLen<<2);
+                sap_pka_write((volatile uint32_t *)(baseAddr + SA_PKA_B_BASE), pPkaOp->pB, pPkaReqInfo->aLen);
+                sap_pka_write((volatile uint32_t *)(baseAddr + SA_PKA_C_BASE), pPkaOp->pC, pPkaReqInfo->aLen);
             }  
         
             op_code = CSL_EIP_29T2_RAM_PKA_FUNCTION_ADDSUB_MASK |
@@ -1129,21 +1129,21 @@ static int16_t salld_pka_op_modexp_setup(salldObj_t *inst, Sa_PkaReqInfo2_t* pPk
     baseAddr += SA_PKA_A_BASE;
     pPkcpRegs->PKA_BPTR = offset;    
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->pN, pPkaReqInfo->bLen<<2);
+           pPkaOp->pN, pPkaReqInfo->bLen);
            
     offset += (pPkaReqInfo->bLen + 1);
     offset += (offset & 0x1);
     
     pPkcpRegs->PKA_APTR = offset; 
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->pE, pPkaReqInfo->aLen<<2);
+           pPkaOp->pE, pPkaReqInfo->aLen);
     
     offset += (pPkaReqInfo->aLen);
     offset += (offset & 0x1);
     
     pPkcpRegs->PKA_CPTR = offset;    
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->pM, pPkaReqInfo->bLen<<2);
+           pPkaOp->pM, pPkaReqInfo->bLen);
            
     offset += (pPkaReqInfo->bLen + 1);
     offset += (offset & 0x1);
@@ -1254,40 +1254,40 @@ static int16_t salld_pka_op_modexp_crt_setup(salldObj_t *inst, Sa_PkaReqInfo2_t*
     baseAddr += SA_PKA_A_BASE;
     pPkcpRegs->PKA_BPTR = offset;    
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->pModP, pPkaReqInfo->bLen<<2);
+           pPkaOp->pModP, pPkaReqInfo->bLen);
            
     offset += (pPkaReqInfo->bLen+1);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->pModQ, pPkaReqInfo->bLen<<2);
+           pPkaOp->pModQ, pPkaReqInfo->bLen);
            
     offset += (pPkaReqInfo->bLen+1);
     offset += (offset & 0x1);
     
     pPkcpRegs->PKA_APTR = offset; 
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->pDp, pPkaReqInfo->aLen<<2);
+           pPkaOp->pDp, pPkaReqInfo->aLen);
     
     offset += (pPkaReqInfo->aLen);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->pDq, pPkaReqInfo->aLen<<2);
+           pPkaOp->pDq, pPkaReqInfo->aLen);
     
     offset += (pPkaReqInfo->aLen);
     offset += (offset & 0x1);
     
     pPkcpRegs->PKA_CPTR = offset;    
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->pQInv, pPkaReqInfo->bLen<<2);
+           pPkaOp->pQInv, pPkaReqInfo->bLen);
            
     offset += (pPkaReqInfo->bLen);
     offset += (offset & 0x1);
     
     pPkcpRegs->PKA_DPTR = offset;
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->pM, pPkaReqInfo->bLen<<3);
+           pPkaOp->pM, pPkaReqInfo->bLen<<1);
            
     /* Calculate and check whether there is enough workspace */
     offset += (pPkaReqInfo->bLen*2 + 1);
@@ -1407,14 +1407,14 @@ static int16_t salld_pka_op_modinv_setup(salldObj_t *inst, Sa_PkaReqInfo2_t* pPk
     baseAddr += SA_PKA_A_BASE;
     pPkcpRegs->PKA_BPTR = offset;    
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->pN, pPkaReqInfo->bLen<<2);
+           pPkaOp->pN, pPkaReqInfo->bLen);
            
     offset += (pPkaReqInfo->bLen);
     offset += (offset & 0x1);
     
     pPkcpRegs->PKA_APTR = offset; 
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->pZ, pPkaReqInfo->aLen<<2);
+           pPkaOp->pZ, pPkaReqInfo->aLen);
     
     offset += (pPkaReqInfo->aLen);
     offset += (offset & 0x1);
@@ -1526,49 +1526,49 @@ static int16_t salld_pka_op_ecp_add_setup(salldObj_t *inst, Sa_PkaReqInfo2_t* pP
     baseAddr += SA_PKA_A_BASE;
     pPkcpRegs->PKA_BPTR = offset; /* p, a, b */  
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->pModP, pPkaReqInfo->bLen<<2);
+           pPkaOp->pModP, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->pEcA, pPkaReqInfo->bLen<<2);
+           pPkaOp->pEcA, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->pEcB, pPkaReqInfo->bLen<<2);
+           pPkaOp->pEcB, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
     
     pPkcpRegs->PKA_APTR = offset; /* P1xyz */
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->point1.pX, pPkaReqInfo->bLen<<2);
+           pPkaOp->point1.pX, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->point1.pY, pPkaReqInfo->bLen<<2);
+           pPkaOp->point1.pY, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->point1.pZ, pPkaReqInfo->bLen<<2);
+           pPkaOp->point1.pZ, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
     
     pPkcpRegs->PKA_CPTR = offset; /* P2xyz */ 
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->point2.pX, pPkaReqInfo->bLen<<2);
+           pPkaOp->point2.pX, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->point2.pY, pPkaReqInfo->bLen<<2);
+           pPkaOp->point2.pY, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->point2.pZ, pPkaReqInfo->bLen<<2);
+           pPkaOp->point2.pZ, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
     
@@ -1682,39 +1682,39 @@ static int16_t salld_pka_op_ecp_mul_setup(salldObj_t *inst, Sa_PkaReqInfo2_t* pP
     baseAddr += SA_PKA_A_BASE;
     pPkcpRegs->PKA_BPTR = offset; /* p, a, b */  
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->pModP, pPkaReqInfo->bLen<<2);
+           pPkaOp->pModP, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->pEcA, pPkaReqInfo->bLen<<2);
+           pPkaOp->pEcA, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->pEcBC, pPkaReqInfo->bLen<<2);
+           pPkaOp->pEcBC, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
     
     pPkcpRegs->PKA_APTR = offset; /* K */
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->pK, pPkaReqInfo->aLen<<2);
+           pPkaOp->pK, pPkaReqInfo->aLen);
     offset += (pPkaReqInfo->aLen);
     offset += (offset & 0x1);
     
     pPkcpRegs->PKA_CPTR = offset; /* P1xyz */ 
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->point1.pX, pPkaReqInfo->bLen<<2);
+           pPkaOp->point1.pX, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->point1.pY, pPkaReqInfo->bLen<<2);
+           pPkaOp->point1.pY, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t *)(baseAddr + (offset << 2)),  
-           pPkaOp->point1.pZ, pPkaReqInfo->bLen<<2);
+           pPkaOp->point1.pZ, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
     
@@ -1814,33 +1814,33 @@ static int16_t salld_pka_op_ecp_scale_setup(salldObj_t *inst, Sa_PkaReqInfo2_t*
     baseAddr += SA_PKA_A_BASE;
     pPkcpRegs->PKA_BPTR = offset; /* p, a, b */  
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->pModP, pPkaReqInfo->bLen<<2);
+           pPkaOp->pModP, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->pEcA, pPkaReqInfo->bLen<<2);
+           pPkaOp->pEcA, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->pEcB, pPkaReqInfo->bLen<<2);
+           pPkaOp->pEcB, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
     
     pPkcpRegs->PKA_DPTR = offset; /* P1xyz and P0xyx*/ 
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->point1.pX, pPkaReqInfo->bLen<<2);
+           pPkaOp->point1.pX, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->point1.pY, pPkaReqInfo->bLen<<2);
+           pPkaOp->point1.pY, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->point1.pZ, pPkaReqInfo->bLen<<2);
+           pPkaOp->point1.pZ, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
     
@@ -1978,74 +1978,74 @@ static int16_t salld_pka_op_ecp_dsa_verify_setup(salldObj_t *inst, Sa_PkaReqInfo
     baseAddr += SA_PKA_A_BASE;
     pPkcpRegs->PKA_BPTR = offset; /* p, a, b */  
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),
-           pPkaOp->pModP, pPkaReqInfo->bLen<<2);
+           pPkaOp->pModP, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
 
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),
-           pPkaOp->pEcA, pPkaReqInfo->bLen<<2);
+           pPkaOp->pEcA, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
 
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),
-           pPkaOp->pEcBC, pPkaReqInfo->bLen<<2);
+           pPkaOp->pEcBC, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
 
     /* N, H, D which are used at the subsequent operations */
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),
-           pPkaOp->pN, pPkaReqInfo->bLen<<2);
+           pPkaOp->pN, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
 
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),
-           pPkaOp->point1.pX, pPkaReqInfo->bLen<<2);
+           pPkaOp->point1.pX, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
 
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),
-           pPkaOp->point1.pY, pPkaReqInfo->bLen<<2);
+           pPkaOp->point1.pY, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
 
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),
-           pPkaOp->point1.pZ, pPkaReqInfo->bLen<<2);
+           pPkaOp->point1.pZ, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
 
     pPkcpRegs->PKA_CPTR = offset; /* H */
 
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),
-           pPkaOp->pH, pPkaReqInfo->bLen<<2);
+           pPkaOp->pH, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
 
     pPkcpRegs->PKA_APTR = offset; /* Yx Yy Yz (public key) */
 
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),
-           pPkaOp->pY.pX, pPkaReqInfo->aLen<<2);
+           pPkaOp->pY.pX, pPkaReqInfo->aLen);
     offset += (pPkaReqInfo->aLen + 2);
     offset += (offset & 0x1);
 
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),
-           pPkaOp->pY.pY, pPkaReqInfo->aLen<<2);
+           pPkaOp->pY.pY, pPkaReqInfo->aLen);
     offset += (pPkaReqInfo->aLen + 2);
     offset += (offset & 0x1);
 
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),
-           pPkaOp->pY.pZ, pPkaReqInfo->aLen<<2);
+           pPkaOp->pY.pZ, pPkaReqInfo->aLen);
     offset += (pPkaReqInfo->aLen + 2);
     offset += (offset & 0x1);
 
     pPkcpRegs->PKA_DPTR = offset;  /* R and S */
 
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),
-           pPkaOp->pR, pPkaReqInfo->bLen<<2);
+           pPkaOp->pR, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
 
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),
-           pPkaOp->pS, pPkaReqInfo->bLen<<2);
+           pPkaOp->pS, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
 
@@ -2145,56 +2145,56 @@ static int16_t salld_pka_op_ecp_dsa_sign_setup(salldObj_t *inst, Sa_PkaReqInfo2_
     baseAddr += SA_PKA_A_BASE;
     pPkcpRegs->PKA_BPTR = offset; /* p, a, b */  
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),
-           pPkaOp->pModP, pPkaReqInfo->bLen<<2);
+           pPkaOp->pModP, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
 
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),
-           pPkaOp->pEcA, pPkaReqInfo->bLen<<2);
+           pPkaOp->pEcA, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
 
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),
-           pPkaOp->pEcBC, pPkaReqInfo->bLen<<2);
+           pPkaOp->pEcBC, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
 
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),
-           pPkaOp->pN, pPkaReqInfo->bLen<<2);
+           pPkaOp->pN, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
 
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),
-           pPkaOp->point1.pX, pPkaReqInfo->bLen<<2);
+           pPkaOp->point1.pX, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
 
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),
-           pPkaOp->point1.pY, pPkaReqInfo->bLen<<2);
+           pPkaOp->point1.pY, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
 
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),
-           pPkaOp->point1.pZ, pPkaReqInfo->bLen<<2);
+           pPkaOp->point1.pZ, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
 
     pPkcpRegs->PKA_CPTR = offset; /* H */
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),
-           pPkaOp->pH, pPkaReqInfo->bLen<<2);
+           pPkaOp->pH, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
 
     pPkcpRegs->PKA_APTR = offset; /* D */
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),
-           pPkaOp->pD, pPkaReqInfo->aLen<<2);
+           pPkaOp->pD, pPkaReqInfo->aLen);
     offset += (pPkaReqInfo->aLen + 2);
     offset += (offset & 0x1);
 
     pPkcpRegs->PKA_DPTR = offset; /* K */
     pEcdsaInst->offsetR = offset;
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),
-           pPkaOp->pK, pPkaReqInfo->bLen<<2);
+           pPkaOp->pK, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen + 2);
     offset += (offset & 0x1);
 
@@ -2277,49 +2277,49 @@ static int16_t salld_pka_op_ec2m_add_setup(salldObj_t *inst, Sa_PkaReqInfo2_t* p
     baseAddr += SA_PKA_A_BASE;
     pPkcpRegs->PKA_BPTR = offset; /* p, a, b */  
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->pModP, pPkaReqInfo->bLen<<2);
+           pPkaOp->pModP, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->pEcA, pPkaReqInfo->bLen<<2);
+           pPkaOp->pEcA, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->pEcB, pPkaReqInfo->bLen<<2);
+           pPkaOp->pEcB, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen);
     offset += (offset & 0x1);
     
     pPkcpRegs->PKA_APTR = offset; /* P1xyz */
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->point1.pX, pPkaReqInfo->bLen<<2);
+           pPkaOp->point1.pX, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->point1.pY, pPkaReqInfo->bLen<<2);
+           pPkaOp->point1.pY, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->point1.pZ, pPkaReqInfo->bLen<<2);
+           pPkaOp->point1.pZ, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen);
     offset += (offset & 0x1);
     
     pPkcpRegs->PKA_CPTR = offset; /* P2xyz */ 
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->point2.pX, pPkaReqInfo->bLen<<2);
+           pPkaOp->point2.pX, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->point2.pY, pPkaReqInfo->bLen<<2);
+           pPkaOp->point2.pY, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->point2.pZ, pPkaReqInfo->bLen<<2);
+           pPkaOp->point2.pZ, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen);
     offset += (offset & 0x1);
     
@@ -2428,39 +2428,39 @@ static int16_t salld_pka_op_ec2m_mul_setup(salldObj_t *inst, Sa_PkaReqInfo2_t* p
     baseAddr += SA_PKA_A_BASE;
     pPkcpRegs->PKA_BPTR = offset; /* p, a, b */  
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->pModP, pPkaReqInfo->bLen<<2);
+           pPkaOp->pModP, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->pEcA, pPkaReqInfo->bLen<<2);
+           pPkaOp->pEcA, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->pEcBC, pPkaReqInfo->bLen<<2);
+           pPkaOp->pEcBC, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen);
     offset += (offset & 0x1);
     
     pPkcpRegs->PKA_APTR = offset; /* K */
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->pK, pPkaReqInfo->aLen<<2);
+           pPkaOp->pK, pPkaReqInfo->aLen);
     offset += (pPkaReqInfo->aLen);
     offset += (offset & 0x1);
     
     pPkcpRegs->PKA_CPTR = offset; /* P1xyz */ 
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->point1.pX, pPkaReqInfo->bLen<<2);
+           pPkaOp->point1.pX, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->point1.pY, pPkaReqInfo->bLen<<2);
+           pPkaOp->point1.pY, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->point1.pZ, pPkaReqInfo->bLen<<2);
+           pPkaOp->point1.pZ, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen);
     offset += (offset & 0x1);
     
@@ -2555,33 +2555,33 @@ static int16_t salld_pka_op_ec2m_scale_setup(salldObj_t *inst, Sa_PkaReqInfo2_t*
     baseAddr += SA_PKA_A_BASE;
     pPkcpRegs->PKA_BPTR = offset; /* p, a, b */  
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->pModP, pPkaReqInfo->bLen<<2);
+           pPkaOp->pModP, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->pEcA, pPkaReqInfo->bLen<<2);
+           pPkaOp->pEcA, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->pEcB, pPkaReqInfo->bLen<<2);
+           pPkaOp->pEcB, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen);
     offset += (offset & 0x1);
     
     pPkcpRegs->PKA_DPTR = offset; /* P1xyz and P0xyx*/ 
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->point1.pX, pPkaReqInfo->bLen<<2);
+           pPkaOp->point1.pX, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->point1.pY, pPkaReqInfo->bLen<<2);
+           pPkaOp->point1.pY, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen);
     offset += (offset & 0x1);
     
     sap_pka_write((volatile uint32_t*)(baseAddr + (offset << 2)),  
-           pPkaOp->point1.pZ, pPkaReqInfo->bLen<<2);
+           pPkaOp->point1.pZ, pPkaReqInfo->bLen);
     offset += (pPkaReqInfo->bLen);
     offset += (offset & 0x1);
     
@@ -2698,7 +2698,7 @@ static int16_t salld_pka_op_pkcp_proc(salldObj_t *inst, Sa_PkaReqInfo2_t* pPkaRe
                                   (uint16_t)(pPkcpRegs->PKA_MSW - SA_PKA_C_OFFSET + 1);  
             sap_pka_read(pPkaOp->pResult, 
                   (volatile uint32_t*)(baseAddr  + SA_PKA_C_BASE), 
-                   pPkaOp->resultSize << 2);
+                   pPkaOp->resultSize);
             break;
             
         case sa_PKA_OP_ADD_SUB:
@@ -2706,7 +2706,7 @@ static int16_t salld_pka_op_pkcp_proc(salldObj_t *inst, Sa_PkaReqInfo2_t* pPkaRe
                                   (uint16_t)(pPkcpRegs->PKA_MSW - SA_PKA_D_OFFSET + 1);  
             sap_pka_read(pPkaOp->pResult, 
                   (volatile uint32_t*)(baseAddr  + SA_PKA_D_BASE), 
-                   pPkaOp->resultSize << 2);
+                   pPkaOp->resultSize);
             break;
     
         case sa_PKA_OP_DIV:
@@ -2716,10 +2716,10 @@ static int16_t salld_pka_op_pkcp_proc(salldObj_t *inst, Sa_PkaReqInfo2_t* pPkaRe
                                (uint16_t)(pPkcpRegs->PKA_DIVMSW - SA_PKA_C_OFFSET + 1);  
             sap_pka_read(pPkaOp->pRem, 
                   (volatile uint32_t*)(baseAddr  + SA_PKA_C_BASE), 
-                   pPkaOp->remSize << 2);
+                   pPkaOp->remSize);
             sap_pka_read(pPkaOp->pResult, 
                   (volatile uint32_t*)(baseAddr  + SA_PKA_D_BASE), 
-                   pPkaOp->resultSize << 2);
+                   pPkaOp->resultSize);
             break;
     
         case sa_PKA_OP_COMP:
@@ -2769,7 +2769,7 @@ static int16_t salld_pka_op_mod_common_proc(salldObj_t *inst, Sa_PkaReqInfo2_t*
          baseAddr += SA_PKA_A_BASE;
          sap_pka_read(pResult, 
                (volatile uint32_t*)(baseAddr  + (pPkcpRegs->PKA_DPTR << 2)), 
-                pPkaReqInfo->bLen << 2);
+                pPkaReqInfo->bLen);
                 
          return (sa_PKA_OP_COMPLETE);       
     }                  
@@ -2815,7 +2815,7 @@ static int16_t salld_pka_op_modexp_crt_proc(salldObj_t *inst, Sa_PkaReqInfo2_t*
          baseAddr += SA_PKA_A_BASE;
          sap_pka_read(pResult, 
                (volatile uint32_t*)(baseAddr  + (pPkcpRegs->PKA_DPTR << 2)), 
-                pPkaReqInfo->bLen << 3);
+                pPkaReqInfo->bLen << 1);
                 
          return (sa_PKA_OP_COMPLETE);       
     }                  
@@ -2864,19 +2864,19 @@ static int16_t salld_pka_op_ecp_common_proc(salldObj_t *inst, Sa_PkaReqInfo2_t*
         /* Copy the operation results */
         sap_pka_read(pPoint0->pX, 
               (volatile uint32_t*)(baseAddr  + (offset << 2)), 
-               pPkaReqInfo->bLen << 2);
+               pPkaReqInfo->bLen);
         offset += (pPkaReqInfo->bLen + 2);
         offset += (offset & 0x1);
         
         sap_pka_read(pPoint0->pY, 
               (volatile uint32_t*)(baseAddr  + (offset << 2)), 
-               pPkaReqInfo->bLen << 2);
+               pPkaReqInfo->bLen);
         offset += (pPkaReqInfo->bLen + 2);
         offset += (offset & 0x1);
         
         sap_pka_read(pPoint0->pZ, 
               (volatile uint32_t*)(baseAddr  + (offset << 2)), 
-               pPkaReqInfo->bLen << 2);
+               pPkaReqInfo->bLen);
                 
          return (sa_PKA_OP_COMPLETE);       
     }                  
@@ -2946,19 +2946,19 @@ static int16_t salld_pka_op_ecp_mul_scale_proc(salldObj_t *inst, Sa_PkaReqInfo2_
                 /* Copy the operation results */
                 sap_pka_read(pPoint0->pX, 
                    (volatile uint32_t*)(baseAddr  + (offset << 2)), 
-                    pPkaReqInfo->bLen << 2);
+                    pPkaReqInfo->bLen);
                 offset += (pPkaReqInfo->bLen + 2);
                 offset += (offset & 0x1);
         
                 sap_pka_read(pPoint0->pY, 
                    (volatile uint32_t*)(baseAddr  + (offset << 2)), 
-                    pPkaReqInfo->bLen << 2);
+                    pPkaReqInfo->bLen);
                 offset += (pPkaReqInfo->bLen + 2);
                 offset += (offset & 0x1);
         
                 sap_pka_read(pPoint0->pZ, 
                    (volatile uint32_t*)(baseAddr  + (offset << 2)), 
-                    pPkaReqInfo->bLen << 2);
+                    pPkaReqInfo->bLen);
                 
                 return (sa_PKA_OP_COMPLETE);       
             }     
@@ -3085,11 +3085,11 @@ static int16_t salld_pka_op_ecp_dsa_sign_proc(salldObj_t *inst, Sa_PkaReqInfo2_t
        baseAddr += SA_PKA_A_BASE;
        sap_pka_read(pPkaOp->pR,
              (volatile uint32_t*)(baseAddr  + (pEcdsaInst->offsetR << 2)),
-              pPkaReqInfo->bLen << 2);
+              pPkaReqInfo->bLen);
 
        sap_pka_read(pPkaOp->pS,
              (volatile uint32_t*)(baseAddr  + (pEcdsaInst->offsetS << 2)),
-              pPkaReqInfo->bLen << 2);
+              pPkaReqInfo->bLen);
 
        return(sa_PKA_OP_COMPLETE);
     }
@@ -3137,19 +3137,19 @@ static int16_t salld_pka_op_ec2m_common_proc(salldObj_t *inst, Sa_PkaReqInfo2_t*
         /* Copy the operation results */
         sap_pka_read(pPoint0->pX, 
               (volatile uint32_t*)(baseAddr  + (offset << 2)), 
-               pPkaReqInfo->bLen << 2);
+               pPkaReqInfo->bLen);
         offset += (pPkaReqInfo->bLen);
         offset += (offset & 0x1);
         
         sap_pka_read(pPoint0->pY, 
               (volatile uint32_t*)(baseAddr  + (offset << 2)), 
-               pPkaReqInfo->bLen << 2);
+               pPkaReqInfo->bLen);
         offset += (pPkaReqInfo->bLen);
         offset += (offset & 0x1);
         
         sap_pka_read(pPoint0->pZ, 
               (volatile uint32_t*)(baseAddr  + (offset << 2)), 
-               pPkaReqInfo->bLen << 2);
+               pPkaReqInfo->bLen);
                 
          return (sa_PKA_OP_COMPLETE);       
     }                  
@@ -3220,19 +3220,19 @@ static int16_t salld_pka_op_ec2m_mul_scale_proc(salldObj_t *inst, Sa_PkaReqInfo2
                 /* Copy the operation results */
                 sap_pka_read(pPoint0->pX, 
                    (volatile uint32_t*)(baseAddr  + (offset << 2)), 
-                    pPkaReqInfo->bLen << 2);
+                    pPkaReqInfo->bLen);
                 offset += (pPkaReqInfo->bLen);
                 offset += (offset & 0x1);
         
                 sap_pka_read(pPoint0->pY, 
                    (volatile uint32_t*)(baseAddr  + (offset << 2)), 
-                    pPkaReqInfo->bLen << 2);
+                    pPkaReqInfo->bLen);
                 offset += (pPkaReqInfo->bLen);
                 offset += (offset & 0x1);
         
                 sap_pka_read(pPoint0->pZ, 
                    (volatile uint32_t*)(baseAddr  + (offset << 2)), 
-                    pPkaReqInfo->bLen << 2);
+                    pPkaReqInfo->bLen);
                 
                 return (sa_PKA_OP_COMPLETE);       
             }