~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to arch/arm/include/asm/unwind.h

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * arch/arm/include/asm/unwind.h
 
3
 *
 
4
 * Copyright (C) 2008 ARM Limited
 
5
 *
 
6
 * This program is free software; you can redistribute it and/or modify
 
7
 * it under the terms of the GNU General Public License version 2 as
 
8
 * published by the Free Software Foundation.
 
9
 *
 
10
 * This program is distributed in the hope that it will be useful,
 
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
13
 * GNU General Public License for more details.
 
14
 *
 
15
 * You should have received a copy of the GNU General Public License
 
16
 * along with this program; if not, write to the Free Software
 
17
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
18
 */
 
19
 
 
20
#ifndef __ASM_UNWIND_H
 
21
#define __ASM_UNWIND_H
 
22
 
 
23
#ifndef __ASSEMBLY__
 
24
 
 
25
/* Unwind reason code according the the ARM EABI documents */
 
26
enum unwind_reason_code {
 
27
        URC_OK = 0,                     /* operation completed successfully */
 
28
        URC_CONTINUE_UNWIND = 8,
 
29
        URC_FAILURE = 9                 /* unspecified failure of some kind */
 
30
};
 
31
 
 
32
struct unwind_idx {
 
33
        unsigned long addr_offset;
 
34
        unsigned long insn;
 
35
};
 
36
 
 
37
struct unwind_table {
 
38
        struct list_head list;
 
39
        const struct unwind_idx *start;
 
40
        const struct unwind_idx *origin;
 
41
        const struct unwind_idx *stop;
 
42
        unsigned long begin_addr;
 
43
        unsigned long end_addr;
 
44
};
 
45
 
 
46
extern struct unwind_table *unwind_table_add(unsigned long start,
 
47
                                             unsigned long size,
 
48
                                             unsigned long text_addr,
 
49
                                             unsigned long text_size);
 
50
extern void unwind_table_del(struct unwind_table *tab);
 
51
extern void unwind_backtrace(struct pt_regs *regs, struct task_struct *tsk);
 
52
 
 
53
#endif  /* !__ASSEMBLY__ */
 
54
 
 
55
#ifdef CONFIG_ARM_UNWIND
 
56
#define UNWIND(code...)         code
 
57
#else
 
58
#define UNWIND(code...)
 
59
#endif
 
60
 
 
61
#endif  /* __ASM_UNWIND_H */