aboutsummaryrefslogtreecommitdiff
path: root/include/stack.h
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2014-11-18 14:42:27 +1100
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2014-11-18 14:42:27 +1100
commitefa6bbc48ff549cd70352106b8d93f6e156295f5 (patch)
tree479897d503b4740467ee41f0dbb2f4fe5c44652b /include/stack.h
parent71664fd8d2d2550a56cc6a9c2b81797bfe90d613 (diff)
downloadskiboot-efa6bbc48ff549cd70352106b8d93f6e156295f5.zip
skiboot-efa6bbc48ff549cd70352106b8d93f6e156295f5.tar.gz
skiboot-efa6bbc48ff549cd70352106b8d93f6e156295f5.tar.bz2
Add functions to backtrace into a non-text buffer
Separate text translation from capture of the backtrace Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'include/stack.h')
-rw-r--r--include/stack.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/include/stack.h b/include/stack.h
index 57771b4..d4664dd 100644
--- a/include/stack.h
+++ b/include/stack.h
@@ -99,6 +99,32 @@ struct stack_frame {
uint64_t srr1;
} __attribute__((aligned(16)));
+/* Backtrace */
+struct bt_entry {
+ unsigned long sp;
+ unsigned long pc;
+};
+
+/* Boot stack top */
+extern void *boot_stack_top;
+
+/* Create a backtrace */
+extern void __backtrace(struct bt_entry *entries, unsigned int *count);
+
+/* Convert a backtrace to ASCII */
+extern void __print_backtrace(unsigned int pir, struct bt_entry *entries,
+ unsigned int count, char *out_buf,
+ unsigned int *len);
+
+/* For use by debug code, create and print backtrace, uses a static buffer */
+extern void backtrace(void);
+
+#ifdef STACK_CHECK_ENABLED
+extern void check_stacks(void);
+#else
+static inline void check_stacks(void) { }
+#endif
+
#endif /* __ASSEMBLY__ */
#endif /* __STACKFRAME_H */