]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blame - arch/powerpc/lib/copypage_64.S
UBUNTU: Ubuntu-4.15.0-96.97
[mirror_ubuntu-bionic-kernel.git] / arch / powerpc / lib / copypage_64.S
CommitLineData
14cf11af 1/*
57dda6ef 2 * Copyright (C) 2008 Mark Nelson, IBM Corp.
14cf11af
PM
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version
7 * 2 of the License, or (at your option) any later version.
8 */
d988f0e3 9#include <asm/page.h>
14cf11af
PM
10#include <asm/processor.h>
11#include <asm/ppc_asm.h>
57dda6ef 12#include <asm/asm-offsets.h>
9445aa1a 13#include <asm/export.h>
57dda6ef
MN
14
15 .section ".toc","aw"
16PPC64_CACHES:
17 .tc ppc64_caches[TC],ppc64_caches
18 .section ".text"
19
2ac7b016 20_GLOBAL_TOC(copy_page)
fde69282 21BEGIN_FTR_SECTION
d988f0e3 22 lis r5,PAGE_SIZE@h
fde69282 23FTR_SECTION_ELSE
65bd3200 24#ifdef CONFIG_PPC_BOOK3S_64
b1576fec 25 b copypage_power7
65bd3200 26#endif
fde69282 27ALT_FTR_SECTION_END_IFCLR(CPU_FTR_VMX_COPY)
d988f0e3 28 ori r5,r5,PAGE_SIZE@l
57dda6ef
MN
29BEGIN_FTR_SECTION
30 ld r10,PPC64_CACHES@toc(r2)
bd067f83
BH
31 lwz r11,DCACHEL1LOGBLOCKSIZE(r10) /* log2 of cache block size */
32 lwz r12,DCACHEL1BLOCKSIZE(r10) /* get cache block size */
57dda6ef
MN
33 li r9,0
34 srd r8,r5,r11
35
36 mtctr r8
3cd980db 37.Lsetup:
57dda6ef
MN
38 dcbt r9,r4
39 dcbz r9,r3
40 add r9,r9,r12
3cd980db 41 bdnz .Lsetup
57dda6ef 42END_FTR_SECTION_IFSET(CPU_FTR_CP_USE_DCBTZ)
14cf11af 43 addi r3,r3,-8
57dda6ef
MN
44 srdi r8,r5,7 /* page is copied in 128 byte strides */
45 addi r8,r8,-1 /* one stride copied outside loop */
46
47 mtctr r8
48
49 ld r5,0(r4)
50 ld r6,8(r4)
51 ld r7,16(r4)
52 ldu r8,24(r4)
531: std r5,8(r3)
57dda6ef 54 std r6,16(r3)
63e6c5b8 55 ld r9,8(r4)
57dda6ef
MN
56 ld r10,16(r4)
57 std r7,24(r3)
57dda6ef 58 std r8,32(r3)
63e6c5b8 59 ld r11,24(r4)
57dda6ef
MN
60 ld r12,32(r4)
61 std r9,40(r3)
57dda6ef 62 std r10,48(r3)
63e6c5b8 63 ld r5,40(r4)
57dda6ef
MN
64 ld r6,48(r4)
65 std r11,56(r3)
57dda6ef 66 std r12,64(r3)
63e6c5b8 67 ld r7,56(r4)
57dda6ef
MN
68 ld r8,64(r4)
69 std r5,72(r3)
57dda6ef 70 std r6,80(r3)
63e6c5b8 71 ld r9,72(r4)
57dda6ef
MN
72 ld r10,80(r4)
73 std r7,88(r3)
57dda6ef 74 std r8,96(r3)
63e6c5b8 75 ld r11,88(r4)
57dda6ef
MN
76 ld r12,96(r4)
77 std r9,104(r3)
57dda6ef 78 std r10,112(r3)
63e6c5b8 79 ld r5,104(r4)
57dda6ef
MN
80 ld r6,112(r4)
81 std r11,120(r3)
57dda6ef 82 stdu r12,128(r3)
63e6c5b8 83 ld r7,120(r4)
57dda6ef 84 ldu r8,128(r4)
14cf11af 85 bdnz 1b
57dda6ef
MN
86
87 std r5,8(r3)
57dda6ef 88 std r6,16(r3)
63e6c5b8 89 ld r9,8(r4)
57dda6ef
MN
90 ld r10,16(r4)
91 std r7,24(r3)
57dda6ef 92 std r8,32(r3)
63e6c5b8 93 ld r11,24(r4)
57dda6ef
MN
94 ld r12,32(r4)
95 std r9,40(r3)
57dda6ef 96 std r10,48(r3)
63e6c5b8 97 ld r5,40(r4)
57dda6ef
MN
98 ld r6,48(r4)
99 std r11,56(r3)
57dda6ef 100 std r12,64(r3)
63e6c5b8 101 ld r7,56(r4)
57dda6ef
MN
102 ld r8,64(r4)
103 std r5,72(r3)
57dda6ef 104 std r6,80(r3)
63e6c5b8 105 ld r9,72(r4)
57dda6ef
MN
106 ld r10,80(r4)
107 std r7,88(r3)
57dda6ef 108 std r8,96(r3)
63e6c5b8 109 ld r11,88(r4)
57dda6ef
MN
110 ld r12,96(r4)
111 std r9,104(r3)
112 std r10,112(r3)
113 std r11,120(r3)
114 std r12,128(r3)
14cf11af 115 blr
9445aa1a 116EXPORT_SYMBOL(copy_page)