18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
28c2ecf20Sopenharmony_ci// Copyright (C) 2005-2017 Andes Technology Corporation
38c2ecf20Sopenharmony_ci
48c2ecf20Sopenharmony_ci#include <linux/linkage.h>
58c2ecf20Sopenharmony_ci#include <asm/export.h>
68c2ecf20Sopenharmony_ci#include <asm/page.h>
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci	.text
98c2ecf20Sopenharmony_ciENTRY(copy_page)
108c2ecf20Sopenharmony_ci	pushm	$r2, $r10
118c2ecf20Sopenharmony_ci	movi	$r2, PAGE_SIZE >> 5
128c2ecf20Sopenharmony_ci.Lcopy_loop:
138c2ecf20Sopenharmony_ci	lmw.bim	$r3, [$r1], $r10
148c2ecf20Sopenharmony_ci	smw.bim	$r3, [$r0], $r10
158c2ecf20Sopenharmony_ci	subi45	$r2, #1
168c2ecf20Sopenharmony_ci	bnez38	$r2, .Lcopy_loop
178c2ecf20Sopenharmony_ci	popm	$r2, $r10
188c2ecf20Sopenharmony_ci	ret
198c2ecf20Sopenharmony_ciENDPROC(copy_page)
208c2ecf20Sopenharmony_ciEXPORT_SYMBOL(copy_page)
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_ciENTRY(clear_page)
238c2ecf20Sopenharmony_ci	pushm	$r1, $r9
248c2ecf20Sopenharmony_ci	movi	$r1, PAGE_SIZE >> 5
258c2ecf20Sopenharmony_ci	movi55	$r2, #0
268c2ecf20Sopenharmony_ci	movi55	$r3, #0
278c2ecf20Sopenharmony_ci	movi55	$r4, #0
288c2ecf20Sopenharmony_ci	movi55	$r5, #0
298c2ecf20Sopenharmony_ci	movi55	$r6, #0
308c2ecf20Sopenharmony_ci	movi55	$r7, #0
318c2ecf20Sopenharmony_ci	movi55	$r8, #0
328c2ecf20Sopenharmony_ci	movi55	$r9, #0
338c2ecf20Sopenharmony_ci.Lclear_loop:
348c2ecf20Sopenharmony_ci	smw.bim	$r2, [$r0], $r9
358c2ecf20Sopenharmony_ci	subi45	$r1, #1
368c2ecf20Sopenharmony_ci	bnez38	$r1, .Lclear_loop
378c2ecf20Sopenharmony_ci	popm	$r1, $r9
388c2ecf20Sopenharmony_ci        ret
398c2ecf20Sopenharmony_ciENDPROC(clear_page)
408c2ecf20Sopenharmony_ciEXPORT_SYMBOL(clear_page)
41