diff options
author | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
---|---|---|
committer | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
commit | ada47b5fe13d89735805b566185f4885f5a3f750 (patch) | |
tree | 644b88f8a71896307d71438e9b3af49126ffb22b /arch/powerpc/lib | |
parent | 43e98717ad40a4ae64545b5ba047c7b86aa44f4f (diff) | |
parent | 3280f21d43ee541f97f8cda5792150d2dbec20d5 (diff) |
Merge branch 'wip-2.6.34' into old-private-masterarchived-private-master
Diffstat (limited to 'arch/powerpc/lib')
-rw-r--r-- | arch/powerpc/lib/copy_32.S | 24 | ||||
-rw-r--r-- | arch/powerpc/lib/copypage_64.S | 32 | ||||
-rw-r--r-- | arch/powerpc/lib/copyuser_64.S | 80 | ||||
-rw-r--r-- | arch/powerpc/lib/devres.c | 1 | ||||
-rw-r--r-- | arch/powerpc/lib/feature-fixups.c | 3 | ||||
-rw-r--r-- | arch/powerpc/lib/locks.c | 8 |
6 files changed, 80 insertions, 68 deletions
diff --git a/arch/powerpc/lib/copy_32.S b/arch/powerpc/lib/copy_32.S index c657de59abca..74a7f4130b4c 100644 --- a/arch/powerpc/lib/copy_32.S +++ b/arch/powerpc/lib/copy_32.S | |||
@@ -98,20 +98,7 @@ _GLOBAL(cacheable_memzero) | |||
98 | bdnz 4b | 98 | bdnz 4b |
99 | 3: mtctr r9 | 99 | 3: mtctr r9 |
100 | li r7,4 | 100 | li r7,4 |
101 | #if !defined(CONFIG_8xx) | ||
102 | 10: dcbz r7,r6 | 101 | 10: dcbz r7,r6 |
103 | #else | ||
104 | 10: stw r4, 4(r6) | ||
105 | stw r4, 8(r6) | ||
106 | stw r4, 12(r6) | ||
107 | stw r4, 16(r6) | ||
108 | #if CACHE_LINE_SIZE >= 32 | ||
109 | stw r4, 20(r6) | ||
110 | stw r4, 24(r6) | ||
111 | stw r4, 28(r6) | ||
112 | stw r4, 32(r6) | ||
113 | #endif /* CACHE_LINE_SIZE */ | ||
114 | #endif | ||
115 | addi r6,r6,CACHELINE_BYTES | 102 | addi r6,r6,CACHELINE_BYTES |
116 | bdnz 10b | 103 | bdnz 10b |
117 | clrlwi r5,r8,32-LG_CACHELINE_BYTES | 104 | clrlwi r5,r8,32-LG_CACHELINE_BYTES |
@@ -200,9 +187,7 @@ _GLOBAL(cacheable_memcpy) | |||
200 | mtctr r0 | 187 | mtctr r0 |
201 | beq 63f | 188 | beq 63f |
202 | 53: | 189 | 53: |
203 | #if !defined(CONFIG_8xx) | ||
204 | dcbz r11,r6 | 190 | dcbz r11,r6 |
205 | #endif | ||
206 | COPY_16_BYTES | 191 | COPY_16_BYTES |
207 | #if L1_CACHE_BYTES >= 32 | 192 | #if L1_CACHE_BYTES >= 32 |
208 | COPY_16_BYTES | 193 | COPY_16_BYTES |
@@ -356,14 +341,6 @@ _GLOBAL(__copy_tofrom_user) | |||
356 | li r11,4 | 341 | li r11,4 |
357 | beq 63f | 342 | beq 63f |
358 | 343 | ||
359 | #ifdef CONFIG_8xx | ||
360 | /* Don't use prefetch on 8xx */ | ||
361 | mtctr r0 | ||
362 | li r0,0 | ||
363 | 53: COPY_16_BYTES_WITHEX(0) | ||
364 | bdnz 53b | ||
365 | |||
366 | #else /* not CONFIG_8xx */ | ||
367 | /* Here we decide how far ahead to prefetch the source */ | 344 | /* Here we decide how far ahead to prefetch the source */ |
368 | li r3,4 | 345 | li r3,4 |
369 | cmpwi r0,1 | 346 | cmpwi r0,1 |
@@ -416,7 +393,6 @@ _GLOBAL(__copy_tofrom_user) | |||
416 | li r3,4 | 393 | li r3,4 |
417 | li r7,0 | 394 | li r7,0 |
418 | bne 114b | 395 | bne 114b |
419 | #endif /* CONFIG_8xx */ | ||
420 | 396 | ||
421 | 63: srwi. r0,r5,2 | 397 | 63: srwi. r0,r5,2 |
422 | mtctr r0 | 398 | mtctr r0 |
diff --git a/arch/powerpc/lib/copypage_64.S b/arch/powerpc/lib/copypage_64.S index 75f3267fdc30..4d4eeb900486 100644 --- a/arch/powerpc/lib/copypage_64.S +++ b/arch/powerpc/lib/copypage_64.S | |||
@@ -26,11 +26,11 @@ BEGIN_FTR_SECTION | |||
26 | srd r8,r5,r11 | 26 | srd r8,r5,r11 |
27 | 27 | ||
28 | mtctr r8 | 28 | mtctr r8 |
29 | setup: | 29 | .Lsetup: |
30 | dcbt r9,r4 | 30 | dcbt r9,r4 |
31 | dcbz r9,r3 | 31 | dcbz r9,r3 |
32 | add r9,r9,r12 | 32 | add r9,r9,r12 |
33 | bdnz setup | 33 | bdnz .Lsetup |
34 | END_FTR_SECTION_IFSET(CPU_FTR_CP_USE_DCBTZ) | 34 | END_FTR_SECTION_IFSET(CPU_FTR_CP_USE_DCBTZ) |
35 | addi r3,r3,-8 | 35 | addi r3,r3,-8 |
36 | srdi r8,r5,7 /* page is copied in 128 byte strides */ | 36 | srdi r8,r5,7 /* page is copied in 128 byte strides */ |
@@ -43,62 +43,62 @@ END_FTR_SECTION_IFSET(CPU_FTR_CP_USE_DCBTZ) | |||
43 | ld r7,16(r4) | 43 | ld r7,16(r4) |
44 | ldu r8,24(r4) | 44 | ldu r8,24(r4) |
45 | 1: std r5,8(r3) | 45 | 1: std r5,8(r3) |
46 | ld r9,8(r4) | ||
47 | std r6,16(r3) | 46 | std r6,16(r3) |
47 | ld r9,8(r4) | ||
48 | ld r10,16(r4) | 48 | ld r10,16(r4) |
49 | std r7,24(r3) | 49 | std r7,24(r3) |
50 | ld r11,24(r4) | ||
51 | std r8,32(r3) | 50 | std r8,32(r3) |
51 | ld r11,24(r4) | ||
52 | ld r12,32(r4) | 52 | ld r12,32(r4) |
53 | std r9,40(r3) | 53 | std r9,40(r3) |
54 | ld r5,40(r4) | ||
55 | std r10,48(r3) | 54 | std r10,48(r3) |
55 | ld r5,40(r4) | ||
56 | ld r6,48(r4) | 56 | ld r6,48(r4) |
57 | std r11,56(r3) | 57 | std r11,56(r3) |
58 | ld r7,56(r4) | ||
59 | std r12,64(r3) | 58 | std r12,64(r3) |
59 | ld r7,56(r4) | ||
60 | ld r8,64(r4) | 60 | ld r8,64(r4) |
61 | std r5,72(r3) | 61 | std r5,72(r3) |
62 | ld r9,72(r4) | ||
63 | std r6,80(r3) | 62 | std r6,80(r3) |
63 | ld r9,72(r4) | ||
64 | ld r10,80(r4) | 64 | ld r10,80(r4) |
65 | std r7,88(r3) | 65 | std r7,88(r3) |
66 | ld r11,88(r4) | ||
67 | std r8,96(r3) | 66 | std r8,96(r3) |
67 | ld r11,88(r4) | ||
68 | ld r12,96(r4) | 68 | ld r12,96(r4) |
69 | std r9,104(r3) | 69 | std r9,104(r3) |
70 | ld r5,104(r4) | ||
71 | std r10,112(r3) | 70 | std r10,112(r3) |
71 | ld r5,104(r4) | ||
72 | ld r6,112(r4) | 72 | ld r6,112(r4) |
73 | std r11,120(r3) | 73 | std r11,120(r3) |
74 | ld r7,120(r4) | ||
75 | stdu r12,128(r3) | 74 | stdu r12,128(r3) |
75 | ld r7,120(r4) | ||
76 | ldu r8,128(r4) | 76 | ldu r8,128(r4) |
77 | bdnz 1b | 77 | bdnz 1b |
78 | 78 | ||
79 | std r5,8(r3) | 79 | std r5,8(r3) |
80 | ld r9,8(r4) | ||
81 | std r6,16(r3) | 80 | std r6,16(r3) |
81 | ld r9,8(r4) | ||
82 | ld r10,16(r4) | 82 | ld r10,16(r4) |
83 | std r7,24(r3) | 83 | std r7,24(r3) |
84 | ld r11,24(r4) | ||
85 | std r8,32(r3) | 84 | std r8,32(r3) |
85 | ld r11,24(r4) | ||
86 | ld r12,32(r4) | 86 | ld r12,32(r4) |
87 | std r9,40(r3) | 87 | std r9,40(r3) |
88 | ld r5,40(r4) | ||
89 | std r10,48(r3) | 88 | std r10,48(r3) |
89 | ld r5,40(r4) | ||
90 | ld r6,48(r4) | 90 | ld r6,48(r4) |
91 | std r11,56(r3) | 91 | std r11,56(r3) |
92 | ld r7,56(r4) | ||
93 | std r12,64(r3) | 92 | std r12,64(r3) |
93 | ld r7,56(r4) | ||
94 | ld r8,64(r4) | 94 | ld r8,64(r4) |
95 | std r5,72(r3) | 95 | std r5,72(r3) |
96 | ld r9,72(r4) | ||
97 | std r6,80(r3) | 96 | std r6,80(r3) |
97 | ld r9,72(r4) | ||
98 | ld r10,80(r4) | 98 | ld r10,80(r4) |
99 | std r7,88(r3) | 99 | std r7,88(r3) |
100 | ld r11,88(r4) | ||
101 | std r8,96(r3) | 100 | std r8,96(r3) |
101 | ld r11,88(r4) | ||
102 | ld r12,96(r4) | 102 | ld r12,96(r4) |
103 | std r9,104(r3) | 103 | std r9,104(r3) |
104 | std r10,112(r3) | 104 | std r10,112(r3) |
diff --git a/arch/powerpc/lib/copyuser_64.S b/arch/powerpc/lib/copyuser_64.S index 693b14a778fa..578b625d6a3c 100644 --- a/arch/powerpc/lib/copyuser_64.S +++ b/arch/powerpc/lib/copyuser_64.S | |||
@@ -44,37 +44,55 @@ BEGIN_FTR_SECTION | |||
44 | andi. r0,r4,7 | 44 | andi. r0,r4,7 |
45 | bne .Lsrc_unaligned | 45 | bne .Lsrc_unaligned |
46 | END_FTR_SECTION_IFCLR(CPU_FTR_UNALIGNED_LD_STD) | 46 | END_FTR_SECTION_IFCLR(CPU_FTR_UNALIGNED_LD_STD) |
47 | srdi r7,r5,4 | 47 | blt cr1,.Ldo_tail /* if < 16 bytes to copy */ |
48 | 20: ld r9,0(r4) | 48 | srdi r0,r5,5 |
49 | addi r4,r4,-8 | 49 | cmpdi cr1,r0,0 |
50 | mtctr r7 | 50 | 20: ld r7,0(r4) |
51 | andi. r5,r5,7 | 51 | 220: ld r6,8(r4) |
52 | bf cr7*4+0,22f | 52 | addi r4,r4,16 |
53 | addi r3,r3,8 | 53 | mtctr r0 |
54 | addi r4,r4,8 | 54 | andi. r0,r5,0x10 |
55 | mr r8,r9 | 55 | beq 22f |
56 | blt cr1,72f | 56 | addi r3,r3,16 |
57 | 21: ld r9,8(r4) | 57 | addi r4,r4,-16 |
58 | 70: std r8,8(r3) | 58 | mr r9,r7 |
59 | 22: ldu r8,16(r4) | 59 | mr r8,r6 |
60 | 71: stdu r9,16(r3) | 60 | beq cr1,72f |
61 | 21: ld r7,16(r4) | ||
62 | 221: ld r6,24(r4) | ||
63 | addi r4,r4,32 | ||
64 | 70: std r9,0(r3) | ||
65 | 270: std r8,8(r3) | ||
66 | 22: ld r9,0(r4) | ||
67 | 222: ld r8,8(r4) | ||
68 | 71: std r7,16(r3) | ||
69 | 271: std r6,24(r3) | ||
70 | addi r3,r3,32 | ||
61 | bdnz 21b | 71 | bdnz 21b |
62 | 72: std r8,8(r3) | 72 | 72: std r9,0(r3) |
73 | 272: std r8,8(r3) | ||
74 | andi. r5,r5,0xf | ||
63 | beq+ 3f | 75 | beq+ 3f |
64 | addi r3,r3,16 | 76 | addi r4,r4,16 |
65 | .Ldo_tail: | 77 | .Ldo_tail: |
66 | bf cr7*4+1,1f | 78 | addi r3,r3,16 |
67 | 23: lwz r9,8(r4) | 79 | bf cr7*4+0,246f |
80 | 244: ld r9,0(r4) | ||
81 | addi r4,r4,8 | ||
82 | 245: std r9,0(r3) | ||
83 | addi r3,r3,8 | ||
84 | 246: bf cr7*4+1,1f | ||
85 | 23: lwz r9,0(r4) | ||
68 | addi r4,r4,4 | 86 | addi r4,r4,4 |
69 | 73: stw r9,0(r3) | 87 | 73: stw r9,0(r3) |
70 | addi r3,r3,4 | 88 | addi r3,r3,4 |
71 | 1: bf cr7*4+2,2f | 89 | 1: bf cr7*4+2,2f |
72 | 44: lhz r9,8(r4) | 90 | 44: lhz r9,0(r4) |
73 | addi r4,r4,2 | 91 | addi r4,r4,2 |
74 | 74: sth r9,0(r3) | 92 | 74: sth r9,0(r3) |
75 | addi r3,r3,2 | 93 | addi r3,r3,2 |
76 | 2: bf cr7*4+3,3f | 94 | 2: bf cr7*4+3,3f |
77 | 45: lbz r9,8(r4) | 95 | 45: lbz r9,0(r4) |
78 | 75: stb r9,0(r3) | 96 | 75: stb r9,0(r3) |
79 | 3: li r3,0 | 97 | 3: li r3,0 |
80 | blr | 98 | blr |
@@ -220,7 +238,9 @@ END_FTR_SECTION_IFCLR(CPU_FTR_UNALIGNED_LD_STD) | |||
220 | 131: | 238 | 131: |
221 | addi r3,r3,8 | 239 | addi r3,r3,8 |
222 | 120: | 240 | 120: |
241 | 320: | ||
223 | 122: | 242 | 122: |
243 | 322: | ||
224 | 124: | 244 | 124: |
225 | 125: | 245 | 125: |
226 | 126: | 246 | 126: |
@@ -229,9 +249,11 @@ END_FTR_SECTION_IFCLR(CPU_FTR_UNALIGNED_LD_STD) | |||
229 | 129: | 249 | 129: |
230 | 133: | 250 | 133: |
231 | addi r3,r3,8 | 251 | addi r3,r3,8 |
232 | 121: | ||
233 | 132: | 252 | 132: |
234 | addi r3,r3,8 | 253 | addi r3,r3,8 |
254 | 121: | ||
255 | 321: | ||
256 | 344: | ||
235 | 134: | 257 | 134: |
236 | 135: | 258 | 135: |
237 | 138: | 259 | 138: |
@@ -303,18 +325,22 @@ END_FTR_SECTION_IFCLR(CPU_FTR_UNALIGNED_LD_STD) | |||
303 | 183: | 325 | 183: |
304 | add r3,r3,r7 | 326 | add r3,r3,r7 |
305 | b 1f | 327 | b 1f |
328 | 371: | ||
306 | 180: | 329 | 180: |
307 | addi r3,r3,8 | 330 | addi r3,r3,8 |
308 | 171: | 331 | 171: |
309 | 177: | 332 | 177: |
310 | addi r3,r3,8 | 333 | addi r3,r3,8 |
311 | 170: | 334 | 370: |
312 | 172: | 335 | 372: |
313 | 176: | 336 | 176: |
314 | 178: | 337 | 178: |
315 | addi r3,r3,4 | 338 | addi r3,r3,4 |
316 | 185: | 339 | 185: |
317 | addi r3,r3,4 | 340 | addi r3,r3,4 |
341 | 170: | ||
342 | 172: | ||
343 | 345: | ||
318 | 173: | 344 | 173: |
319 | 174: | 345 | 174: |
320 | 175: | 346 | 175: |
@@ -341,11 +367,19 @@ END_FTR_SECTION_IFCLR(CPU_FTR_UNALIGNED_LD_STD) | |||
341 | .section __ex_table,"a" | 367 | .section __ex_table,"a" |
342 | .align 3 | 368 | .align 3 |
343 | .llong 20b,120b | 369 | .llong 20b,120b |
370 | .llong 220b,320b | ||
344 | .llong 21b,121b | 371 | .llong 21b,121b |
372 | .llong 221b,321b | ||
345 | .llong 70b,170b | 373 | .llong 70b,170b |
374 | .llong 270b,370b | ||
346 | .llong 22b,122b | 375 | .llong 22b,122b |
376 | .llong 222b,322b | ||
347 | .llong 71b,171b | 377 | .llong 71b,171b |
378 | .llong 271b,371b | ||
348 | .llong 72b,172b | 379 | .llong 72b,172b |
380 | .llong 272b,372b | ||
381 | .llong 244b,344b | ||
382 | .llong 245b,345b | ||
349 | .llong 23b,123b | 383 | .llong 23b,123b |
350 | .llong 73b,173b | 384 | .llong 73b,173b |
351 | .llong 44b,144b | 385 | .llong 44b,144b |
diff --git a/arch/powerpc/lib/devres.c b/arch/powerpc/lib/devres.c index 292115d98ea9..deac4d30daf4 100644 --- a/arch/powerpc/lib/devres.c +++ b/arch/powerpc/lib/devres.c | |||
@@ -8,6 +8,7 @@ | |||
8 | */ | 8 | */ |
9 | 9 | ||
10 | #include <linux/device.h> /* devres_*(), devm_ioremap_release() */ | 10 | #include <linux/device.h> /* devres_*(), devm_ioremap_release() */ |
11 | #include <linux/gfp.h> | ||
11 | #include <linux/io.h> /* ioremap_flags() */ | 12 | #include <linux/io.h> /* ioremap_flags() */ |
12 | #include <linux/module.h> /* EXPORT_SYMBOL() */ | 13 | #include <linux/module.h> /* EXPORT_SYMBOL() */ |
13 | 14 | ||
diff --git a/arch/powerpc/lib/feature-fixups.c b/arch/powerpc/lib/feature-fixups.c index 7e8865bcd683..e640175b65ae 100644 --- a/arch/powerpc/lib/feature-fixups.c +++ b/arch/powerpc/lib/feature-fixups.c | |||
@@ -112,7 +112,8 @@ void do_feature_fixups(unsigned long value, void *fixup_start, void *fixup_end) | |||
112 | 112 | ||
113 | void do_lwsync_fixups(unsigned long value, void *fixup_start, void *fixup_end) | 113 | void do_lwsync_fixups(unsigned long value, void *fixup_start, void *fixup_end) |
114 | { | 114 | { |
115 | unsigned int *start, *end, *dest; | 115 | long *start, *end; |
116 | unsigned int *dest; | ||
116 | 117 | ||
117 | if (!(value & CPU_FTR_LWSYNC)) | 118 | if (!(value & CPU_FTR_LWSYNC)) |
118 | return ; | 119 | return ; |
diff --git a/arch/powerpc/lib/locks.c b/arch/powerpc/lib/locks.c index 79d0fa3a470d..58e14fba11b1 100644 --- a/arch/powerpc/lib/locks.c +++ b/arch/powerpc/lib/locks.c | |||
@@ -25,7 +25,7 @@ | |||
25 | #include <asm/smp.h> | 25 | #include <asm/smp.h> |
26 | #include <asm/firmware.h> | 26 | #include <asm/firmware.h> |
27 | 27 | ||
28 | void __spin_yield(raw_spinlock_t *lock) | 28 | void __spin_yield(arch_spinlock_t *lock) |
29 | { | 29 | { |
30 | unsigned int lock_value, holder_cpu, yield_count; | 30 | unsigned int lock_value, holder_cpu, yield_count; |
31 | 31 | ||
@@ -55,7 +55,7 @@ void __spin_yield(raw_spinlock_t *lock) | |||
55 | * This turns out to be the same for read and write locks, since | 55 | * This turns out to be the same for read and write locks, since |
56 | * we only know the holder if it is write-locked. | 56 | * we only know the holder if it is write-locked. |
57 | */ | 57 | */ |
58 | void __rw_yield(raw_rwlock_t *rw) | 58 | void __rw_yield(arch_rwlock_t *rw) |
59 | { | 59 | { |
60 | int lock_value; | 60 | int lock_value; |
61 | unsigned int holder_cpu, yield_count; | 61 | unsigned int holder_cpu, yield_count; |
@@ -82,7 +82,7 @@ void __rw_yield(raw_rwlock_t *rw) | |||
82 | } | 82 | } |
83 | #endif | 83 | #endif |
84 | 84 | ||
85 | void __raw_spin_unlock_wait(raw_spinlock_t *lock) | 85 | void arch_spin_unlock_wait(arch_spinlock_t *lock) |
86 | { | 86 | { |
87 | while (lock->slock) { | 87 | while (lock->slock) { |
88 | HMT_low(); | 88 | HMT_low(); |
@@ -92,4 +92,4 @@ void __raw_spin_unlock_wait(raw_spinlock_t *lock) | |||
92 | HMT_medium(); | 92 | HMT_medium(); |
93 | } | 93 | } |
94 | 94 | ||
95 | EXPORT_SYMBOL(__raw_spin_unlock_wait); | 95 | EXPORT_SYMBOL(arch_spin_unlock_wait); |