Enable the debug UART and emit a single 'a' early in the init sequence to
show that it is working.

Unfortunately the debug UART implementation needs a stack to work. I cannot
seem to remove this limitation as the absolute 'jmp %eax' instruction goes
off into the weeds.

So this means that the character output cannot be any earlier than
car_init_ret, where memory is available for a stack.

Signed-off-by: Simon Glass <s...@chromium.org>
---

 arch/x86/cpu/start.S        |  4 ++++
 configs/minnowmax_defconfig |  4 ++++
 include/debug_uart.h        | 20 ++++++++++----------
 3 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/arch/x86/cpu/start.S b/arch/x86/cpu/start.S
index 2e5f9da..c6965b2 100644
--- a/arch/x86/cpu/start.S
+++ b/arch/x86/cpu/start.S
@@ -109,6 +109,10 @@ car_init_ret:
        andl    $0xfffffff0, %esp
        post_code(POST_START_STACK)
 
+       call    debug_uart_init
+       mov     $'a', %eax
+       call    printch
+
        /* Zero the global data since it won't happen later */
        xorl    %eax, %eax
        movl    $GENERATED_GBL_DATA_SIZE, %ecx
diff --git a/configs/minnowmax_defconfig b/configs/minnowmax_defconfig
index 744aca3..14e21fa 100644
--- a/configs/minnowmax_defconfig
+++ b/configs/minnowmax_defconfig
@@ -12,3 +12,7 @@ CONFIG_CMD_CPU=y
 CONFIG_CMD_NET=y
 CONFIG_OF_CONTROL=y
 CONFIG_CPU=y
+CONFIG_DEBUG_UART=y
+CONFIG_DEBUG_UART_NS16550=y
+CONFIG_DEBUG_UART_BASE=0x3f8
+CONFIG_DEBUG_UART_CLOCK=1843200
diff --git a/include/debug_uart.h b/include/debug_uart.h
index f56797b..0acc91c 100644
--- a/include/debug_uart.h
+++ b/include/debug_uart.h
@@ -64,46 +64,46 @@ void debug_uart_init(void);
  *
  * @ch:                Character to output
  */
-asmlinkage void printch(int ch);
+void printch(int ch);
 
 /**
  * printascii() - Output an ASCII string to the debug UART
  *
  * @str:       String to output
  */
-asmlinkage void printascii(const char *str);
+void printascii(const char *str);
 
 /**
  * printhex2() - Output a 2-digit hex value
  *
  * @value:     Value to output
  */
-asmlinkage void printhex2(uint value);
+void printhex2(uint value);
 
 /**
  * printhex4() - Output a 4-digit hex value
  *
  * @value:     Value to output
  */
-asmlinkage void printhex4(uint value);
+void printhex4(uint value);
 
 /**
  * printhex8() - Output a 8-digit hex value
  *
  * @value:     Value to output
  */
-asmlinkage void printhex8(uint value);
+void printhex8(uint value);
 
 /*
  * Now define some functions - this should be inserted into the serial driver
  */
 #define DEBUG_UART_FUNCS \
-       asmlinkage void printch(int ch) \
+       void printch(int ch) \
        { \
                _debug_uart_putc(ch); \
        } \
 \
-       asmlinkage void printascii(const char *str) \
+       void printascii(const char *str) \
        { \
                while (*str) \
                        _debug_uart_putc(*str++); \
@@ -121,17 +121,17 @@ asmlinkage void printhex8(uint value);
                        printhex1(value >> (4 * digits)); \
        } \
 \
-       asmlinkage void printhex2(uint value) \
+       void printhex2(uint value) \
        { \
                printhex(value, 2); \
        } \
 \
-       asmlinkage void printhex4(uint value) \
+       void printhex4(uint value) \
        { \
                printhex(value, 4); \
        } \
 \
-       asmlinkage void printhex8(uint value) \
+       void printhex8(uint value) \
        { \
                printhex(value, 8); \
        }
-- 
2.2.0.rc0.207.ga3a616c

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to