1 /* SPDX-License-Identifier: GPL-2.0-or-later */
4 * Copyright (C) IBM Corporation, 2012
6 * Author: Anton Blanchard <anton@au.ibm.com>
9 #include <asm/ppc_asm.h>
11 _GLOBAL(copypage_power7)
13 * We prefetch both the source and destination using enhanced touch
14 * instructions. We use a stream ID of 0 for the load side and
15 * 1 for the store side. Since source and destination are page
16 * aligned we don't need to clear the bottom 7 bits of either
19 ori r9,r3,1 /* stream=1 => to */
21 #ifdef CONFIG_PPC_64K_PAGES
22 lis r7,0x0E01 /* depth=7
23 * units/cachelines=512 */
25 lis r7,0x0E00 /* depth=7 */
26 ori r7,r7,0x1000 /* units/cachelines=32 */
28 ori r10,r7,1 /* stream=1 */
30 DCBT_SETUP_STREAMS(r4, r7, r9, r10, r8)
34 std r3,-STACKFRAMESIZE+STK_REG(R31)(r1)
35 std r4,-STACKFRAMESIZE+STK_REG(R30)(r1)
37 stdu r1,-STACKFRAMESIZE(r1)
38 bl CFUNC(enter_vmx_ops)
40 ld r0,STACKFRAMESIZE+16(r1)
41 ld r3,STK_REG(R31)(r1)
42 ld r4,STK_REG(R30)(r1)
50 addi r1,r1,STACKFRAMESIZE
81 b CFUNC(exit_vmx_ops) /* tail call optimise */
87 stdu r1,-STACKFRAMESIZE(r1)
91 std r14,STK_REG(R14)(r1)
92 std r15,STK_REG(R15)(r1)
93 std r16,STK_REG(R16)(r1)
94 std r17,STK_REG(R17)(r1)
95 std r18,STK_REG(R18)(r1)
96 std r19,STK_REG(R19)(r1)
97 std r20,STK_REG(R20)(r1)
135 ld r14,STK_REG(R14)(r1)
136 ld r15,STK_REG(R15)(r1)
137 ld r16,STK_REG(R16)(r1)
138 ld r17,STK_REG(R17)(r1)
139 ld r18,STK_REG(R18)(r1)
140 ld r19,STK_REG(R19)(r1)
141 ld r20,STK_REG(R20)(r1)
142 addi r1,r1,STACKFRAMESIZE