Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * arch/arm/include/asm/unwind.h
0004  *
0005  * Copyright (C) 2008 ARM Limited
0006  */
0007 
0008 #ifndef __ASM_UNWIND_H
0009 #define __ASM_UNWIND_H
0010 
0011 #ifndef __ASSEMBLY__
0012 
0013 /* Unwind reason code according the the ARM EABI documents */
0014 enum unwind_reason_code {
0015     URC_OK = 0,         /* operation completed successfully */
0016     URC_CONTINUE_UNWIND = 8,
0017     URC_FAILURE = 9         /* unspecified failure of some kind */
0018 };
0019 
0020 struct unwind_idx {
0021     unsigned long addr_offset;
0022     unsigned long insn;
0023 };
0024 
0025 struct unwind_table {
0026     struct list_head list;
0027     struct list_head mod_list;
0028     const struct unwind_idx *start;
0029     const struct unwind_idx *origin;
0030     const struct unwind_idx *stop;
0031     unsigned long begin_addr;
0032     unsigned long end_addr;
0033 };
0034 
0035 extern struct unwind_table *unwind_table_add(unsigned long start,
0036                          unsigned long size,
0037                          unsigned long text_addr,
0038                          unsigned long text_size);
0039 extern void unwind_table_del(struct unwind_table *tab);
0040 extern void unwind_backtrace(struct pt_regs *regs, struct task_struct *tsk,
0041                  const char *loglvl);
0042 
0043 #endif  /* !__ASSEMBLY__ */
0044 
0045 #ifdef CONFIG_ARM_UNWIND
0046 #define UNWIND(code...)     code
0047 #else
0048 #define UNWIND(code...)
0049 #endif
0050 
0051 #endif  /* __ASM_UNWIND_H */