diff options
-rw-r--r-- | arch/arm64/lib/clear_page.S | 39 | ||||
-rw-r--r-- | arch/arm64/lib/clear_page.c | 12 |
2 files changed, 12 insertions, 39 deletions
diff --git a/arch/arm64/lib/clear_page.S b/arch/arm64/lib/clear_page.S deleted file mode 100644 index ef08e905e35b..000000000000 --- a/arch/arm64/lib/clear_page.S +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (C) 2012 ARM Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include <linux/linkage.h> -#include <linux/const.h> -#include <asm/assembler.h> -#include <asm/page.h> - -/* - * Clear page @dest - * - * Parameters: - * x0 - dest - */ -ENTRY(clear_page) - mrs x1, dczid_el0 - and w1, w1, #0xf - mov x2, #4 - lsl x1, x2, x1 - -1: dc zva, x0 - add x0, x0, x1 - tst x0, #(PAGE_SIZE - 1) - b.ne 1b - ret -ENDPROC(clear_page) diff --git a/arch/arm64/lib/clear_page.c b/arch/arm64/lib/clear_page.c new file mode 100644 index 000000000000..45ecbda81c48 --- /dev/null +++ b/arch/arm64/lib/clear_page.c @@ -0,0 +1,12 @@ +#include <asm/page.h> +#include <linux/types.h> + + +void clear_page(void *to) { + u64 *buffer = (u64 *) to; + u64 zero = 0ULL; + u32 i; + + for (i = 0; i < PAGE_SIZE / sizeof(u64); i += 2) + asm volatile("stnp %0, %0, %1" : : "r" (zero), "Q" (buffer[i]) : ); +} |