diff options
| author | Bradley Morgan <brads@mainlining.org> | 2026-09-22 17:33:52 +0000 |
|---|---|---|
| committer | Paul E. McKenney <paulmck@kernel.org> | 2026-10-06 11:38:26 -0700 |
| commit | 887685c52e44c3a80dfc55f8545f5598badb98c9 (patch) | |
| tree | 32299c00d06bb8548c8ec845fc1043418e5ce701 /tools/perf/scripts/python | |
| parent | 109f733202e32c85b41b92276cae6fd789af1890 (diff) | |
| download | linux-887685c52e44c3a80dfc55f8545f5598badb98c9.tar.gz linux-887685c52e44c3a80dfc55f8545f5598badb98c9.zip | |
sh: Emulate two-byte cmpxchg
SH has no byte or halfword atomic memory operations, so the __cmpxchg()
switch routes case 1 through cmpxchg_emu_u8() and lets case 2 fall
through to __cmpxchg_called_with_bad_pointer(), which is declared but
never defined, so a two-byte cmpxchg() fails at link time. Route case
2 through the new cmpxchg_emu_u16(), which takes the old and new
values as unsigned long, so the (unsigned long) casts move off the
call and into _old_ and _new_ declarations that type check the old
and new arguments against *ptr through (unsigned long)(0 ? *ptr : _o_),
the idiom David Laight suggested, so cmpxchg(&p, 4, 5) no longer
compiles silently.
[ paulmck: Apply kernel test robot feedback. ]
Acked-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Signed-off-by: Bradley Morgan <brads@mainlining.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
Cc: Rich Felker <dalias@libc.org>
Cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Cc: <linux-sh@vger.kernel.org>
Diffstat (limited to 'tools/perf/scripts/python')
0 files changed, 0 insertions, 0 deletions
