stacktrace.h (4f9786035f9e519db41375818e1d0b5f20da2f10) stacktrace.h (a45728fd4120011c78af1d056e571b84d47dfcc1)
1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
4 */
5#ifndef _ASM_STACKTRACE_H
6#define _ASM_STACKTRACE_H
7
8#include <asm/asm.h>

--- 17 unchanged lines hidden (view full) ---

26 unsigned long fp;
27 unsigned long ra;
28};
29
30bool in_irq_stack(unsigned long stack, struct stack_info *info);
31bool in_task_stack(unsigned long stack, struct task_struct *task, struct stack_info *info);
32int get_stack_info(unsigned long stack, struct task_struct *task, struct stack_info *info);
33
1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
4 */
5#ifndef _ASM_STACKTRACE_H
6#define _ASM_STACKTRACE_H
7
8#include <asm/asm.h>

--- 17 unchanged lines hidden (view full) ---

26 unsigned long fp;
27 unsigned long ra;
28};
29
30bool in_irq_stack(unsigned long stack, struct stack_info *info);
31bool in_task_stack(unsigned long stack, struct task_struct *task, struct stack_info *info);
32int get_stack_info(unsigned long stack, struct task_struct *task, struct stack_info *info);
33
34static __always_inline bool on_thread_stack(void)
35{
36 return !(((unsigned long)(current->stack) ^ current_stack_pointer) & ~(THREAD_SIZE - 1));
37}
38
34#define STR_LONG_L __stringify(LONG_L)
35#define STR_LONG_S __stringify(LONG_S)
36#define STR_LONGSIZE __stringify(LONGSIZE)
37
38#define STORE_ONE_REG(r) \
39 STR_LONG_S " $r" __stringify(r)", %1, "STR_LONGSIZE"*"__stringify(r)"\n\t"
40
41#define CSRRD_ONE_REG(reg) \

--- 56 unchanged lines hidden ---
39#define STR_LONG_L __stringify(LONG_L)
40#define STR_LONG_S __stringify(LONG_S)
41#define STR_LONGSIZE __stringify(LONGSIZE)
42
43#define STORE_ONE_REG(r) \
44 STR_LONG_S " $r" __stringify(r)", %1, "STR_LONGSIZE"*"__stringify(r)"\n\t"
45
46#define CSRRD_ONE_REG(reg) \

--- 56 unchanged lines hidden ---