/* SPDX-License-Identifier: GPL-2.0-or-later */ /** ****************************************************************************** * @file util.c * @author StarFive Technology * @version V1.0 * @date 06/25/2020 * @brief ****************************************************************************** * @copy * * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STARFIVE SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * * COPYRIGHT 2020 Shanghai StarFive Technology Co., Ltd. */ #include "util.h" #include "comdef.h" //#include "stdio.h" #include "encoding.h" //unsigned int funcpll_432 = 0; //unsigned int osc_clk = 0; /*=========================================================================== FUNCTION: sys_memcpy DESCRIPTION: copy one block memory to another position INPUT PARAMETER: void *p_des: destination address const void * p_src: source address unsigned long size: length of memory to copy (unit is byte) OUTPUT PARAMETER: RETURN VALUE: ===========================================================================*/ extern unsigned int test_flag; void * sys_memcpy(void *p_des,const void * p_src,unsigned long size) { char *tmp = p_des; const char *s = p_src; while (size--) *tmp++ = *s++; return p_des; } int sys_memcmp(const void * cs,const void * ct,unsigned int count) { const unsigned char *su1, *su2; int res = 0; for( su1 = cs, su2 = ct; 0 < count; ++su1, ++su2, count--) if ((res = *su1 - *su2) != 0) break; return res; } void * _memcpy(void * dest,const void *src,unsigned int count) { char *tmp = (char *) dest; const char *s = (char *) src; while (count--) *tmp++ = *s++; return dest; } /*=========================================================================== FUNCTION: sys_memcpy_32 DESCRIPTION: copy one block memory to another position caller guarantee the src/des address are DWORD allign INPUT PARAMETER: void *p_des: destination address const void * p_src: source address unsigned long size: length of memory to copy (unit is DWORD) OUTPUT PARAMETER: RETURN VALUE: ===========================================================================*/ void sys_memcpy_32(void *p_des,const void * p_src,unsigned long size) { unsigned long i; for (i=0;i