~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/arc/include/asm/unwind.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0-only */
  2 /*
  3  * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
  4  */
  5 
  6 #ifndef _ASM_ARC_UNWIND_H
  7 #define _ASM_ARC_UNWIND_H
  8 
  9 #ifdef CONFIG_ARC_DW2_UNWIND
 10 
 11 #include <linux/sched.h>
 12 
 13 struct arc700_regs {
 14         unsigned long r0;
 15         unsigned long r1;
 16         unsigned long r2;
 17         unsigned long r3;
 18         unsigned long r4;
 19         unsigned long r5;
 20         unsigned long r6;
 21         unsigned long r7;
 22         unsigned long r8;
 23         unsigned long r9;
 24         unsigned long r10;
 25         unsigned long r11;
 26         unsigned long r12;
 27         unsigned long r13;
 28         unsigned long r14;
 29         unsigned long r15;
 30         unsigned long r16;
 31         unsigned long r17;
 32         unsigned long r18;
 33         unsigned long r19;
 34         unsigned long r20;
 35         unsigned long r21;
 36         unsigned long r22;
 37         unsigned long r23;
 38         unsigned long r24;
 39         unsigned long r25;
 40         unsigned long r26;
 41         unsigned long r27;      /* fp */
 42         unsigned long r28;      /* sp */
 43         unsigned long r29;
 44         unsigned long r30;
 45         unsigned long r31;      /* blink */
 46         unsigned long r63;      /* pc */
 47 };
 48 
 49 struct unwind_frame_info {
 50         struct arc700_regs regs;
 51         struct task_struct *task;
 52         unsigned call_frame:1;
 53 };
 54 
 55 #define UNW_PC(frame)           ((frame)->regs.r63)
 56 #define UNW_SP(frame)           ((frame)->regs.r28)
 57 #define UNW_BLINK(frame)        ((frame)->regs.r31)
 58 
 59 /* Rajesh FIXME */
 60 #ifdef CONFIG_FRAME_POINTER
 61 #define UNW_FP(frame)           ((frame)->regs.r27)
 62 #define FRAME_RETADDR_OFFSET    4
 63 #define FRAME_LINK_OFFSET       0
 64 #define STACK_BOTTOM_UNW(tsk)   STACK_LIMIT((tsk)->thread.ksp)
 65 #define STACK_TOP_UNW(tsk)      ((tsk)->thread.ksp)
 66 #else
 67 #define UNW_FP(frame)           ((void)(frame), 0)
 68 #endif
 69 
 70 #define STACK_LIMIT(ptr)        (((ptr) - 1) & ~(THREAD_SIZE - 1))
 71 
 72 #define UNW_REGISTER_INFO \
 73         PTREGS_INFO(r0), \
 74         PTREGS_INFO(r1), \
 75         PTREGS_INFO(r2), \
 76         PTREGS_INFO(r3), \
 77         PTREGS_INFO(r4), \
 78         PTREGS_INFO(r5), \
 79         PTREGS_INFO(r6), \
 80         PTREGS_INFO(r7), \
 81         PTREGS_INFO(r8), \
 82         PTREGS_INFO(r9), \
 83         PTREGS_INFO(r10), \
 84         PTREGS_INFO(r11), \
 85         PTREGS_INFO(r12), \
 86         PTREGS_INFO(r13), \
 87         PTREGS_INFO(r14), \
 88         PTREGS_INFO(r15), \
 89         PTREGS_INFO(r16), \
 90         PTREGS_INFO(r17), \
 91         PTREGS_INFO(r18), \
 92         PTREGS_INFO(r19), \
 93         PTREGS_INFO(r20), \
 94         PTREGS_INFO(r21), \
 95         PTREGS_INFO(r22), \
 96         PTREGS_INFO(r23), \
 97         PTREGS_INFO(r24), \
 98         PTREGS_INFO(r25), \
 99         PTREGS_INFO(r26), \
100         PTREGS_INFO(r27), \
101         PTREGS_INFO(r28), \
102         PTREGS_INFO(r29), \
103         PTREGS_INFO(r30), \
104         PTREGS_INFO(r31), \
105         PTREGS_INFO(r63)
106 
107 #define UNW_DEFAULT_RA(raItem, dataAlign) \
108         ((raItem).where == Memory && !((raItem).value * (dataAlign) + 4))
109 
110 extern int arc_unwind(struct unwind_frame_info *frame);
111 extern void arc_unwind_init(void);
112 extern void *unwind_add_table(struct module *module, const void *table_start,
113                               unsigned long table_size);
114 extern void unwind_remove_table(void *handle, int init_only);
115 
116 static inline int
117 arch_unwind_init_running(struct unwind_frame_info *info,
118                          int (*callback) (struct unwind_frame_info *info,
119                                           void *arg),
120                          void *arg)
121 {
122         return 0;
123 }
124 
125 static inline int arch_unw_user_mode(const struct unwind_frame_info *info)
126 {
127         return 0;
128 }
129 
130 static inline void arch_unw_init_blocked(struct unwind_frame_info *info)
131 {
132         return;
133 }
134 
135 static inline void arch_unw_init_frame_info(struct unwind_frame_info *info,
136                                             struct pt_regs *regs)
137 {
138         return;
139 }
140 
141 #else
142 
143 #define UNW_PC(frame) ((void)(frame), 0)
144 #define UNW_SP(frame) ((void)(frame), 0)
145 #define UNW_FP(frame) ((void)(frame), 0)
146 
147 static inline void arc_unwind_init(void)
148 {
149 }
150 
151 #define unwind_add_table(a, b, c)
152 #define unwind_remove_table(a, b)
153 
154 #endif /* CONFIG_ARC_DW2_UNWIND */
155 
156 #endif /* _ASM_ARC_UNWIND_H */
157 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php