SYM_FUNC_START(__pi_copy_page)
.arch_extension mops
alternative_if_not ARM64_HAS_MOPS
b .Lno_mops
alternative_else_nop_endif
mov x2,
cpypwn [x0]!, [x1]!, x2!
cpymwn [x0]!, [x1]!, x2!
cpyewn [x0]!, [x1]!, x2!
ret
.Lno_mops:
ldp x2, x3, [x1]
ldp x4, x5, [x1,
ldp x6, x7, [x1,
ldp x8, x9, [x1,
ldp x10, x11, [x1,
ldp x12, x13, [x1,
ldp x14, x15, [x1,
ldp x16, x17, [x1,
add x0, x0,
add x1, x1,
1:
tst x0,
stnp x2, x3, [x0,
ldp x2, x3, [x1]
stnp x4, x5, [x0,
ldp x4, x5, [x1,
stnp x6, x7, [x0,
ldp x6, x7, [x1,
stnp x8, x9, [x0,
ldp x8, x9, [x1,
stnp x10, x11, [x0,
ldp x10, x11, [x1,
stnp x12, x13, [x0,
ldp x12, x13, [x1,
stnp x14, x15, [x0,
ldp x14, x15, [x1,
stnp x16, x17, [x0,
ldp x16, x17, [x1,
add x0, x0,
add x1, x1,
b.ne 1b
stnp x2, x3, [x0,
stnp x4, x5, [x0,
stnp x6, x7, [x0,
stnp x8, x9, [x0,
stnp x10, x11, [x0,
stnp x12, x13, [x0,
stnp x14, x15, [x0,
stnp x16, x17, [x0,
ret
SYM_FUNC_END(__pi_copy_page)
SYM_FUNC_ALIAS(copy_page, __pi_copy_page)
EXPORT_SYMBOL(copy_page)