U32 PDrvCryptoSaveDESRegisters(PUBLIC_CRYPTO_DES_DES3_CONTEXT * pDesDes3Ctx) { /* (1) : Save the IV if we are in CBC mode */ if (DES_CTRL_GET_MODE(INREG32(&g_pDESReg_t->DES_CTRL)) == DES_CTRL_MODE_CBC) { pDesDes3Ctx->registers.DES_IV_L = INREG32(&g_pDESReg_t->DES_IV_L); pDesDes3Ctx->registers.DES_IV_H = INREG32(&g_pDESReg_t->DES_IV_H); } return PUBLIC_CRYPTO_OPERATION_SUCCESS; }
/*------------------------------------------------------------------------- *Save HWA registers into the specified operation state structure *-------------------------------------------------------------------------*/ static void PDrvCryptoSaveDESRegisters(u32 DES_CTRL, struct PUBLIC_CRYPTO_DES_OPERATION_STATE *pDESState) { dprintk(KERN_INFO "PDrvCryptoSaveDESRegisters in pDESState=%p CTRL=0x%08x\n", pDESState, DES_CTRL); /*Save the IV if we are in CBC mode */ if (DES_CTRL_GET_MODE(DES_CTRL) == DES_CTRL_MODE_CBC) { pDESState->DES_IV_L = INREG32(&pDESReg_t->DES_IV_L); pDESState->DES_IV_H = INREG32(&pDESReg_t->DES_IV_H); } }
U32 PDrvCryptoRestoreDESRegisters(PUBLIC_CRYPTO_DES_DES3_CONTEXT * pDesDes3Ctx) { /* Write the IV ctx->reg */ if (DES_CTRL_GET_MODE(INREG32(&pDesDes3Ctx->registers.DES_CTRL)) == DES_CTRL_MODE_CBC) { OUTREG32(&g_pDESReg_t->DES_IV_L, pDesDes3Ctx->registers.DES_IV_L); OUTREG32(&g_pDESReg_t->DES_IV_H, pDesDes3Ctx->registers.DES_IV_H); } /* Set the CTRL register from the context but resets the input&output ready and reserved bits */ OUTREG32(&g_pDESReg_t->DES_CTRL, pDesDes3Ctx->registers.DES_CTRL & 0x1C); /* Set the MASK register from the context but resets reserved bits */ OUTREG32(&g_pDESReg_t->DES_MASK, pDesDes3Ctx->registers.DES_MASK & 0xFF); return PUBLIC_CRYPTO_OPERATION_SUCCESS; }