summaryrefslogtreecommitdiff
path: root/core/cortex-m/watchdog.c
diff options
context:
space:
mode:
authorRandall Spangler <rspangler@chromium.org>2012-10-26 09:29:40 -0700
committerGerrit <chrome-bot@google.com>2012-10-29 10:36:05 -0700
commitfc6b412589742976db12de4aa64137c03bfbf311 (patch)
treeb32b72aeef1284e9c2d8354d68cc8ef0694712e6 /core/cortex-m/watchdog.c
parentbff5a49e6d06c13e67b1a72470dc1d9a2326eb16 (diff)
downloadchrome-ec-fc6b412589742976db12de4aa64137c03bfbf311.tar.gz
Consolidate emergency debug output
This removes the duplicate uart_emergency_printf() vs. panic_printf() / uart_emergency_puts() vs. panic_puts() implementation and saves ~0.5kb of code size. The other significant change is that uart_flush_output() is now smart enough to determine if it's in an interrupt; if so, it will spin-flush the output buffer instead of waiting on the uart interrupt. This removes the need for a separate panic_flush(). BUG=chrome-os-partner:15579 BRANCH=none TEST=crash unaligned; should print well-formatted crash dump Change-Id: Ifae756203dd1881806be563308077c1d68302e1f Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/36695
Diffstat (limited to 'core/cortex-m/watchdog.c')
-rw-r--r--core/cortex-m/watchdog.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/core/cortex-m/watchdog.c b/core/cortex-m/watchdog.c
index d21bb4f1ec..ae26734692 100644
--- a/core/cortex-m/watchdog.c
+++ b/core/cortex-m/watchdog.c
@@ -5,16 +5,14 @@
/* Watchdog common code */
-#include "board.h"
#include "common.h"
-#include "config.h"
+#include "panic.h"
#include "registers.h"
#include "task.h"
#include "timer.h"
#include "uart.h"
#include "watchdog.h"
-
void watchdog_trace(uint32_t excep_lr, uint32_t excep_sp)
{
uint32_t psp;
@@ -29,21 +27,17 @@ void watchdog_trace(uint32_t excep_lr, uint32_t excep_sp)
stack = (uint32_t *)psp;
}
- uart_printf("### WATCHDOG PC=%08x / LR=%08x / pSP=%08x ",
- stack[6], stack[5], psp);
+ panic_printf("### WATCHDOG PC=%08x / LR=%08x / pSP=%08x ",
+ stack[6], stack[5], psp);
if ((excep_lr & 0xf) == 1)
- uart_puts("(exc) ###\n");
+ panic_puts("(exc) ###\n");
else
- uart_printf("(task %d) ###\n", task_get_current());
- /* Ensure this debug message is always flushed to the UART */
- uart_emergency_flush();
+ panic_printf("(task %d) ###\n", task_get_current());
/* If we are blocked in a high priority IT handler, the following debug
* messages might not appear but they are useless in that situation. */
timer_print_info();
- uart_emergency_flush();
task_print_list();
- uart_emergency_flush();
}