bin_header_debug: add implementation of C library functions
** this is patch #4 in bin_header_debug series of patches
bin header does not include C libraries in it's build, such as
string and ctype.
- add implementation of C library functions (string and ctype)
that will be used in future patches.
Change-Id: I5f1687cd3afff779e226ceec712bef78c6ed54f1
Signed-off-by: Bassel Saba <basselsa@marvell.com>
Reviewed-on: http://vgitil04.il.marvell.com:8080/19661
Tested-by: Star_Automation <star@marvell.com>
Reviewed-by: Omri Itach <omrii@marvell.com>
diff --git a/tools/marvell/bin_hdr/platform/Makefile b/tools/marvell/bin_hdr/platform/Makefile
index 352b962..b597933 100755
--- a/tools/marvell/bin_hdr/platform/Makefile
+++ b/tools/marvell/bin_hdr/platform/Makefile
@@ -80,7 +80,7 @@
CSRC_DRV = $(DRV)/mv_uart.c $(DRV)/mv_twsi.c $(DRV)/mv_time.c
CSRC_UTILS = $(UTILS)/utils.c $(UTILS)/printf.c $(UTILS)/mvHwsSiliconIf.c
CSRC_SYS_ENV = $(SYS_ENV)/mvSysEnvLib.c
-CSRC_BIN_HDR_DEBUG = $(BIN_HDR_DEBUG)/debug.c
+CSRC_BIN_HDR_DEBUG = $(BIN_HDR_DEBUG)/debug.c $(BIN_HDR_DEBUG)/lib_utils.c
ifeq "$(CONFIG_ALLEYCAT3)" "y"
CSRC_UTILS += $(UTILS)/mv_seq_exec_ext.c
diff --git a/tools/marvell/bin_hdr/platform/utils/debug/lib_utils.c b/tools/marvell/bin_hdr/platform/utils/debug/lib_utils.c
new file mode 100644
index 0000000..b50fceb
--- /dev/null
+++ b/tools/marvell/bin_hdr/platform/utils/debug/lib_utils.c
@@ -0,0 +1,304 @@
+/*******************************************************************************
+Copyright (C) Marvell International Ltd. and its affiliates
+
+This software file (the "File") is owned and distributed by Marvell
+International Ltd. and/or its affiliates ("Marvell") under the following
+alternative licensing terms. Once you have made an election to distribute the
+File under one of the following license alternatives, please (i) delete this
+introductory statement regarding license alternatives, (ii) delete the two
+license alternatives that you have not elected to use and (iii) preserve the
+Marvell copyright notice above.
+
+********************************************************************************
+Marvell Commercial License Option
+
+If you received this File from Marvell and you have entered into a commercial
+license agreement (a "Commercial License") with Marvell, the File is licensed
+to you under the terms of the applicable Commercial License.
+
+********************************************************************************
+Marvell GPL License Option
+
+If you received this File from Marvell, you may opt to use, redistribute and/or
+modify this File in accordance with the terms and conditions of the General
+Public License Version 2, June 1991 (the "GPL License"), a copy of which is
+available along with the File in the license.txt file or by writing to the Free
+Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
+on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
+
+THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
+WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
+DISCLAIMED. The GPL License provides additional details about this warranty
+disclaimer.
+********************************************************************************
+Marvell BSD License Option
+
+If you received this File from Marvell, you may opt to use, redistribute and/or
+modify this File under the following licensing terms.
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of Marvell nor the names of its contributors may be
+ used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+*******************************************************************************/
+
+#include "lib_utils.h"
+#include <stdlib.h>
+#include "mv_os.h"
+#include "mvUart.h"
+#include "printf.h"
+
+/*******************************************************************************
+ * implementation of used ctype functions
+ *******************************************************************************/
+
+/*******************************************************************************
+* isprint
+*
+* DESCRIPTION:
+* Checks whether c is a printable character
+* A printable character is a character that occupies a printing position on a display
+*
+*******************************************************************************/
+int isprint(int c)
+{
+ return c >= ' ' && c <= '~';
+}
+
+/*******************************************************************************
+* isblank1
+*
+* DESCRIPTION:
+* Checks whether c is a blank character
+* the blank characters are space and horizontal tab
+*
+*******************************************************************************/
+int isblank1(char c)
+{
+ return (c >= 9 && c <= 13) || c == 32;
+}
+
+/*******************************************************************************
+* isxdigit
+*
+* DESCRIPTION:
+* Checks whether c is a hexdecimal digit character
+* Hexadecimal digits are any of: 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
+*
+*******************************************************************************/
+int isxdigit(int c)
+{
+ if (c >= '0' && c <= '9')
+ return 1;
+
+ if (c >= 'A' && c <= 'F')
+ return 1;
+
+ if (c >= 'a' && c <= 'f')
+ return 1;
+
+ return 0;
+}
+
+/*******************************************************************************
+* isdigit
+*
+* DESCRIPTION:
+* Checks whether c is a decimal digit character
+* Decimal digits are any of: 0 1 2 3 4 5 6 7 8 9
+*
+*******************************************************************************/
+int isdigit(int c)
+{
+ if (c >= '0' && c <= '9')
+ return 1;
+
+ return 0;
+}
+
+/*******************************************************************************
+* islower
+*
+* DESCRIPTION:
+* Checks whether c is a lowercase letter
+*
+*******************************************************************************/
+int islower(int c)
+{
+ if (c >= 'a' && c <= 'z')
+ return 1;
+
+ return 0;
+}
+
+/*******************************************************************************
+* toupper
+*
+* DESCRIPTION:
+* Returns the uppercase equivalent of c
+*
+*******************************************************************************/
+int toupper(int c)
+{
+ if (islower(c))
+ return 'A' + (c - 'a');
+ else
+ return c;
+}
+
+/*******************************************************************************
+ * implementation of used string functions
+ *******************************************************************************/
+
+/* strchr */
+char *strchr(const char *s, int c)
+{
+/* Scan s for the character. When this loop is finished,
+ s will either point to the end of the string or the
+ character we were looking for. */
+ while (*s != '\0' && *s != (char)c)
+ s++;
+ return (*s == (char)c) ? (char *) s : NULL;
+}
+
+/* strlen */
+int strlen(const char *s)
+{
+ const char *p = s;
+ /* Loop over the data in s. */
+ while (*p != '\0')
+ p++;
+ return (int)(p - s);
+}
+
+/* strcmp */
+int strcmp(const char *s1, const char *s2)
+{
+ int __res;
+ while (1) {
+ __res = *s1 - *s2++;
+ if (__res != 0 || !*s1++)
+ break;
+ }
+
+ return __res;
+}
+
+/* strncmp */
+int strncmp(const char *s1, const char *s2, int n)
+{
+ unsigned char uc1, uc2;
+ /* Nothing to compare? Return zero. */
+ if (n == 0)
+ return 0;
+
+ /* Loop, comparing bytes. */
+ while (n-- > 0 && *s1 == *s2) {
+ /* If we've run out of bytes or hit a null, return zero
+ since we already know *s1 == *s2. */
+ if (n == 0 || *s1 == '\0')
+ return 0;
+
+ s1++;
+ s2++;
+ }
+ uc1 = (*(unsigned char *) s1);
+ uc2 = (*(unsigned char *) s2);
+ return ((uc1 < uc2) ? -1 : (uc1 > uc2));
+}
+/* strcpy */
+char *strcpy(char *s1, const char *s2)
+{
+ char *dst = s1;
+ const char *src = s2;
+ /* Do the copying in a loop. */
+ while ((*dst++ = *src++) != '\0')
+ ; /* The body of this loop is left empty. */
+ /* Return the destination string. */
+ return s1;
+}
+
+/*******************************************************************************
+ * implementation of other utils
+ *******************************************************************************/
+unsigned long simple_strtoul(const char *cp, char **endp, unsigned int base)
+{
+ unsigned long result = 0, value;
+
+ if (*cp == '0') {
+ cp++;
+ if ((*cp == 'x') && isxdigit(cp[1])) {
+ base = 16;
+ cp++;
+ }
+ if (!base)
+ base = 8;
+ }
+ if (!base)
+ base = 10;
+
+ while (isxdigit(*cp) && (value = isdigit(*cp) ? *cp-'0' : (islower(*cp)
+ ? toupper(*cp) : *cp)-'A'+10) < base) {
+ result = result*base + value;
+ cp++;
+ }
+ if (endp)
+ *endp = (char *)cp;
+ return result;
+}
+
+char console_buffer[CONFIG_SYS_CBSIZE + 1];
+/*******************************************************************************
+* readline
+*
+* DESCRIPTION:
+* prints 'disp' and reads characters from UART until newline character(ACSII 13)
+* received and writes the characters to 'console_buffer'
+*
+* INPUT:
+* disp - string to display.
+*
+* RETURN:
+* Number of read characters, not including newline character
+*
+*******************************************************************************/
+int readline(const char *disp)
+{
+ char c;
+ int curr = 0;
+ mvPrintf(disp);
+
+ while (curr <= CONFIG_SYS_CBSIZE) {
+ c = mvUartGetc();
+ if (c == 13) {
+ console_buffer[curr] = 0;
+ putstring("\n");
+ return curr;
+ }
+ mvUartPutc(c);
+ console_buffer[curr++] = c;
+ }
+ console_buffer[CONFIG_SYS_CBSIZE] = 0;
+ return curr;
+}
+
diff --git a/tools/marvell/bin_hdr/platform/utils/debug/lib_utils.h b/tools/marvell/bin_hdr/platform/utils/debug/lib_utils.h
new file mode 100644
index 0000000..f445ee0
--- /dev/null
+++ b/tools/marvell/bin_hdr/platform/utils/debug/lib_utils.h
@@ -0,0 +1,81 @@
+/*******************************************************************************
+Copyright (C) Marvell International Ltd. and its affiliates
+
+This software file (the "File") is owned and distributed by Marvell
+International Ltd. and/or its affiliates ("Marvell") under the following
+alternative licensing terms. Once you have made an election to distribute the
+File under one of the following license alternatives, please (i) delete this
+introductory statement regarding license alternatives, (ii) delete the two
+license alternatives that you have not elected to use and (iii) preserve the
+Marvell copyright notice above.
+
+********************************************************************************
+Marvell Commercial License Option
+
+If you received this File from Marvell and you have entered into a commercial
+license agreement (a "Commercial License") with Marvell, the File is licensed
+to you under the terms of the applicable Commercial License.
+
+********************************************************************************
+Marvell GPL License Option
+
+If you received this File from Marvell, you may opt to use, redistribute and/or
+modify this File in accordance with the terms and conditions of the General
+Public License Version 2, June 1991 (the "GPL License"), a copy of which is
+available along with the File in the license.txt file or by writing to the Free
+Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
+on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
+
+THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
+WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
+DISCLAIMED. The GPL License provides additional details about this warranty
+disclaimer.
+********************************************************************************
+Marvell BSD License Option
+
+If you received this File from Marvell, you may opt to use, redistribute and/or
+modify this File under the following licensing terms.
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of Marvell nor the names of its contributors may be
+ used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+*******************************************************************************/
+
+#define CONFIG_SYS_CBSIZE 1024
+extern char console_buffer[CONFIG_SYS_CBSIZE + 1];
+
+/* ctype */
+int isblank1(char c);
+int isprint(int c);
+
+/* string */
+char *strchr(const char *s, int c);
+int strlen(const char *s);
+int strcmp(const char *s1, const char *s2);
+int strncmp(const char *s1, const char *s2, int n);
+char *strcpy(char *s1, const char *s2);
+
+/* other utils */
+unsigned long simple_strtoul(const char *cp, char **endp, unsigned int base);
+int readline(const char *disp);