diff options
author | Chris Metcalf <cmetcalf@tilera.com> | 2010-06-25 17:02:40 -0400 |
---|---|---|
committer | Chris Metcalf <cmetcalf@tilera.com> | 2010-07-06 13:41:39 -0400 |
commit | 2db098278118ed58f4b407ceda691e349df043ce (patch) | |
tree | 91f819e1f5931f92921dbf44c99d2e1a0bc18f58 | |
parent | 863fbac67138882b99fc60fcb0ec568bbad9a44f (diff) |
arch/tile: Fix bug in support for atomic64_xx() ops.
This wasn't properly tested until the perf-event subsystem started
to get brought up under the tile architecture.
The bug caused bogus atomic64_cmpxchg() values to be returned,
among other things.
Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
-rw-r--r-- | arch/tile/lib/atomic_asm_32.S | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/arch/tile/lib/atomic_asm_32.S b/arch/tile/lib/atomic_asm_32.S index c0d05857819..5a5514b77e7 100644 --- a/arch/tile/lib/atomic_asm_32.S +++ b/arch/tile/lib/atomic_asm_32.S | |||
@@ -89,11 +89,11 @@ STD_ENTRY_SECTION(__atomic\name, .text.atomic) | |||
89 | lh r22, r0 | 89 | lh r22, r0 |
90 | .else | 90 | .else |
91 | lw r22, r0 | 91 | lw r22, r0 |
92 | addi r23, r0, 4 | 92 | addi r28, r0, 4 |
93 | .endif | 93 | .endif |
94 | } | 94 | } |
95 | .ifc \bitwidth,64 | 95 | .ifc \bitwidth,64 |
96 | lw r23, r23 | 96 | lw r23, r28 |
97 | .endif | 97 | .endif |
98 | \body /* set r24, and r25 if 64-bit */ | 98 | \body /* set r24, and r25 if 64-bit */ |
99 | { | 99 | { |
@@ -109,11 +109,10 @@ STD_ENTRY_SECTION(__atomic\name, .text.atomic) | |||
109 | sh r0, r24 | 109 | sh r0, r24 |
110 | .else | 110 | .else |
111 | sw r0, r24 | 111 | sw r0, r24 |
112 | addi r23, r0, 4 | ||
113 | .endif | 112 | .endif |
114 | } | 113 | } |
115 | .ifc \bitwidth,64 | 114 | .ifc \bitwidth,64 |
116 | sw r23, r25 | 115 | sw r28, r25 |
117 | .endif | 116 | .endif |
118 | mf | 117 | mf |
119 | 3: { | 118 | 3: { |