From 379a29257ff59d2843d65d1ccd11d612907a4a12 Mon Sep 17 00:00:00 2001 From: Anton Blanchard Date: Wed, 30 May 2012 20:19:19 +0000 Subject: [PATCH] --- yaml --- r: 313638 b: refs/heads/master c: bce4b4bd91efab9dca693ac37c8ddf88103280d8 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/powerpc/lib/copyuser_power7.S | 31 ++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 3d4feedea5d6..9b1fdf414323 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8127e723dab6f6e7949da43f87e5f946c4b99cf2 +refs/heads/master: bce4b4bd91efab9dca693ac37c8ddf88103280d8 diff --git a/trunk/arch/powerpc/lib/copyuser_power7.S b/trunk/arch/powerpc/lib/copyuser_power7.S index f560f83a3ab0..48e3f8c5768c 100644 --- a/trunk/arch/powerpc/lib/copyuser_power7.S +++ b/trunk/arch/powerpc/lib/copyuser_power7.S @@ -319,6 +319,37 @@ err1; stb r0,0(r3) lis r8,0x8000 /* GO=1 */ clrldi r8,r8,32 +.machine push +.machine "power4" + dcbt r0,r6,0b01000 + dcbt r0,r7,0b01010 + dcbtst r0,r9,0b01000 + dcbtst r0,r10,0b01010 + eieio + dcbt r0,r8,0b01010 /* GO */ +.machine pop + + /* + * We prefetch both the source and destination using enhanced touch + * instructions. We use a stream ID of 0 for the load side and + * 1 for the store side. + */ + clrrdi r6,r4,7 + clrrdi r9,r3,7 + ori r9,r9,1 /* stream=1 */ + + srdi r7,r5,7 /* length in cachelines, capped at 0x3FF */ + cmpldi cr1,r7,0x3FF + ble cr1,1f + li r7,0x3FF +1: lis r0,0x0E00 /* depth=7 */ + sldi r7,r7,7 + or r7,r7,r0 + ori r10,r7,1 /* stream=1 */ + + lis r8,0x8000 /* GO=1 */ + clrldi r8,r8,32 + .machine push .machine "power4" dcbt r0,r6,0b01000