[U-Boot] [PATCH v3 4/6] console: Use map_sysmem() for the pre-relocation console
Simon Glass
sjg at chromium.org
Fri Jun 16 03:37:52 UTC 2017
At present this feature casts the address to a pointer. Use the
map_sysmem() function so that it will work correctly on sandbox.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
Changes in v3:
- Add new patch to use map_sysmem() for the pre-relocation console
Changes in v2: None
common/console.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/common/console.c b/common/console.c
index 60e7a94a56..762d5f291c 100644
--- a/common/console.c
+++ b/common/console.c
@@ -11,6 +11,7 @@
#include <stdarg.h>
#include <iomux.h>
#include <malloc.h>
+#include <mapmem.h>
#include <os.h>
#include <serial.h>
#include <stdio_dev.h>
@@ -416,9 +417,13 @@ int tstc(void)
static void pre_console_putc(const char c)
{
- char *buffer = (char *)CONFIG_PRE_CON_BUF_ADDR;
+ char *buffer;
+
+ buffer = map_sysmem(CONFIG_PRE_CON_BUF_ADDR, CONFIG_PRE_CON_BUF_SZ);
buffer[CIRC_BUF_IDX(gd->precon_buf_idx++)] = c;
+
+ unmap_sysmem(buffer);
}
static void pre_console_puts(const char *s)
@@ -430,14 +435,16 @@ static void pre_console_puts(const char *s)
static void print_pre_console_buffer(int flushpoint)
{
unsigned long in = 0, out = 0;
- char *buf_in = (char *)CONFIG_PRE_CON_BUF_ADDR;
char buf_out[CONFIG_PRE_CON_BUF_SZ + 1];
+ char *buf_in;
+ buf_in = map_sysmem(CONFIG_PRE_CON_BUF_ADDR, CONFIG_PRE_CON_BUF_SZ);
if (gd->precon_buf_idx > CONFIG_PRE_CON_BUF_SZ)
in = gd->precon_buf_idx - CONFIG_PRE_CON_BUF_SZ;
while (in < gd->precon_buf_idx)
buf_out[out++] = buf_in[CIRC_BUF_IDX(in++)];
+ unmap_sysmem(buf_in);
buf_out[out] = 0;
--
2.13.1.518.g3df882009-goog
More information about the U-Boot
mailing list