summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorPavel Pisa <ppisa@pikron.com>2016-05-21 03:10:06 +0200
committerPavel Pisa <ppisa@pikron.com>2016-05-31 10:33:42 +0200
commit4c59eebfbf6037a6e1362a0c1c9904829be1762a (patch)
tree18cb669657b120785fd40686d5854237f620e3e7 /c
parentlibchip: Remove dwmac network interface driver (diff)
downloadrtems-4c59eebfbf6037a6e1362a0c1c9904829be1762a.tar.bz2
arm/raspberrypi: cmdline enhancement and early access workaround.
cmdline argument is returned without option name. The calls to command line parsing can be called earlier before BSS is cleaned out.
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/arm/raspberrypi/startup/cmdline.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/c/src/lib/libbsp/arm/raspberrypi/startup/cmdline.c b/c/src/lib/libbsp/arm/raspberrypi/startup/cmdline.c
index f8a7182c65..d585e311d8 100644
--- a/c/src/lib/libbsp/arm/raspberrypi/startup/cmdline.c
+++ b/c/src/lib/libbsp/arm/raspberrypi/startup/cmdline.c
@@ -19,8 +19,8 @@
#include <bsp/vc.h>
#define MAX_CMDLINE_LENGTH 1024
-static int rpi_cmdline_ready;
-static char rpi_cmdline_cached[MAX_CMDLINE_LENGTH];
+static int rpi_cmdline_ready = -1;
+static char rpi_cmdline_cached[MAX_CMDLINE_LENGTH] = "force .data placement";
static bcm2835_get_cmdline_entries rpi_cmdline_entries;
const char *rpi_cmdline_get_raw(void)
@@ -32,7 +32,7 @@ const char *rpi_cmdline_get_raw(void)
const char *rpi_cmdline_get_cached(void)
{
- if (!rpi_cmdline_ready) {
+ if (rpi_cmdline_ready <= 0) {
const char *line = rpi_cmdline_get_raw();
strncpy(rpi_cmdline_cached, line, MAX_CMDLINE_LENGTH - 1);
rpi_cmdline_cached[MAX_CMDLINE_LENGTH - 1] = 0;
@@ -43,5 +43,9 @@ const char *rpi_cmdline_get_cached(void)
const char *rpi_cmdline_get_arg(const char* arg)
{
- return strstr (rpi_cmdline_get_cached(), arg);
+ const char *opt_data;
+ opt_data = strstr(rpi_cmdline_get_cached(), arg);
+ if (opt_data)
+ opt_data += strlen(arg);
+ return opt_data;
}