[coreboot-gerrit] Patch set updated for coreboot: fde5560 console: Add console for GDB
Kyösti Mälkki (kyosti.malkki@gmail.com)
gerrit at coreboot.org
Fri Mar 7 13:47:21 CET 2014
Kyösti Mälkki (kyosti.malkki at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/5343
-gerrit
commit fde556051d2b72d8607485237a0b7ba376166d28
Author: Kyösti Mälkki <kyosti.malkki at gmail.com>
Date: Sun Jan 26 22:51:48 2014 +0200
console: Add console for GDB
Change-Id: I90e05e8132889e788b92e055ee191f35add43bbc
Signed-off-by: Kyösti Mälkki <kyosti.malkki at gmail.com>
---
src/arch/x86/lib/c_start.S | 1 +
src/arch/x86/lib/exception.c | 13 +++++++++++--
src/console/console.c | 24 ++++++++++++++++++++++++
src/include/console/streams.h | 6 ++++++
src/include/console/uart.h | 7 +++++++
src/include/console/usb.h | 10 ++++++++++
6 files changed, 59 insertions(+), 2 deletions(-)
diff --git a/src/arch/x86/lib/c_start.S b/src/arch/x86/lib/c_start.S
index 01ffa7c..839f259 100644
--- a/src/arch/x86/lib/c_start.S
+++ b/src/arch/x86/lib/c_start.S
@@ -84,6 +84,7 @@ _start:
post_code(POST_PRE_HARDWAREMAIN) /* post fe */
#if CONFIG_GDB_WAIT
+ call gdb_hw_init
call gdb_stub_breakpoint
#endif
call main
diff --git a/src/arch/x86/lib/exception.c b/src/arch/x86/lib/exception.c
index 9756949..f64b2e7 100644
--- a/src/arch/x86/lib/exception.c
+++ b/src/arch/x86/lib/exception.c
@@ -1,4 +1,5 @@
#include <console/console.h>
+#include <console/streams.h>
#include <string.h>
#if CONFIG_GDB_STUB
@@ -217,12 +218,17 @@ static char out_buffer[BUFMAX];
static inline void stub_putc(int ch)
{
- console_tx_byte(ch);
+ gdb_tx_byte(ch);
+}
+
+static inline void stub_flush(void)
+{
+ gdb_tx_flush();
}
static inline int stub_getc(void)
{
- return console_rx_byte();
+ return gdb_rx_byte();
}
static int hex(char ch)
@@ -322,9 +328,11 @@ static int get_packet(char *buffer)
if (checksum != xmitcsum) {
stub_putc('-'); /* failed checksum */
+ stub_flush();
}
else {
stub_putc('+'); /* successful transfer */
+ stub_flush();
}
}
} while(checksum != xmitcsum);
@@ -353,6 +361,7 @@ static void put_packet(char *buffer)
stub_putc('#');
stub_putc(hexchars[checksum >> 4]);
stub_putc(hexchars[checksum % 16]);
+ stub_flush();
} while ((stub_getc() & 0x7f) != '+');
diff --git a/src/console/console.c b/src/console/console.c
index cd72596..396ca07 100644
--- a/src/console/console.c
+++ b/src/console/console.c
@@ -54,6 +54,30 @@ void console_tx_flush(void)
__usb_tx_flush();
}
+
+#if CONFIG_GDB_STUB && !defined(__SMM__)
+void gdb_hw_init(void)
+{
+ __gdb_hw_init();
+}
+
+void gdb_tx_byte(unsigned char byte)
+{
+ __gdb_tx_byte(byte);
+}
+
+void gdb_tx_flush(void)
+{
+ __gdb_tx_flush();
+}
+
+unsigned char gdb_rx_byte(void)
+{
+ return __gdb_rx_byte();
+}
+#endif
+
+
void console_tx_nibble(unsigned nibble)
{
unsigned char digit;
diff --git a/src/include/console/streams.h b/src/include/console/streams.h
index 550004e..cac7449 100644
--- a/src/include/console/streams.h
+++ b/src/include/console/streams.h
@@ -47,6 +47,12 @@ void console_hw_init(void);
void console_tx_byte(unsigned char byte);
void console_tx_flush(void);
+/* For remote GDB debugging. */
+void gdb_hw_init(void);
+void gdb_tx_byte(unsigned char byte);
+void gdb_tx_flush(void);
+unsigned char gdb_rx_byte(void);
+
/* Helpers for ROMCC console. */
void console_tx_nibble(unsigned nibble);
void console_tx_hex8(unsigned char value);
diff --git a/src/include/console/uart.h b/src/include/console/uart.h
index d51bf2a..0a85213 100644
--- a/src/include/console/uart.h
+++ b/src/include/console/uart.h
@@ -61,4 +61,11 @@ void oxford_remap(unsigned int new_base);
#define __uart_tx_flush()
#endif
+#if 0 /* CONFIG_GDB_STUB_SERIAL && (ENV_ROMSTAGE || ENV_RAMSTAGE) */
+#define __gdb_hw_init() uart_init(CONFIG_GDB_PORT)
+#define __gdb_tx_byte(x) uart_tx_byte(CONFIG_GDB_PORT, x);
+#define __gdb_tx_flush() uart_tx_flush(CONFIG_GDB_PORT)
+#define __gdb_rx_byte() uart_rx_byte(CONFIG_GDB_PORT)
+#endif
+
#endif /* CONSOLE_UART_H */
diff --git a/src/include/console/usb.h b/src/include/console/usb.h
index 31059cb..8c81e49 100644
--- a/src/include/console/usb.h
+++ b/src/include/console/usb.h
@@ -33,6 +33,9 @@ int usb_can_rx_byte(int idx);
#define __CONSOLE_USB_ENABLE__ CONFIG_CONSOLE_USB && \
(ENV_ROMSTAGE && CONFIG_USBDEBUG_IN_ROMSTAGE || ENV_RAMSTAGE)
+#define __GDB_STUB_USB_ENABLE__ 0 /* CONFIG_GDB_STUB_USB */ && \
+ (ENV_ROMSTAGE && CONFIG_USBDEBUG_IN_ROMSTAGE || ENV_RAMSTAGE)
+
#if __CONSOLE_USB_ENABLE__
#define __usbdebug_init() usbdebug_init()
#define __usb_tx_byte(x) usb_tx_byte(0, x)
@@ -43,4 +46,11 @@ int usb_can_rx_byte(int idx);
#define __usb_tx_flush()
#endif
+#if __GDB_STUB_USB_ENABLE__
+#define __gdb_hw_init() usbdebug_init()
+#define __gdb_tx_byte(x) usb_tx_byte(0, x)
+#define __gdb_tx_flush() usb_tx_flush(0)
+#define __gdb_rx_byte() usb_rx_byte(0)
+#endif
+
#endif /* _CONSOLE_USB_H_ */
More information about the coreboot-gerrit
mailing list