1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Copyright (C) 2020-2022 Loongson Technology Corporation Limited 4 */ 5 #include <linux/export.h> 6 #include <linux/linkage.h> 7 #include <asm/asm.h> 8 #include <asm/page.h> 9 #include <asm/regdef.h> 10 11 .align 5 12 SYM_FUNC_START(clear_page) 13 lu12i.w t0, 1 << (PAGE_SHIFT - 12) 14 add.d t0, t0, a0 15 1: 16 st.d zero, a0, 0 17 st.d zero, a0, 8 18 st.d zero, a0, 16 19 st.d zero, a0, 24 20 st.d zero, a0, 32 21 st.d zero, a0, 40 22 st.d zero, a0, 48 23 st.d zero, a0, 56 24 addi.d a0, a0, 128 25 st.d zero, a0, -64 26 st.d zero, a0, -56 27 st.d zero, a0, -48 28 st.d zero, a0, -40 29 st.d zero, a0, -32 30 st.d zero, a0, -24 31 st.d zero, a0, -16 32 st.d zero, a0, -8 33 bne t0, a0, 1b 34 35 jr ra 36 SYM_FUNC_END(clear_page) 37 EXPORT_SYMBOL(clear_page) 38 39 .align 5 40 SYM_FUNC_START(copy_page) 41 lu12i.w t8, 1 << (PAGE_SHIFT - 12) 42 add.d t8, t8, a0 43 1: 44 ld.d t0, a1, 0 45 ld.d t1, a1, 8 46 ld.d t2, a1, 16 47 ld.d t3, a1, 24 48 ld.d t4, a1, 32 49 ld.d t5, a1, 40 50 ld.d t6, a1, 48 51 ld.d t7, a1, 56 52 53 st.d t0, a0, 0 54 st.d t1, a0, 8 55 ld.d t0, a1, 64 56 ld.d t1, a1, 72 57 st.d t2, a0, 16 58 st.d t3, a0, 24 59 ld.d t2, a1, 80 60 ld.d t3, a1, 88 61 st.d t4, a0, 32 62 st.d t5, a0, 40 63 ld.d t4, a1, 96 64 ld.d t5, a1, 104 65 st.d t6, a0, 48 66 st.d t7, a0, 56 67 ld.d t6, a1, 112 68 ld.d t7, a1, 120 69 addi.d a0, a0, 128 70 addi.d a1, a1, 128 71 72 st.d t0, a0, -64 73 st.d t1, a0, -56 74 st.d t2, a0, -48 75 st.d t3, a0, -40 76 st.d t4, a0, -32 77 st.d t5, a0, -24 78 st.d t6, a0, -16 79 st.d t7, a0, -8 80 81 bne t8, a0, 1b 82 jr ra 83 SYM_FUNC_END(copy_page) 84 EXPORT_SYMBOL(copy_page)
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.