mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
xen/riscv: allow write_atomic() to work with non-scalar types
Update the defintion of write_atomic() to support non-scalar types, bringing it closer to the behavior of read_atomic(). Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com> Acked-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
1 parent
dee9e4b1cc
commit
f9e69c266e
1 file changed
+6
-5
@@ -1,4 +1,4 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Taken and modified from Linux.
|
||||
*
|
||||
@@ -69,10 +69,11 @@ static always_inline void _write_atomic(volatile void *p,
|
||||
}
|
||||
}
|
||||
|
||||
#define write_atomic(p, x) \
|
||||
({ \
|
||||
typeof(*(p)) x_ = (x); \
|
||||
_write_atomic(p, x_, sizeof(*(p))); \
|
||||
#define write_atomic(p, x) \
|
||||
({ \
|
||||
union { typeof(*(p)) v; unsigned long ul; } x_ = { .ul = 0UL }; \
|
||||
x_.v = (x); \
|
||||
_write_atomic(p, x_.ul, sizeof(*(p))); \
|
||||
})
|
||||
|
||||
static always_inline void _add_sized(volatile void *p,
|
||||
|
||||