summaryrefslogtreecommitdiff
path: root/core/cortex-m/watchdog.c
diff options
context:
space:
mode:
authorRicardo Quesada <ricardoq@google.com>2021-07-28 17:15:56 -0700
committerCommit Bot <commit-bot@chromium.org>2021-07-30 20:19:42 +0000
commitd92c21a2ae6544aac372ec9b98a97cab1db6d302 (patch)
treee33dc9708bde975b8b8249b7a1fe8cf022353920 /core/cortex-m/watchdog.c
parent5f8e59c305bd8f9497a7409a0d27e034896e4038 (diff)
downloadchrome-ec-d92c21a2ae6544aac372ec9b98a97cab1db6d302.tar.gz
cortex-m*: make watchdog code more readable
This CL makes the code more readable by adding comment / defines regarding the meaning of PSP[5] and PSP[6]. BUG=None TEST=make buildall BRANCH=None Change-Id: I0cbe7384e20f0287096624a00b0ec19c0fb7f9bd Signed-off-by: Ricardo Quesada <ricardoq@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3059814 Tested-by: Ricardo Quesada <ricardoq@chromium.org> Reviewed-by: Aseda Aboagye <aaboagye@chromium.org> Commit-Queue: Ricardo Quesada <ricardoq@chromium.org> Auto-Submit: Ricardo Quesada <ricardoq@chromium.org>
Diffstat (limited to 'core/cortex-m/watchdog.c')
-rw-r--r--core/cortex-m/watchdog.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/core/cortex-m/watchdog.c b/core/cortex-m/watchdog.c
index 9e4a82c7b0..c9faf54b2b 100644
--- a/core/cortex-m/watchdog.c
+++ b/core/cortex-m/watchdog.c
@@ -12,6 +12,14 @@
#include "timer.h"
#include "watchdog.h"
+/*
+ * As defined by Armv7-M Reference Manual B1.5.6 "Exception Entry Behavior",
+ * the structure of the saved context on the stack is:
+ * r0, r1, r2, r3, r12, lr, pc, psr, ...
+ */
+#define STACK_IDX_REG_LR 5
+#define STACK_IDX_REG_PC 6
+
void __keep watchdog_trace(uint32_t excep_lr, uint32_t excep_sp)
{
uint32_t psp;
@@ -26,7 +34,7 @@ void __keep watchdog_trace(uint32_t excep_lr, uint32_t excep_sp)
stack = (uint32_t *)psp;
}
- panic_set_reason(PANIC_SW_WATCHDOG, stack[6],
+ panic_set_reason(PANIC_SW_WATCHDOG, stack[STACK_IDX_REG_PC],
(excep_lr & 0xf) == 1 ? 0xff : task_get_current());
/*
@@ -37,7 +45,7 @@ void __keep watchdog_trace(uint32_t excep_lr, uint32_t excep_sp)
cpu_clean_invalidate_dcache();
panic_printf("### WATCHDOG PC=%08x / LR=%08x / pSP=%08x ",
- stack[6], stack[5], psp);
+ stack[STACK_IDX_REG_PC], stack[STACK_IDX_REG_LR], psp);
if ((excep_lr & 0xf) == 1)
panic_puts("(exc) ###\n");
else