xemu/include/qemu
Peter Maydell 3d7680fb18 bitops.h: Define bit operations on 'uint32_t' arrays
Currently bitops.h defines a set of operations that work on
arbitrary-length bit arrays.  However (largely because they
originally came from the Linux kernel) the bit array storage is an
array of 'unsigned long'.  This is OK for the kernel and even for
parts of QEMU where we don't really care about the underlying storage
format, but it is not good for devices, where we often want to expose
the storage to the guest and so need a type that is not
variably-sized between host OSes.

We already have a workaround for this in the GICv3 model:
arm_gicv3_common.h defines equivalents of the bit operations that
work on uint32_t.  It turns out that we should also be using
something similar in hw/intc/loongarch_extioi.c, which currently
casts a pointer to a uint32_t array to 'unsigned long *' in
extio_setirq(), which is both undefined behaviour and not correct on
a big-endian host.

Define equivalents of the set_bit() function family which work
with a uint32_t array.

(Cc stable because we're about to provide a bugfix to
loongarch_extioi which will depend on this commit.)

Cc: qemu-stable@nongnu.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-id: 20241108135514.4006953-2-peter.maydell@linaro.org
2024-11-19 13:02:06 +00:00
..
accel.h accel: Declare AccelClass::cpu_common_[un]realize() handlers 2023-10-03 08:00:25 -07:00
async-teardown.h Don't include headers already included by qemu/osdep.h 2023-02-08 07:28:05 +01:00
atomic.h include: Fix typo in name of MAKE_IDENTFIER macro 2024-08-09 17:37:54 +01:00
atomic128.h tcg: Correct invalid mentions of 'softmmu' by 'system-mode' 2023-10-07 19:02:33 +02:00
base64.h nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
bcd.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
bitmap.h bitops.h: Define bit operations on 'uint32_t' arrays 2024-11-19 13:02:06 +00:00
bitops.h bitops.h: Define bit operations on 'uint32_t' arrays 2024-11-19 13:02:06 +00:00
bswap.h qemu/bswap: Undefine CPU_CONVERT() once done 2024-10-15 11:55:09 -03:00
buffer.h Replace GCC_FMT_ATTR with G_GNUC_PRINTF 2022-03-22 14:40:51 +04:00
cacheflush.h util: Enhance flush_icache_range with separate data pointer 2021-01-07 05:09:41 -10:00
cacheinfo.h include: Move qemu_[id]cache_* declarations to new qemu/cacheinfo.h 2022-02-21 13:30:20 +00:00
chardev_open.h util/char_dev: Add open_cdev() 2023-12-19 19:03:38 +01:00
clang-tsa.h clang-tsa: Add macros for shared locks 2022-12-15 16:07:43 +01:00
co-shared-resource.h util/co-shared-resource: Remove unused co_try_get_from_shres 2024-09-30 10:53:18 +03:00
compiler.h include: Fix typo in name of MAKE_IDENTFIER macro 2024-08-09 17:37:54 +01:00
config-file.h util/qemu-config: Extract QMP commands to qemu-config-qmp.c 2024-04-18 11:17:27 +02:00
coroutine-core.h Rename "QEMU global mutex" to "BQL" in comments and docs 2024-01-08 10:45:43 -05:00
coroutine-tls.h tls: add macros for coroutine-safe TLS variables 2022-03-04 18:14:40 +01:00
coroutine.h lockable: remove QemuLockable from typedefs.h 2024-05-03 15:47:48 +02:00
coroutine_int.h coroutine: support SafeStack in ucontext backend 2020-06-23 15:46:05 +01:00
cpu-float.h Clean up ill-advised or unusual header guards 2022-05-11 16:50:01 +02:00
cpuid.h host/include/i386: Implement clmul.h 2023-09-15 13:57:00 +00:00
crc-ccitt.h license: Update deprecated SPDX tag GPL-2.0 to GPL-2.0-only 2024-09-20 10:11:59 +03:00
crc32c.h igb: Implement Rx SCTP CSO 2023-05-23 15:20:15 +08:00
ctype.h qemu-common: Move qemu_isalnum() etc. to qemu/ctype.h 2019-06-11 20:22:09 +02:00
cutils.h util/cutils: Remove unused qemu_get_exec_dir 2024-09-20 10:04:34 +03:00
datadir.h vl: extract softmmu/datadir.c 2020-12-10 12:15:18 -05:00
dbus.h Don't include headers already included by qemu/osdep.h 2023-02-08 07:28:05 +01:00
defer-call.h util/defer-call: move defer_call() to util/ 2023-10-31 15:41:42 +01:00
drm.h Clean up ill-advised or unusual header guards 2019-05-13 08:58:55 +02:00
envlist.h envlist: Remove unused envlist_parse 2024-09-20 10:00:27 +03:00
error-report.h Move error_printf_unless_qmp() with monitor unit 2022-04-21 17:09:09 +04:00
event_notifier.h event_notifier: add event_notifier_get_wfd() 2022-03-06 06:19:47 -05:00
fifo8.h fifo8: introduce fifo8_peek() function 2024-09-13 20:11:13 +02:00
fifo32.h hw: Clean up includes 2016-06-07 18:19:23 +03:00
filemonitor.h nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
futex.h futex: add missing header guards 2017-10-16 20:57:13 +03:00
guest-random.h util/guest-random: Clean up global variable shadowing 2023-10-06 13:27:48 +02:00
hbitmap.h hbitmap: fix hbitmap_status() return value for first dirty bit case 2023-02-17 14:34:24 +01:00
help-texts.h docs: update copyright date to the year 2024 2024-03-11 17:21:21 +00:00
help_option.h keyval: Parse help options 2020-10-15 16:06:27 +02:00
host-utils.h target/i386: use compiler builtin to compute PF 2024-10-31 18:28:33 +01:00
hw-version.h include: Move hardware version declarations to new qemu/hw-version.h 2022-02-21 13:30:20 +00:00
id.h net: Use id_generate() in the network subsystem, too 2021-03-09 21:47:45 +01:00
int128.h host/include/generic/host/atomic128: Fix compilation problem with Clang 17 2023-11-13 11:35:47 +01:00
interval-tree.h util: Add interval-tree.c 2022-12-20 17:09:41 -08:00
iov.h util/iov: Introduce iov_send_recv_with_flags() 2024-10-10 12:33:31 +01:00
iova-tree.h util/iova-tree: Remove deadcode 2024-10-08 15:28:55 -04:00
jhash.h Clean up ill-advised or unusual header guards 2019-05-13 08:58:55 +02:00
job.h mirror: Don't call job_pause_point() under graph lock 2024-03-18 12:03:04 +01:00
keyval.h Clean up ill-advised or unusual header guards 2022-05-11 16:50:01 +02:00
lockable.h lockable: Do not cast function pointers 2024-05-29 12:41:56 +02:00
lockcnt.h docs/devel/lockcnt: Include kernel-doc API documentation 2024-10-15 15:16:17 +01:00
log-for-trace.h util/log: Drop return value from qemu_log 2022-04-20 10:51:11 -07:00
log.h plugins: Replace pr_ops with a proper debug dump flag 2024-04-30 16:12:05 -07:00
madvise.h include: Move qemu_madvise() and related #defines to new qemu/madvise.h 2022-02-21 13:30:20 +00:00
main-loop.h qemu/main-loop: rename qemu_cond_wait_iothread() to qemu_cond_wait_bql() 2024-01-08 10:45:43 -05:00
memalign.h osdep: Move memalign-related functions to their own header 2022-03-07 13:16:49 +00:00
memfd.h linux-user: add memfd_create 2019-09-11 08:46:17 +02:00
mmap-alloc.h util/mmap-alloc: qemu_fd_getfs() 2023-04-24 11:29:00 +02:00
module.h module: add Error arguments to module_load and module_load_qom 2022-11-06 09:48:50 +01:00
mprotect.h include: Move qemu_mprotect_*() to new qemu/mprotect.h 2022-02-21 13:30:20 +00:00
notify.h migration: convert to NotifierWithReturn 2024-02-28 11:31:28 +08:00
nvdimm-utils.h Clean up includes 2020-12-10 17:16:44 +01:00
option.h qemu-option: remove QemuOpt from typedefs.h 2024-05-03 15:47:48 +02:00
option_int.h qemu/queue.h: simplify reverse access to QTAILQ 2019-01-11 15:46:55 +01:00
osdep.h eif: cope with huge section offsets 2024-11-07 16:54:02 +01:00
path.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
plugin-event.h include/qemu: Split out plugin-event.h 2023-03-22 15:06:57 +00:00
plugin-memory.h plugin: Simplify struct qemu_plugin_hwaddr 2023-09-16 14:57:15 +00:00
plugin.h plugins: save value during memory accesses 2024-09-19 15:58:01 +01:00
pmem.h include/qemu: remove return after g_assert_not_reached() 2024-09-24 13:53:35 +02:00
processor.h qemu/processor: Remove unused 'qemu/atomic.h' header 2023-08-31 19:47:43 +02:00
progress_meter.h coroutine: Clean up superfluous inclusion of qemu/lockable.h 2023-01-19 10:18:28 +01:00
qdist.h Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
qemu-plugin.h plugins: add plugin API to read guest memory 2024-09-19 15:58:01 +01:00
qemu-print.h Replace GCC_FMT_ATTR with G_GNUC_PRINTF 2022-03-22 14:40:51 +04:00
qemu-progress.h include: move progress API to qemu-progress.h 2022-04-06 14:31:43 +02:00
qht.h qht: constify qht_statistics_init 2018-09-26 08:55:54 -07:00
qsp.h qsp: Simplify how qsp_report() prints 2019-04-18 22:18:59 +02:00
qtree.h include: Clean up includes 2024-01-30 21:20:20 +03:00
queue.h qemu/atomic.h: rename atomic_ to qatomic_ 2020-09-23 16:07:44 +01:00
range.h util/range: Make ranges_overlap() return bool 2024-07-23 20:30:36 +02:00
ratelimit.h ratelimit: treat zero speed as unlimited 2021-06-25 14:22:21 +03:00
rcu.h bulk: Do not declare function prototypes using 'extern' keyword 2023-08-31 19:47:43 +02:00
rcu_queue.h remove unnecessary extern "C" blocks 2023-02-10 14:12:06 +01:00
readline.h readline: Extract readline_add_completion_of() from monitor 2023-02-04 07:56:54 +01:00
reserved-region.h util/reserved-region: Add new ReservedRegion helpers 2023-11-03 09:20:31 +01:00
selfmap.h util/selfmap: Use dev_t and ino_t in MapInfo 2023-09-01 13:34:03 -07:00
seqlock.h qemu/atomic.h: rename atomic_ to qatomic_ 2020-09-23 16:07:44 +01:00
sockets.h sockets: Remove deadcode 2024-10-22 11:44:23 +01:00
stats64.h stat64: Add stat64_set() operation 2023-04-27 16:39:43 +02:00
sys_membarrier.h bulk: Do not declare function prototypes using 'extern' keyword 2023-08-31 19:47:43 +02:00
systemd.h Normalize header guard symbol definition. 2019-05-13 08:58:55 +02:00
thread-context.h util: Introduce ThreadContext user-creatable object 2022-10-27 11:00:43 +02:00
thread-posix.h thread-posix: implement Semaphore with QemuCond and QemuMutex 2022-04-06 14:31:56 +02:00
thread-win32.h util: Use real functions for thread-posix QemuRecMutex 2021-06-16 15:03:26 +02:00
thread.h include: Move QemuLockCnt APIs to their own header 2024-10-15 15:16:17 +01:00
throttle-options.h block: add throttle block filter driver 2017-09-06 10:12:02 +02:00
throttle.h throttle: use enum ThrottleDirection instead of bool is_write 2023-08-29 10:49:24 +02:00
timed-average.h license: Simplify GPL-2.0-or-later license descriptions 2024-09-20 10:11:59 +03:00
timer.h qemu-timer: Remove unused timer functions 2024-10-02 12:38:36 +02:00
transactions.h transactions: Invoke clean() after everything else 2021-11-16 09:43:44 +01:00
tsan.h include/qemu: Added tsan.h for annotations. 2020-06-16 14:49:05 +01:00
typedefs.h accel/tcg: Add TCGCPUOps.tlb_fill_align 2024-10-13 11:27:05 -07:00
unicode.h json: Reject invalid UTF-8 sequences 2018-08-24 20:26:37 +02:00
units.h block: Eliminate the S_1KiB, S_2KiB, ... macros 2019-02-01 13:46:45 +01:00
userfaultfd.h util/userfaultfd: Remove unused uffd_poll_events 2024-10-08 15:28:55 -04:00
uuid.h util/uuid: Define UUID_STR_LEN from UUID_NONE string 2023-11-03 09:20:31 +01:00
vfio-helpers.h util/vfio-helpers: Pass Error handle to qemu_vfio_dma_map() 2021-09-07 09:08:24 +01:00
vhost-user-server.h export/vhost-user-blk: Fix consecutive drains 2023-11-28 14:56:32 +01:00
win_dump_defs.h include/qemu: add 32-bit Windows dump structures 2022-04-22 13:36:04 +04:00
xattr.h qemu/xattr.h: Exclude <sys/xattr.h> for Windows 2022-12-23 11:48:13 +01:00
xxhash.h accel/tcg: include cs_base in our hash calculations 2023-06-01 11:05:05 -04:00
yank.h qapi: Fix dangling references to docs/devel/qapi-code-gen.txt 2024-01-26 07:04:53 +01:00