14b6da826SThomas Huth /*
24b6da826SThomas Huth * Header for stack related functions
34b6da826SThomas Huth *
44b6da826SThomas Huth * This code is free software; you can redistribute it and/or modify it
54b6da826SThomas Huth * under the terms of the GNU Library General Public License version 2.
64b6da826SThomas Huth */
752266791SPeter Feiner #ifndef _STACK_H_
852266791SPeter Feiner #define _STACK_H_
952266791SPeter Feiner
1052266791SPeter Feiner #include <libcflat.h>
1152266791SPeter Feiner #include <asm/stack.h>
1252266791SPeter Feiner
13cec0fd86SAndrew Jones #ifdef HAVE_ARCH_BACKTRACE_FRAME
14a8a78d75SAndrew Jones extern int arch_backtrace_frame(const void *frame, const void **return_addrs,
15a8a78d75SAndrew Jones int max_depth, bool current_frame);
16a8a78d75SAndrew Jones
backtrace_frame(const void * frame,const void ** return_addrs,int max_depth)17a8a78d75SAndrew Jones static inline int backtrace_frame(const void *frame, const void **return_addrs,
18a8a78d75SAndrew Jones int max_depth)
19a8a78d75SAndrew Jones {
20a8a78d75SAndrew Jones return arch_backtrace_frame(frame, return_addrs, max_depth, false);
21a8a78d75SAndrew Jones }
22a8a78d75SAndrew Jones
backtrace(const void ** return_addrs,int max_depth)23a8a78d75SAndrew Jones static inline int backtrace(const void **return_addrs, int max_depth)
24a8a78d75SAndrew Jones {
25a8a78d75SAndrew Jones return arch_backtrace_frame(NULL, return_addrs, max_depth, true);
26a8a78d75SAndrew Jones }
27cec0fd86SAndrew Jones #else
28a8a78d75SAndrew Jones extern int backtrace(const void **return_addrs, int max_depth);
29a8a78d75SAndrew Jones
backtrace_frame(const void * frame,const void ** return_addrs,int max_depth)30a8a78d75SAndrew Jones static inline int backtrace_frame(const void *frame, const void **return_addrs,
31a8a78d75SAndrew Jones int max_depth)
3252266791SPeter Feiner {
3352266791SPeter Feiner return 0;
3452266791SPeter Feiner }
3552266791SPeter Feiner #endif
3652266791SPeter Feiner
37*ab0bbb9fSAndrew Jones bool base_address(const void *rebased_addr, unsigned long *addr);
38a1f2b0e1SAndrew Jones
3952266791SPeter Feiner #endif
40