Loading...
1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
4 */
5#include <linux/linkage.h>
6#include <asm/asm.h>
7#include <asm/export.h>
8#include <asm/page.h>
9#include <asm/regdef.h>
10
11 .align 5
12SYM_FUNC_START(clear_page)
13 lu12i.w t0, 1 << (PAGE_SHIFT - 12)
14 add.d t0, t0, a0
151:
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
36SYM_FUNC_END(clear_page)
37EXPORT_SYMBOL(clear_page)
38
39.align 5
40SYM_FUNC_START(copy_page)
41 lu12i.w t8, 1 << (PAGE_SHIFT - 12)
42 add.d t8, t8, a0
431:
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
83SYM_FUNC_END(copy_page)
84EXPORT_SYMBOL(copy_page)