On Wed Jul 17 17:16:20 2024 +0000, theofficialgman wrote:
> The issue I am having is when fully emulating x86_64 wine on arm64 using
> the likes of box64/fex/qemu. So the hardcode makes sense why the problem
> is happening. Thanks for the info, I'll look into using
> `get_host_addr_space_limit` for all architectures.
That resolved the issue
@julliard please consider using the `get_host_addr_space_limit` for all architectures as is done with this patch
```
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
index 0d88315..87b27fb 100644
--- a/dlls/ntdll/unix/virtual.c
+++ b/dlls/ntdll/unix/virtual.c
@@ -2436,8 +2436,6 @@ static NTSTATUS map_pe_header( void *ptr, size_t size, int fd, BOOL *removable )
return STATUS_SUCCESS; /* page protections will be updated later */
}
-#ifdef __aarch64__
-
/***********************************************************************
* get_host_addr_space_limit
*/
@@ -2464,6 +2462,7 @@ static void *get_host_addr_space_limit(void)
return (void *)((addr << 1) - (granularity_mask + 1));
}
+#ifdef __aarch64__
/***********************************************************************
* alloc_arm64ec_map
@@ -3296,12 +3295,8 @@ void virtual_init(void)
pthread_mutex_init( &virtual_mutex, &attr );
pthread_mutexattr_destroy( &attr );
-#ifdef __aarch64__
host_addr_space_limit = get_host_addr_space_limit();
TRACE( "host addr space limit: %p\n", host_addr_space_limit );
-#else
- host_addr_space_limit = address_space_limit;
-#endif
if (preload_info && *preload_info)
for (i = 0; (*preload_info)[i].size; i++)
```
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3598#note_76805