Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/loongarch/mm/page.S
26436 views
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)
85
86