mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-23 20:24:12 +08:00
103423ad7e
Back in 2016, it was argued that implementations lacking a HW prefetcher could be helped by sprinkling a number of PRFM instructions in strategic locations. In 2023, the one platform that presumably needed this hack is no longer in active use (let alone maintained), and an quick experiment shows dropping this hack only leads to a 0.4% drop on a full kernel compilation (tested on a MT30-GS0 48 CPU system). Given that this is pretty much in the noise department and that it may give odd ideas to other implementers, drop the hack for good. Suggested-by: Will Deacon <will@kernel.org> Suggested-by: Mark Rutland <mark.rutland@arm.com> Signed-off-by: Marc Zyngier <maz@kernel.org> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Link: https://lore.kernel.org/r/20231122133754.1240687-1-maz@kernel.org Signed-off-by: Will Deacon <will@kernel.org>
70 lines
1.4 KiB
ArmAsm
70 lines
1.4 KiB
ArmAsm
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (C) 2012 ARM Ltd.
|
|
*/
|
|
|
|
#include <linux/linkage.h>
|
|
#include <linux/const.h>
|
|
#include <asm/assembler.h>
|
|
#include <asm/page.h>
|
|
#include <asm/cpufeature.h>
|
|
#include <asm/alternative.h>
|
|
|
|
/*
|
|
* Copy a page from src to dest (both are page aligned)
|
|
*
|
|
* Parameters:
|
|
* x0 - dest
|
|
* x1 - src
|
|
*/
|
|
SYM_FUNC_START(__pi_copy_page)
|
|
ldp x2, x3, [x1]
|
|
ldp x4, x5, [x1, #16]
|
|
ldp x6, x7, [x1, #32]
|
|
ldp x8, x9, [x1, #48]
|
|
ldp x10, x11, [x1, #64]
|
|
ldp x12, x13, [x1, #80]
|
|
ldp x14, x15, [x1, #96]
|
|
ldp x16, x17, [x1, #112]
|
|
|
|
add x0, x0, #256
|
|
add x1, x1, #128
|
|
1:
|
|
tst x0, #(PAGE_SIZE - 1)
|
|
|
|
stnp x2, x3, [x0, #-256]
|
|
ldp x2, x3, [x1]
|
|
stnp x4, x5, [x0, #16 - 256]
|
|
ldp x4, x5, [x1, #16]
|
|
stnp x6, x7, [x0, #32 - 256]
|
|
ldp x6, x7, [x1, #32]
|
|
stnp x8, x9, [x0, #48 - 256]
|
|
ldp x8, x9, [x1, #48]
|
|
stnp x10, x11, [x0, #64 - 256]
|
|
ldp x10, x11, [x1, #64]
|
|
stnp x12, x13, [x0, #80 - 256]
|
|
ldp x12, x13, [x1, #80]
|
|
stnp x14, x15, [x0, #96 - 256]
|
|
ldp x14, x15, [x1, #96]
|
|
stnp x16, x17, [x0, #112 - 256]
|
|
ldp x16, x17, [x1, #112]
|
|
|
|
add x0, x0, #128
|
|
add x1, x1, #128
|
|
|
|
b.ne 1b
|
|
|
|
stnp x2, x3, [x0, #-256]
|
|
stnp x4, x5, [x0, #16 - 256]
|
|
stnp x6, x7, [x0, #32 - 256]
|
|
stnp x8, x9, [x0, #48 - 256]
|
|
stnp x10, x11, [x0, #64 - 256]
|
|
stnp x12, x13, [x0, #80 - 256]
|
|
stnp x14, x15, [x0, #96 - 256]
|
|
stnp x16, x17, [x0, #112 - 256]
|
|
|
|
ret
|
|
SYM_FUNC_END(__pi_copy_page)
|
|
SYM_FUNC_ALIAS(copy_page, __pi_copy_page)
|
|
EXPORT_SYMBOL(copy_page)
|