[coreboot-gerrit] Change in coreboot[master]: riscv: Remove config string support

Jonathan Neuschäfer (Code Review) gerrit at coreboot.org
Sat Nov 25 00:03:51 CET 2017


Jonathan Neuschäfer has uploaded this change for review. ( https://review.coreboot.org/22594


Change subject: riscv: Remove config string support
......................................................................

riscv: Remove config string support

The code dealing with the old config string isn't needed anymore,
because the config string has been deprecated in favor of
OpenFirmware-derived devicetrees.

Change-Id: I71398fb4861dbaf7eefc6e6f222bb7159798fafa
Signed-off-by: Jonathan Neuschäfer <j.neuschaefer at gmx.net>
---
M src/arch/riscv/Makefile.inc
M src/arch/riscv/boot.c
M src/arch/riscv/trap_handler.c
D src/commonlib/configstring.c
D src/commonlib/include/commonlib/configstring.h
M src/soc/ucb/riscv/cbmem.c
6 files changed, 4 insertions(+), 271 deletions(-)



  git pull ssh://review.coreboot.org:29418/coreboot refs/changes/94/22594/1

diff --git a/src/arch/riscv/Makefile.inc b/src/arch/riscv/Makefile.inc
index 057088a..d2b6cce 100644
--- a/src/arch/riscv/Makefile.inc
+++ b/src/arch/riscv/Makefile.inc
@@ -43,8 +43,7 @@
 	$(top)/src/lib/memcmp.c \
 	$(top)/src/lib/memcpy.c \
 	$(top)/src/lib/memmove.c \
-	$(top)/src/lib/memset.c \
-	$(top)/src/commonlib/configstring.c
+	$(top)/src/lib/memset.c
 
 $(objcbfs)/bootblock.debug: $$(bootblock-objs)
 	@printf "    LINK       $(subst $(obj)/,,$(@))\n"
@@ -70,8 +69,7 @@
 	$(top)/src/lib/memcmp.c \
 	$(top)/src/lib/memcpy.c \
 	$(top)/src/lib/memmove.c \
-	$(top)/src/lib/memset.c \
-	$(top)/src/commonlib/configstring.c
+	$(top)/src/lib/memset.c
 
 romstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c
 
@@ -103,8 +101,7 @@
 	$(top)/src/lib/memcmp.c \
 	$(top)/src/lib/memcpy.c \
 	$(top)/src/lib/memmove.c \
-	$(top)/src/lib/memset.c \
-	$(top)/src/commonlib/configstring.c
+	$(top)/src/lib/memset.c
 
 $(eval $(call create_class_compiler,rmodules,riscv))
 
diff --git a/src/arch/riscv/boot.c b/src/arch/riscv/boot.c
index 9483c48..ac095bb 100644
--- a/src/arch/riscv/boot.c
+++ b/src/arch/riscv/boot.c
@@ -18,13 +18,12 @@
 #include <arch/encoding.h>
 #include <rules.h>
 #include <console/console.h>
-#include <commonlib/configstring.h>
 
 void arch_prog_run(struct prog *prog)
 {
 	void (*doit)(void *) = prog_entry(prog);
 	void riscvpayload(const char *configstring, void *payload);
-	const char *config = configstring();
+	const char *config = NULL;
 
 	if (ENV_RAMSTAGE && prog_type(prog) == PROG_PAYLOAD) {
 		printk(BIOS_SPEW, "Config string: '%s'\n", config);
diff --git a/src/arch/riscv/trap_handler.c b/src/arch/riscv/trap_handler.c
index b64505c..8fd0375 100644
--- a/src/arch/riscv/trap_handler.c
+++ b/src/arch/riscv/trap_handler.c
@@ -18,7 +18,6 @@
 #include <console/console.h>
 #include <string.h>
 #include <vm.h>
-#include <commonlib/configstring.h>
 
 static uint64_t *time;
 static uint64_t *timecmp;
diff --git a/src/commonlib/configstring.c b/src/commonlib/configstring.c
deleted file mode 100644
index fc91a4b..0000000
--- a/src/commonlib/configstring.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2013-2016, The Regents of the University of California
- *(Regents).
- * All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. Neither the name of the Regents nor the
- *    names of its contributors may be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- *
- * IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
- * SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
- * ARISING
- * OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
- * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
- * HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
- * MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
- */
-
-#include <string.h>
-#include <commonlib/configstring.h>
-
-void query_mem(const char *config_string, uintptr_t *base, size_t *size)
-{
-	query_result res = query_config_string(config_string, "ram{0{addr");
-	*base = get_uint(res);
-	res = query_config_string(config_string, "ram{0{size");
-	*size = get_uint(res);
-}
-
-/* query_rtc returns the physical address of the rtc. */
-void query_rtc(const char *config_string, uintptr_t *mtime)
-{
-	query_result res = query_config_string(config_string, "rtc{addr");
-	*mtime = (uintptr_t)get_uint(res);
-}
-
-const char *configstring(void)
-{
-	uint32_t addr = *(uint32_t *)CONFIG_RISCV_CONFIGSTRING;
-	return (const char *)(uintptr_t)addr;
-}
diff --git a/src/commonlib/include/commonlib/configstring.h b/src/commonlib/include/commonlib/configstring.h
deleted file mode 100644
index 8aacbda..0000000
--- a/src/commonlib/include/commonlib/configstring.h
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * Copyright (c) 2013-2016, The Regents of the University of California
- *(Regents).
- * All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. Neither the name of the Regents nor the
- *    names of its contributors may be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- *
- * IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
- * SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
- * ARISING
- * OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
- * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
- * HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
- * MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
- */
-
-#ifndef RISCV_CONFIG_STRING_H
-#define RISCV_CONFIG_STRING_H
-
-#include <stddef.h>
-#include <stdint.h>
-
-static const char *skip_whitespace(const char *str)
-{
-	while (*str && *str <= ' ')
-		str++;
-	return str;
-}
-
-static const char *skip_string(const char *str)
-{
-	while (*str && *str++ != '"')
-		;
-	return str;
-}
-
-static int is_hex(char ch)
-{
-	return (ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'f') ||
-	       (ch >= 'A' && ch <= 'F');
-}
-
-static int parse_hex(char ch)
-{
-	return (ch >= '0' && ch <= '9') ? ch - '0' : (ch >= 'a' && ch <= 'f')
-							 ? ch - 'a' + 10
-							 : ch - 'A' + 10;
-}
-
-static const char *skip_key(const char *str)
-{
-	while (*str >= 35 && *str <= 122 && *str != ';')
-		str++;
-	return str;
-}
-
-typedef struct {
-	const char *start;
-	const char *end;
-} query_result;
-
-static inline query_result query_config_string(const char *str, const char *k)
-{
-	size_t ksize = 0;
-	while (k[ksize] && k[ksize] != '{')
-		ksize++;
-	int last = !k[ksize];
-
-	query_result res = {0, 0};
-	while (1) {
-		const char *key_start = str = skip_whitespace(str);
-		const char *key_end = str = skip_key(str);
-		int match = (size_t)(key_end - key_start) == ksize;
-		if (match)
-			for (size_t i = 0; i < ksize; i++)
-				if (key_start[i] != k[i])
-					match = 0;
-		const char *value_start = str = skip_whitespace(str);
-		while (*str != ';') {
-			if (!*str) {
-				return res;
-			} else if (*str == '"') {
-				str = skip_string(str + 1);
-			} else if (*str == '{') {
-				const char *search_key =
-				    match && !last ? k + ksize + 1 : "";
-				query_result inner_res =
-				    query_config_string(str + 1, search_key);
-				if (inner_res.start)
-					return inner_res;
-				str = inner_res.end + 1;
-			} else {
-				str = skip_key(str);
-			}
-			str = skip_whitespace(str);
-		}
-		res.end = str;
-		if (match && last) {
-			res.start = value_start;
-			return res;
-		}
-		str = skip_whitespace(str + 1);
-		if (*str == '}') {
-			res.end = str;
-			return res;
-		}
-	}
-}
-
-static void parse_string(query_result r, char *buf)
-{
-	if (r.start < r.end) {
-		if (*r.start == '"') {
-			for (const char *p = r.start + 1;
-			     p < r.end && *p != '"'; p++) {
-				char ch = p[0];
-				if (ch == '\\' && p[1] == 'x' && is_hex(p[2])) {
-					ch = parse_hex(p[2]);
-					if (is_hex(p[3])) {
-						ch =
-						    (ch << 4) + parse_hex(p[3]);
-						p++;
-					}
-					p += 2;
-				}
-				*buf++ = ch;
-			}
-		} else {
-			for (const char *p = r.start; p < r.end && *p > ' ';
-			     p++)
-				*buf++ = *p;
-		}
-	}
-	*buf = 0;
-}
-
-static uint64_t __get_uint_hex(const char *s)
-{
-	uint64_t res = 0;
-	while (*s) {
-		if (is_hex(*s))
-			res = (res << 4) + parse_hex(*s);
-		else if (*s != '_')
-			break;
-		s++;
-	}
-	return res;
-}
-
-static uint64_t __get_uint_dec(const char *s)
-{
-	uint64_t res = 0;
-	while (*s) {
-		if (*s >= '0' && *s <= '9')
-			res = res * 10 + (*s - '0');
-		else
-			break;
-		s++;
-	}
-	return res;
-}
-
-static uint64_t __get_uint(const char *s)
-{
-	if (s[0] == '0' && s[1] == 'x')
-		return __get_uint_hex(s + 2);
-	return __get_uint_dec(s);
-}
-
-// This is nasty. But the original code used a much nastier thing,
-// an array declared as an automatic, which triggered gcc warnings
-// as it was sized by the res.end - res.start. We'll need a better
-// solution, long term. Malloc is probably not it.
-static char name[1024];
-static inline uint64_t get_uint(query_result res)
-{
-	uint64_t v;
-	parse_string(res, name);
-	v = __get_uint(name);
-	return v;
-}
-
-static inline int64_t get_sint(query_result res)
-{
-	int64_t v;
-	parse_string(res, name);
-	if (name[0] == '-')
-		return -__get_uint(name + 1);
-	v = __get_uint(name);
-	return v;
-}
-
-const char *configstring(void);
-void query_mem(const char *config_string, uintptr_t *base, size_t *size);
-void query_rtc(const char *config_string, uintptr_t *mtime);
-#endif
diff --git a/src/soc/ucb/riscv/cbmem.c b/src/soc/ucb/riscv/cbmem.c
index f8f4098..2ee400a 100644
--- a/src/soc/ucb/riscv/cbmem.c
+++ b/src/soc/ucb/riscv/cbmem.c
@@ -12,7 +12,6 @@
  */
 
 #include <cbmem.h>
-#include <commonlib/configstring.h>
 
 void *cbmem_top(void)
 {

-- 
To view, visit https://review.coreboot.org/22594
To unsubscribe, visit https://review.coreboot.org/settings

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I71398fb4861dbaf7eefc6e6f222bb7159798fafa
Gerrit-Change-Number: 22594
Gerrit-PatchSet: 1
Gerrit-Owner: Jonathan Neuschäfer <j.neuschaefer at gmx.net>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20171124/4f9b406b/attachment.html>


More information about the coreboot-gerrit mailing list