crypto: rockchip: pka: avoid optimizing custom memcpy/memset

SRAM accessed by PKA requires word alignment.
It will crash if optimized to memset/memcpy.

Change-Id: I0122ff7ffab3835c513c39d57aa5441655cd2b03
Signed-off-by: Wang Xiaobin <xb.wang@rock-chips.com>
This commit is contained in:
Wang Xiaobin
2022-04-19 15:54:42 +08:00
committed by Tao Huang
parent c61e7280aa
commit f1148033d4

View File

@@ -155,39 +155,22 @@ enum pka_opcode {
/********************* Private Variable Definition ***************************/
static void __iomem *pka_base;
/*
* Turn off clang optimization temporarily. Pka_word_memcpy will be optimized
* to memcpy, but the SRAM area of PKA can only be accessed in word, so memcpy
* will cause panic.
*/
#if defined(__clang__)
#pragma clang optimize off
#endif
static void pka_word_memcpy(u32 *dst, u32 *src, u32 size)
{
u32 i;
for (i = 0; i < size; i++)
dst[i] = src[i];
for (i = 0; i < size; i++, dst++)
writel_relaxed(src[i], (void *)dst);
}
static void pka_word_memset(u32 *buff, u32 val, u32 size)
{
u32 i;
for (i = 0; i < size; i++)
buff[i] = val;
for (i = 0; i < size; i++, buff++)
writel_relaxed(val, (void *)buff);
}
#if defined(__clang__)
#pragma clang optimize on
#endif
static int pka_wait_pipe_rdy(void)
{
u32 reg_val = 0;