1559671e0SHuacai Chen/* SPDX-License-Identifier: GPL-2.0 */ 2559671e0SHuacai Chen/* 3559671e0SHuacai Chen * Copyright (C) 2020-2022 Loongson Technology Corporation Limited 4559671e0SHuacai Chen */ 5559671e0SHuacai Chen 6559671e0SHuacai Chen#include <asm/asm.h> 7559671e0SHuacai Chen#include <asm/asmmacro.h> 8559671e0SHuacai Chen#include <asm/export.h> 9559671e0SHuacai Chen#include <asm/regdef.h> 10559671e0SHuacai Chen 11559671e0SHuacai Chen.macro fixup_ex from, to, offset, fix 12559671e0SHuacai Chen.if \fix 13559671e0SHuacai Chen .section .fixup, "ax" 14559671e0SHuacai Chen\to: addi.d a0, a1, \offset 15559671e0SHuacai Chen jr ra 16559671e0SHuacai Chen .previous 17559671e0SHuacai Chen.endif 18559671e0SHuacai Chen .section __ex_table, "a" 19559671e0SHuacai Chen PTR \from\()b, \to\()b 20559671e0SHuacai Chen .previous 21559671e0SHuacai Chen.endm 22559671e0SHuacai Chen 23559671e0SHuacai Chen/* 24559671e0SHuacai Chen * unsigned long __clear_user(void *addr, size_t size) 25559671e0SHuacai Chen * 26559671e0SHuacai Chen * a0: addr 27559671e0SHuacai Chen * a1: size 28559671e0SHuacai Chen */ 29559671e0SHuacai ChenSYM_FUNC_START(__clear_user) 30559671e0SHuacai Chen beqz a1, 2f 31559671e0SHuacai Chen 32559671e0SHuacai Chen1: st.b zero, a0, 0 33559671e0SHuacai Chen addi.d a0, a0, 1 34559671e0SHuacai Chen addi.d a1, a1, -1 35*1fdb9a92SWANG Xuerui bgtz a1, 1b 36559671e0SHuacai Chen 37559671e0SHuacai Chen2: move a0, a1 38559671e0SHuacai Chen jr ra 39559671e0SHuacai Chen 40559671e0SHuacai Chen fixup_ex 1, 3, 0, 1 41559671e0SHuacai ChenSYM_FUNC_END(__clear_user) 42559671e0SHuacai Chen 43559671e0SHuacai ChenEXPORT_SYMBOL(__clear_user) 44