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

TOMOYO Linux Cross Reference
Linux/arch/loongarch/kernel/genex.S

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ 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.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0 */
  2 /*
  3  * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
  4  *
  5  * Derived from MIPS:
  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.
 10  */
 11 #include <asm/asm.h>
 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>
 18 
 19         .align  5
 20 SYM_FUNC_START(__arch_cpu_idle)
 21         /* start of rollback region */
 22         LONG_L  t0, tp, TI_FLAGS
 23         nop
 24         andi    t0, t0, _TIF_NEED_RESCHED
 25         bnez    t0, 1f
 26         nop
 27         nop
 28         nop
 29         idle    0
 30         /* end of rollback region */
 31 1:      jr      ra
 32 SYM_FUNC_END(__arch_cpu_idle)
 33 
 34 SYM_CODE_START(handle_vint)
 35         UNWIND_HINT_UNDEFINED
 36         BACKUP_T0T1
 37         SAVE_ALL
 38         la_abs  t1, __arch_cpu_idle
 39         LONG_L  t0, sp, PT_ERA
 40         /* 32 byte rollback region */
 41         ori     t0, t0, 0x1f
 42         xori    t0, t0, 0x1f
 43         bne     t0, t1, 1f
 44         LONG_S  t0, sp, PT_ERA
 45 1:      move    a0, sp
 46         move    a1, sp
 47         la_abs  t0, do_vint
 48         jirl    ra, t0, 0
 49         RESTORE_ALL_AND_RET
 50 SYM_CODE_END(handle_vint)
 51 
 52 SYM_CODE_START(except_vec_cex)
 53         UNWIND_HINT_UNDEFINED
 54         b       cache_parity_error
 55 SYM_CODE_END(except_vec_cex)
 56 
 57         .macro  build_prep_badv
 58         csrrd   t0, LOONGARCH_CSR_BADV
 59         PTR_S   t0, sp, PT_BVADDR
 60         .endm
 61 
 62         .macro  build_prep_fcsr
 63         movfcsr2gr      a1, fcsr0
 64         .endm
 65 
 66         .macro  build_prep_none
 67         .endm
 68 
 69         .macro  BUILD_HANDLER exception handler prep
 70         .align  5
 71         SYM_CODE_START(handle_\exception)
 72         UNWIND_HINT_UNDEFINED
 73         666:
 74         BACKUP_T0T1
 75         SAVE_ALL
 76         build_prep_\prep
 77         move    a0, sp
 78         la_abs  t0, do_\handler
 79         jirl    ra, t0, 0
 80         668:
 81         RESTORE_ALL_AND_RET
 82         SYM_CODE_END(handle_\exception)
 83         .pushsection    ".data", "aw", %progbits
 84         SYM_DATA(unwind_hint_\exception, .word 668b - 666b)
 85         .popsection
 86         .endm
 87 
 88         BUILD_HANDLER ade ade badv
 89         BUILD_HANDLER ale ale badv
 90         BUILD_HANDLER bce bce none
 91         BUILD_HANDLER bp bp none
 92         BUILD_HANDLER fpe fpe fcsr
 93         BUILD_HANDLER fpu fpu none
 94         BUILD_HANDLER lsx lsx none
 95         BUILD_HANDLER lasx lasx none
 96         BUILD_HANDLER lbt lbt none
 97         BUILD_HANDLER ri ri none
 98         BUILD_HANDLER watch watch none
 99         BUILD_HANDLER reserved reserved none    /* others */
100 
101 SYM_CODE_START(handle_sys)
102         UNWIND_HINT_UNDEFINED
103         la_abs  t0, handle_syscall
104         jr      t0
105 SYM_CODE_END(handle_sys)

~ [ 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