688e4a6e77
linux-user/mmap.c: fix "of of" typo in comment
...
Suggested-by: Thomas Huth <thuth@redhat.com >
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2025-05-09 23:49:26 +03:00
4d3ad3c3ba
include/exec: Split out mmap-lock.h
...
Split out mmap_lock, et al from page-protection.h
to a new header.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-23 14:08:17 -07:00
c9ce8a1ffd
linux-user: Only include 'exec/tb-flush.h' header when necessary
...
Very few source files require to access "exec/tb-flush.h"
declarations, and except a pair, they all include it
explicitly. No need to overload the generic "user-internals.h".
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Message-Id: <20250102182521.65428-2-philmd@linaro.org >
2025-03-09 14:54:32 +01:00
8865049bab
accel/tcg: Move tcg_cflags_has/set() to 'exec/translation-block.h'
...
The TranslationBlock flags are defined in 'exec/translation-block.h'.
tcg_cflags_has/set() use them, it is more logical to declare them in
the same place. Move them there too.
Suggested-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20241212144430.66224-2-philmd@linaro.org >
2024-12-20 17:44:57 +01:00
970ae60e9b
accel/tcg: Move user-related declarations out of 'exec/cpu-all.h' (1/4)
...
Move declarations related to page protection under user
emulation from "exec/cpu-all.h" to "user/page-protection.h".
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20241212185341.2857-12-philmd@linaro.org >
2024-12-20 17:44:57 +01:00
a4ad4a9d98
linux-user: Handle short reads in mmap_h_gt_g
...
In particular, if an image has a large bss, we can hit
EOF before reading all host_len bytes of the mapping.
Create a helper, mmap_pread to handle the job for both
the larger block in mmap_h_gt_g itself, as well as the
smaller block in mmap_frag.
Cc: qemu-stable@nongnu.org
Fixes: eb5027ac61 ("linux-user: Split out mmap_h_gt_g")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2504
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240820050848.165253-2-richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2024-08-21 09:09:46 +10:00
3aefee3ec0
linux-user: Preserve NULL hit in target_mmap subroutines
...
Do not pass guest_base to the host mmap instead of zero hint.
Cc: qemu-stable@nongnu.org
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2353
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-08-15 11:03:47 +10:00
b254c342cf
accel/tcg: Access tcg_cflags with getter / setter
...
Access the CPUState::tcg_cflags via tcg_cflags_has() and
tcg_cflags_set() helpers.
Mechanical change using the following Coccinelle spatch script:
@@
expression cpu;
expression flags;
@@
- cpu->tcg_cflags & flags
+ tcg_cflags_has(cpu, flags)
@@
expression cpu;
expression flags;
@@
- (tcg_cflags_has(cpu, flags))
+ tcg_cflags_has(cpu, flags)
@@
expression cpu;
expression flags;
@@
- cpu->tcg_cflags |= flags;
+ tcg_cflags_set(cpu, flags);
Then manually moving the declarations, and adding both
tcg_cflags_has() and tcg_cflags_set() definitions.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240427155714.53669-15-philmd@linaro.org >
2024-05-06 11:21:05 +02:00
74781c0888
exec/cpu: Extract page-protection definitions to page-protection.h
...
Extract page-protection definitions from "exec/cpu-all.h"
to "exec/page-protection.h".
The list of files requiring the new header was generated
using:
$ git grep -wE \
'PAGE_(READ|WRITE|EXEC|RWX|VALID|ANON|RESERVED|TARGET_.|PASSTHROUGH)'
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Acked-by: Nicholas Piggin <npiggin@gmail.com >
Acked-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240427155714.53669-3-philmd@linaro.org >
2024-05-06 11:17:15 +02:00
86b7c55182
exec/cpu: Rename PAGE_BITS macro to PAGE_RWX
...
This macro can be used to abbreviate PAGE_READ | PAGE_WRITE | PAGE_EXEC
for which PAGE_RWX is a better name and renaming it also shows it is
not related to TARGET_PAGE_BITS.
Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-ID: <20240505121008.44A0D4E602D@zero.eik.bme.hu >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2024-05-06 11:17:15 +02:00
fa527b44c2
linux-user: Fix shmat(NULL) for h != g
...
In the h != g && shmaddr == NULL && !reserved_va case, target_shmat()
incorrectly mmap()s the initial anonymous range with
MAP_FIXED_NOREPLACE, even though the earlier mmap_find_vma() has
already reserved the respective address range.
Fix by using MAP_FIXED when "mapped", which is set after
mmap_find_vma(), is true.
Fixes: 78bc8ed9a8 ("linux-user: Rewrite target_shmat")
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com >
Message-Id: <20240325192436.561154-4-iii@linux.ibm.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-03-26 18:20:36 -10:00
78bc8ed9a8
linux-user: Rewrite target_shmat
...
Handle combined host and guest alignment requirements.
Handle host and guest page size differences.
Handle SHM_EXEC.
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/115
Tested-by: Richard Purdie <richard.purdie@linuxfoundation.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-03-01 08:09:55 -10:00
eb5027ac61
linux-user: Split out mmap_h_gt_g
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Acked-by: Helge Deller <deller@gmx.de >
Message-Id: <20240102015808.132373-24-richard.henderson@linaro.org >
2024-02-29 11:35:37 -10:00
8080b2f804
linux-user: Split out mmap_h_lt_g
...
Work much harder to get alignment and mapping beyond the end
of the file correct. Both of which are excercised by our
test-mmap for alpha (8k pages) on any 4k page host.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Acked-by: Helge Deller <deller@gmx.de >
Message-Id: <20240102015808.132373-23-richard.henderson@linaro.org >
2024-02-29 11:35:37 -10:00
68098de90e
linux-user: Split out mmap_h_eq_g
...
Move the MAX_FIXED_NOREPLACE check for reserved_va earlier.
Move the computation of host_prot earlier.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Acked-by: Helge Deller <deller@gmx.de >
Message-Id: <20240102015808.132373-22-richard.henderson@linaro.org >
2024-02-29 11:35:37 -10:00
3bfa271e46
linux-user: Use do_munmap for target_mmap failure
...
For the cases for which the host mmap succeeds, but does
not yield the desired address, use do_munmap to restore
the reserved_va memory reservation.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-29 11:35:37 -10:00
2952b642a5
linux-user: Split out do_munmap
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-29 11:35:37 -10:00
ad87d26e6b
linux-user: Do early mmap placement only for reserved_va
...
For reserved_va, place all non-fixed maps then proceed
as for MAP_FIXED.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com >
Acked-by: Helge Deller <deller@gmx.de >
Message-Id: <20240102015808.132373-21-richard.henderson@linaro.org >
2024-02-29 11:35:36 -10:00
6ecc25570f
linux-user: Split out mmap_end
...
Use a subroutine instead of a goto within target_mmap__locked.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com >
Acked-by: Helge Deller <deller@gmx.de >
Message-Id: <20240102015808.132373-20-richard.henderson@linaro.org >
2024-02-29 11:35:36 -10:00
f0a362c476
linux-user: Fix sub-host-page mmap
...
We cannot skip over the_end1 to the_end, because we fail to
record the validity of the guest page with the interval tree.
Remove "the_end" and rename "the_end1" to "the_end".
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com >
Acked-by: Helge Deller <deller@gmx.de >
Message-Id: <20240102015808.132373-19-richard.henderson@linaro.org >
2024-02-29 11:35:36 -10:00
e8cec51be0
linux-user: Move some mmap checks outside the lock
...
Basic validation of operands does not require the lock.
Hoist them from target_mmap__locked back into target_mmap.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com >
Acked-by: Helge Deller <deller@gmx.de >
Message-Id: <20240102015808.132373-18-richard.henderson@linaro.org >
2024-02-29 11:35:36 -10:00
d558c395a9
linux-user: Split out target_mmap__locked
...
All "goto fail" may be transformed to "return -1".
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com >
Acked-by: Helge Deller <deller@gmx.de >
Message-Id: <20240102015808.132373-17-richard.henderson@linaro.org >
2024-02-29 11:35:36 -10:00
b36b2b1d3d
linux-user: Remove HOST_PAGE_ALIGN from mmap.c
...
This removes a hidden use of qemu_host_page_size, using instead
the existing host_page_size local within each function.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com >
Acked-by: Helge Deller <deller@gmx.de >
Message-Id: <20240102015808.132373-11-richard.henderson@linaro.org >
2024-02-29 11:35:36 -10:00
e56922abf0
linux-user: Remove REAL_HOST_PAGE_ALIGN from mmap.c
...
We already have qemu_real_host_page_size() in a local variable.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com >
Acked-by: Helge Deller <deller@gmx.de >
Message-Id: <20240102015808.132373-10-richard.henderson@linaro.org >
2024-02-29 11:35:36 -10:00
621ac47d37
linux-user: Remove qemu_host_page_{size, mask} from mmap.c
...
Use qemu_real_host_page_size instead.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Acked-by: Helge Deller <deller@gmx.de >
Message-Id: <20240102015808.132373-9-richard.henderson@linaro.org >
2024-02-29 11:35:36 -10:00
5a534314a8
target/arm: Move feature test functions to their own header
...
The feature test functions isar_feature_*() now take up nearly
a thousand lines in target/arm/cpu.h. This header file is included
by a lot of source files, most of which don't need these functions.
Move the feature test functions to their own header file.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20231024163510.2972081-2-peter.maydell@linaro.org
2023-10-27 11:44:32 +01:00
912ff698ca
linux-user: Propagate failure in mmap_reserve_or_unmap back to target_munmap
...
Do not assert success, but return any failure received.
Additionally, fix the method of earlier error return in target_munmap.
Reported-by: Andreas Schwab <schwab@suse.de >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-18 15:32:16 -07:00
ea80003315
linux-user/mmap.c: clean up local variable shadowing
...
Fix following warnings:
.../linux-user/mmap.c: In function 'target_mremap':
.../linux-user/mmap.c:913:13: warning: declaration of 'prot' shadows a previous local [-Wshadow=compatible-local]
913 | int prot = 0;
| ^~~~
../../../Projects/qemu/linux-user/mmap.c:871:9: note: shadowed declaration is here
871 | int prot;
| ^~~~
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
Message-ID: <20230925151029.461358-3-laurent@vivier.eu >
Reviewed-by: Thomas Huth <thuth@redhat.com >
Signed-off-by: Markus Armbruster <armbru@redhat.com >
2023-10-06 13:27:48 +02:00
044e95c81e
linux-user: Track shm regions with an interval tree
...
Remove the fixed size shm_regions[] array.
Remove references when other mappings completely remove
or replace a region.
Tested-by: Helge Deller <deller@gmx.de >
Reviewed-by: Helge Deller <deller@gmx.de >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-09-01 13:35:57 -07:00
ceda5688b6
linux-user: Fix shmdt
...
If the shm region is not mapped at shmaddr, EINVAL.
Do not unmap the region until the syscall succeeds.
Use mmap_reserve_or_unmap to preserve reserved_va semantics.
Tested-by: Helge Deller <deller@gmx.de >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-09-01 13:35:27 -07:00
69fa2708a2
linux-user: Use WITH_MMAP_LOCK_GUARD in target_{shmat,shmdt}
...
Move the CF_PARALLEL setting outside of the mmap lock.
Tested-by: Helge Deller <deller@gmx.de >
Reviewed-by: Helge Deller <deller@gmx.de >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-09-01 13:35:07 -07:00
225a206c44
linux-user: Move shmat and shmdt implementations to mmap.c
...
Rename from do_* to target_*. Fix some minor checkpatch errors.
Tested-by: Helge Deller <deller@gmx.de >
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Warner Losh <imp@bsdimp.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-09-01 13:35:02 -07:00
da2b71fab6
linux-user: Define ELF_ET_DYN_BASE in $guest/target_mman.h
...
Copy each guest kernel's default value, then bound it
against reserved_va or the host address space.
Tested-by: Helge Deller <deller@gmx.de >
Reviewed-by: Helge Deller <deller@gmx.de >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-08-08 13:27:15 -07:00
c8fb5cf97d
linux-user: Adjust task_unmapped_base for reserved_va
...
Ensure that the chosen values for mmap_next_start and
task_unmapped_base are within the guest address space.
Tested-by: Helge Deller <deller@gmx.de >
Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-08-08 13:24:21 -07:00
62cbf08150
linux-user: Remove last_brk
...
This variable is unused.
Reviewed-by: Helge Deller <deller@gmx.de >
Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-08-06 16:46:13 -07:00
ddcdd8c48f
linux-user: Fix MAP_FIXED_NOREPLACE on old kernels
...
The man page states:
> Note that older kernels which do not recognize the MAP_FIXED_NOREPLACE
> flag will typically (upon detecting a collision with a preexisting
> mapping) fall back to a “non-MAP_FIXED” type of behavior: they will
> return an address that is different from the requested address.
> Therefore, backward-compatible software should check the returned
> address against the requested address.
https://man7.org/linux/man-pages/man2/mmap.2.html
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com >
Message-Id: <20230802071754.14876-3-akihiko.odaki@daynix.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-08-06 10:10:11 -07:00
c3dd50da0f
linux-user: Unset MAP_FIXED_NOREPLACE for host
...
Passing MAP_FIXED_NOREPLACE to host will fail for reserved_va because
the address space is reserved with mmap. Replace it with MAP_FIXED
in that case.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com >
Message-Id: <20230802071754.14876-2-akihiko.odaki@daynix.com >
[rth: Expand inline commentary.]
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-08-06 10:10:11 -07:00
990ef9182b
include/exec: Add WITH_MMAP_LOCK_GUARD
...
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-07-23 17:57:10 +01:00
e230ec090b
linux-user: Simplify target_madvise
...
The trivial length 0 check can be moved up, simplifying some
of the other cases. The end < start test is handled by
guest_range_valid_untagged.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230707204054.8792-27-richard.henderson@linaro.org >
2023-07-15 08:02:33 +01:00
ecb796db03
linux-user: Remove can_passthrough_madvise
...
Use page_check_range instead, which uses the interval tree
instead of checking each page individually.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230707204054.8792-26-richard.henderson@linaro.org >
2023-07-15 08:02:32 +01:00
d7b0c5d013
linux-user: Simplify target_munmap
...
All of the guest to host page adjustment is handled by
mmap_reserve_or_unmap; there is no need to duplicate that.
There are no failure modes for munmap after alignment and
guest address range have been validated.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230707204054.8792-23-richard.henderson@linaro.org >
2023-07-15 08:02:32 +01:00
558a4411c2
linux-user: Rename mmap_reserve to mmap_reserve_or_unmap
...
If !reserved_va, munmap instead and assert success.
Update all callers.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230707204054.8792-22-richard.henderson@linaro.org >
2023-07-15 08:02:32 +01:00
260561d873
linux-user: Rewrite mmap_reserve
...
Use 'last' variables instead of 'end' variables; be careful
about avoiding overflow. Assert that the mmap succeeded.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230707204054.8792-21-richard.henderson@linaro.org >
2023-07-15 08:02:32 +01:00
f9cd8f5eca
linux-user: Use 'last' instead of 'end' in target_mmap
...
Complete the transition within the mmap functions to a formulation
that does not overflow at the end of the address space.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20230707204054.8792-20-richard.henderson@linaro.org >
2023-07-15 08:02:32 +01:00
4c13048e02
linux-user: Use page_find_range_empty for mmap_find_vma_reserved
...
Use the interval tree to find empty space, rather than
probing each page in turn.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230707204054.8792-19-richard.henderson@linaro.org >
2023-07-15 08:02:32 +01:00
99982beb4d
linux-user: Rewrite mmap_frag
...
Use 'last' variables instead of 'end' variables.
Always zero MAP_ANONYMOUS fragments, which we previously
failed to do if they were not writable; early exit in case
we allocate a new page from the kernel, known zeros.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230707204054.8792-16-richard.henderson@linaro.org >
2023-07-15 08:02:32 +01:00
7bdc1acc24
linux-user: Rewrite target_mprotect
...
Use 'last' variables instead of 'end' variables.
When host page size > guest page size, detect when
adjacent host pages have the same protection and
merge that expanded host range into fewer syscalls.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230707204054.8792-15-richard.henderson@linaro.org >
2023-07-15 08:02:32 +01:00
55baec0f4c
linux-user: Widen target_mmap offset argument to off_t
...
We build with _FILE_OFFSET_BITS=64, so off_t = off64_t = uint64_t.
With an extra cast, this fixes emulation of mmap2, which could
overflow the computation of the full value of offset.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230707204054.8792-14-richard.henderson@linaro.org >
2023-07-15 08:02:32 +01:00
0dd558121c
linux-user: Split out target_to_host_prot
...
Split out from validate_prot_to_pageflags, as there is not
one single host_prot for the entire range. We need to adjust
prot for every host page that overlaps multiple guest pages.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230707204054.8792-13-richard.henderson@linaro.org >
2023-07-15 08:02:32 +01:00
037986053b
linux-user: Implement MAP_FIXED_NOREPLACE
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230707204054.8792-12-richard.henderson@linaro.org >
2023-07-15 08:02:32 +01:00