1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Copyright (C) 2012 ARM Ltd. 4 */ 5 6 #include <linux/linkage.h> 7 #include <linux/const.h> 8 #include <asm/assembler.h> 9 #include <asm/page.h> 10 11 /* 12 * Clear page @dest 13 * 14 * Parameters: 15 * x0 - dest 16 */ 17 SYM_FUNC_START(__pi_clear_page) 18 mrs x1, dczid_el0 19 tbnz x1, #4, 2f /* Branch if DC ZVA is prohibited */ 20 and w1, w1, #0xf 21 mov x2, #4 22 lsl x1, x2, x1 23 24 1: dc zva, x0 25 add x0, x0, x1 26 tst x0, #(PAGE_SIZE - 1) 27 b.ne 1b 28 ret 29 30 2: stnp xzr, xzr, [x0] 31 stnp xzr, xzr, [x0, #16] 32 stnp xzr, xzr, [x0, #32] 33 stnp xzr, xzr, [x0, #48] 34 add x0, x0, #64 35 tst x0, #(PAGE_SIZE - 1) 36 b.ne 2b 37 ret 38 SYM_FUNC_END(__pi_clear_page) 39 SYM_FUNC_ALIAS(clear_page, __pi_clear_page) 40 EXPORT_SYMBOL(clear_page)
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.