149232773SQing Zhang // SPDX-License-Identifier: GPL-2.0 249232773SQing Zhang /* 349232773SQing Zhang * Copyright (C) 2022 Loongson Technology Corporation Limited 449232773SQing Zhang */ 549232773SQing Zhang #include <asm/unwind.h> 649232773SQing Zhang unwind_get_return_address(struct unwind_state * state)749232773SQing Zhangunsigned long unwind_get_return_address(struct unwind_state *state) 849232773SQing Zhang { 9*c5ac25e0SJinyang He return __unwind_get_return_address(state); 1049232773SQing Zhang } 1149232773SQing Zhang EXPORT_SYMBOL_GPL(unwind_get_return_address); 1249232773SQing Zhang unwind_start(struct unwind_state * state,struct task_struct * task,struct pt_regs * regs)1349232773SQing Zhangvoid unwind_start(struct unwind_state *state, struct task_struct *task, 1449232773SQing Zhang struct pt_regs *regs) 1549232773SQing Zhang { 16*c5ac25e0SJinyang He __unwind_start(state, task, regs); 1749232773SQing Zhang if (!unwind_done(state) && !__kernel_text_address(state->pc)) 1849232773SQing Zhang unwind_next_frame(state); 1949232773SQing Zhang } 2049232773SQing Zhang EXPORT_SYMBOL_GPL(unwind_start); 2149232773SQing Zhang unwind_next_frame(struct unwind_state * state)2249232773SQing Zhangbool unwind_next_frame(struct unwind_state *state) 2349232773SQing Zhang { 24*c5ac25e0SJinyang He return default_next_frame(state); 2549232773SQing Zhang } 2649232773SQing Zhang EXPORT_SYMBOL_GPL(unwind_next_frame); 27