[U-Boot] [PATCH] serial/serial_arc: set registers address during compilation

Alexey Brodkin Alexey.Brodkin at synopsys.com
Mon Mar 16 09:05:13 CET 2015


Being global variable with 0 value it falls into .bss area which we may
only use after relocation to RAM. And right after relocation we zero
.bss - effectively cleaing register address set for early console.

Now with pre-set value "regs" variable is no longer in .bss and this way
safely survives relocation.

Signed-off-by: Alexey Brodkin <abrodkin at synopsys.com>
---
 drivers/serial/serial_arc.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/serial/serial_arc.c b/drivers/serial/serial_arc.c
index 2ddbf32..0ee8ce5 100644
--- a/drivers/serial/serial_arc.c
+++ b/drivers/serial/serial_arc.c
@@ -28,7 +28,7 @@ struct arc_serial_regs {
 #define UART_OVERFLOW_ERR	(1 << 1)
 #define UART_TXEMPTY		(1 << 7)
 
-struct arc_serial_regs *regs;
+struct arc_serial_regs *regs = (struct arc_serial_regs *)CONFIG_ARC_UART_BASE;
 
 static void arc_serial_setbrg(void)
 {
@@ -60,7 +60,6 @@ static void arc_serial_setbrg(void)
 
 static int arc_serial_init(void)
 {
-	regs = (struct arc_serial_regs *)CONFIG_ARC_UART_BASE;
 	serial_setbrg();
 	return 0;
 }
-- 
2.1.0



More information about the U-Boot mailing list