Skip to content

Commit 42898f7

Browse files
committed
s390/perf_cpum_cf: Convert to use local64_try_cmpxchg()
Convert local64_cmpxchg() usages to local64_try_cmpxchg() in order to generate slightly better code. Reviewed-by: Juergen Christ <[email protected]> Signed-off-by: Heiko Carstens <[email protected]>
1 parent e449399 commit 42898f7

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

arch/s390/kernel/perf_cpum_cf.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -879,8 +879,8 @@ static int hw_perf_event_reset(struct perf_event *event)
879879
u64 prev, new;
880880
int err;
881881

882+
prev = local64_read(&event->hw.prev_count);
882883
do {
883-
prev = local64_read(&event->hw.prev_count);
884884
err = ecctr(event->hw.config, &new);
885885
if (err) {
886886
if (err != 3)
@@ -892,7 +892,7 @@ static int hw_perf_event_reset(struct perf_event *event)
892892
*/
893893
new = 0;
894894
}
895-
} while (local64_cmpxchg(&event->hw.prev_count, prev, new) != prev);
895+
} while (!local64_try_cmpxchg(&event->hw.prev_count, &prev, new));
896896

897897
return err;
898898
}
@@ -902,12 +902,12 @@ static void hw_perf_event_update(struct perf_event *event)
902902
u64 prev, new, delta;
903903
int err;
904904

905+
prev = local64_read(&event->hw.prev_count);
905906
do {
906-
prev = local64_read(&event->hw.prev_count);
907907
err = ecctr(event->hw.config, &new);
908908
if (err)
909909
return;
910-
} while (local64_cmpxchg(&event->hw.prev_count, prev, new) != prev);
910+
} while (!local64_try_cmpxchg(&event->hw.prev_count, &prev, new));
911911

912912
delta = (prev <= new) ? new - prev
913913
: (-1ULL - prev) + new + 1; /* overflow */

0 commit comments

Comments
 (0)