1 /* SPDX-License-Identifier: GPL-2.0 */
3 * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
6 * Copyright (C) 1994 - 2000, 2001, 2003 Ralf Baechle
7 * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
8 * Copyright (C) 2002, 2007 Maciej W. Rozycki
9 * Copyright (C) 2001, 2012 MIPS Technologies, Inc. All rights reserved.
12 #include <asm/asmmacro.h>
13 #include <asm/loongarch.h>
14 #include <asm/regdef.h>
15 #include <asm/fpregdef.h>
16 #include <asm/stackframe.h>
17 #include <asm/thread_info.h>
20 SYM_FUNC_START(__arch_cpu_idle)
21 /* start of rollback region */
22 LONG_L t0, tp, TI_FLAGS
24 andi t0, t0, _TIF_NEED_RESCHED
30 /* end of rollback region */
32 SYM_FUNC_END(__arch_cpu_idle)
34 SYM_CODE_START(handle_vint)
37 la_abs t1, __arch_cpu_idle
39 /* 32 byte rollback region */
49 SYM_CODE_END(handle_vint)
51 SYM_CODE_START(except_vec_cex)
53 SYM_CODE_END(except_vec_cex)
55 .macro build_prep_badv
56 csrrd t0, LOONGARCH_CSR_BADV
57 PTR_S t0, sp, PT_BVADDR
60 .macro build_prep_fcsr
64 .macro build_prep_none
67 .macro BUILD_HANDLER exception handler prep
69 SYM_CODE_START(handle_\exception)
75 la_abs t0, do_\handler
79 SYM_CODE_END(handle_\exception)
80 SYM_DATA(unwind_hint_\exception, .word 668b - 666b)
83 BUILD_HANDLER ade ade badv
84 BUILD_HANDLER ale ale badv
85 BUILD_HANDLER bce bce none
86 BUILD_HANDLER bp bp none
87 BUILD_HANDLER fpe fpe fcsr
88 BUILD_HANDLER fpu fpu none
89 BUILD_HANDLER lsx lsx none
90 BUILD_HANDLER lasx lasx none
91 BUILD_HANDLER lbt lbt none
92 BUILD_HANDLER ri ri none
93 BUILD_HANDLER watch watch none
94 BUILD_HANDLER reserved reserved none /* others */
96 SYM_CODE_START(handle_sys)
97 la_abs t0, handle_syscall
99 SYM_CODE_END(handle_sys)