1/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * Miscellaneous assembly functions.
4 *
5 * Copyright (C) 2001 - 2007 Tensilica Inc.
6 * Copyright (C) 2014 - 2016 Cadence Design Systems Inc.
7 *
8 * Chris Zankel	<chris@zankel.net>
9 */
10
11
12#include <linux/linkage.h>
13#include <asm/asmmacro.h>
14#include <asm/cacheasm.h>
15
16/*
17 * void __invalidate_icache_page(ulong start)
18 */
19
20ENTRY(__invalidate_icache_page)
21
22	abi_entry
23
24	___invalidate_icache_page a2 a3
25	isync
26
27	abi_ret
28
29ENDPROC(__invalidate_icache_page)
30
31/*
32 * void __invalidate_dcache_page(ulong start)
33 */
34
35ENTRY(__invalidate_dcache_page)
36
37	abi_entry
38
39	___invalidate_dcache_page a2 a3
40	dsync
41
42	abi_ret
43
44ENDPROC(__invalidate_dcache_page)
45
46/*
47 * void __flush_invalidate_dcache_page(ulong start)
48 */
49
50ENTRY(__flush_invalidate_dcache_page)
51
52	abi_entry
53
54	___flush_invalidate_dcache_page a2 a3
55
56	dsync
57	abi_ret
58
59ENDPROC(__flush_invalidate_dcache_page)
60
61/*
62 * void __flush_dcache_page(ulong start)
63 */
64
65ENTRY(__flush_dcache_page)
66
67	abi_entry
68
69	___flush_dcache_page a2 a3
70
71	dsync
72	abi_ret
73
74ENDPROC(__flush_dcache_page)
75
76/*
77 * void __invalidate_icache_range(ulong start, ulong size)
78 */
79
80ENTRY(__invalidate_icache_range)
81
82	abi_entry
83
84	___invalidate_icache_range a2 a3 a4
85	isync
86
87	abi_ret
88
89ENDPROC(__invalidate_icache_range)
90
91/*
92 * void __flush_invalidate_dcache_range(ulong start, ulong size)
93 */
94
95ENTRY(__flush_invalidate_dcache_range)
96
97	abi_entry
98
99	___flush_invalidate_dcache_range a2 a3 a4
100	dsync
101
102	abi_ret
103
104ENDPROC(__flush_invalidate_dcache_range)
105
106/*
107 * void _flush_dcache_range(ulong start, ulong size)
108 */
109
110ENTRY(__flush_dcache_range)
111
112	abi_entry
113
114	___flush_dcache_range a2 a3 a4
115	dsync
116
117	abi_ret
118
119ENDPROC(__flush_dcache_range)
120
121/*
122 * void _invalidate_dcache_range(ulong start, ulong size)
123 */
124
125ENTRY(__invalidate_dcache_range)
126
127	abi_entry
128
129	___invalidate_dcache_range a2 a3 a4
130
131	abi_ret
132
133ENDPROC(__invalidate_dcache_range)
134
135/*
136 * void _invalidate_icache_all(void)
137 */
138
139ENTRY(__invalidate_icache_all)
140
141	abi_entry
142
143	___invalidate_icache_all a2 a3
144	isync
145
146	abi_ret
147
148ENDPROC(__invalidate_icache_all)
149
150/*
151 * void _flush_invalidate_dcache_all(void)
152 */
153
154ENTRY(__flush_invalidate_dcache_all)
155
156	abi_entry
157
158	___flush_invalidate_dcache_all a2 a3
159	dsync
160
161	abi_ret
162
163ENDPROC(__flush_invalidate_dcache_all)
164
165/*
166 * void _invalidate_dcache_all(void)
167 */
168
169ENTRY(__invalidate_dcache_all)
170
171	abi_entry
172
173	___invalidate_dcache_all a2 a3
174	dsync
175
176	abi_ret
177
178ENDPROC(__invalidate_dcache_all)
179