Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
220a70be
Commit
220a70be
authored
Nov 14, 2023
by
Alexandre Julliard
1
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ntdll: Don't use x86-64 assembly on ARM64EC.
parent
cbaa3d08
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
9 additions
and
5 deletions
+9
-5
loader.c
dlls/ntdll/loader.c
+3
-3
process.c
dlls/ntdll/process.c
+5
-1
relay.c
dlls/ntdll/relay.c
+1
-1
No files found.
dlls/ntdll/loader.c
View file @
220a70be
...
@@ -304,7 +304,7 @@ __ASM_GLOBAL_FUNC(call_dll_entry_point,
...
@@ -304,7 +304,7 @@ __ASM_GLOBAL_FUNC(call_dll_entry_point,
__ASM_CFI
(
".cfi_def_cfa %esp,4
\n\t
"
)
__ASM_CFI
(
".cfi_def_cfa %esp,4
\n\t
"
)
__ASM_CFI
(
".cfi_same_value %ebp
\n\t
"
)
__ASM_CFI
(
".cfi_same_value %ebp
\n\t
"
)
"ret"
)
"ret"
)
#elif defined(__x86_64__)
#elif defined(__x86_64__)
&& !defined(__arm64ec__)
extern
BOOL
CDECL
call_dll_entry_point
(
DLLENTRYPROC
proc
,
void
*
module
,
UINT
reason
,
void
*
reserved
);
extern
BOOL
CDECL
call_dll_entry_point
(
DLLENTRYPROC
proc
,
void
*
module
,
UINT
reason
,
void
*
reserved
);
/* Some apps modify rbx in TLS entry point. */
/* Some apps modify rbx in TLS entry point. */
__ASM_GLOBAL_FUNC
(
call_dll_entry_point
,
__ASM_GLOBAL_FUNC
(
call_dll_entry_point
,
...
@@ -379,7 +379,7 @@ struct stub
...
@@ -379,7 +379,7 @@ struct stub
const
char
*
name
;
const
char
*
name
;
const
void
*
entry
;
const
void
*
entry
;
};
};
#elif defined(__aarch64__)
#elif defined(__aarch64__)
|| defined(__arm64ec__)
struct
stub
struct
stub
{
{
DWORD
ldr_x0
;
/* ldr x0, $dll */
DWORD
ldr_x0
;
/* ldr x0, $dll */
...
@@ -443,7 +443,7 @@ static ULONG_PTR allocate_stub( const char *dll, const char *name )
...
@@ -443,7 +443,7 @@ static ULONG_PTR allocate_stub( const char *dll, const char *name )
stub
->
dll
=
dll
;
stub
->
dll
=
dll
;
stub
->
name
=
name
;
stub
->
name
=
name
;
stub
->
entry
=
stub_entry_point
;
stub
->
entry
=
stub_entry_point
;
#elif defined(__aarch64__)
#elif defined(__aarch64__)
|| defined(__arm64ec__)
stub
->
ldr_x0
=
0x580000a0
;
/* ldr x0, #20 ($dll) */
stub
->
ldr_x0
=
0x580000a0
;
/* ldr x0, #20 ($dll) */
stub
->
ldr_x1
=
0x580000c1
;
/* ldr x1, #24 ($name) */
stub
->
ldr_x1
=
0x580000c1
;
/* ldr x1, #24 ($name) */
stub
->
mov_x2_lr
=
0xaa1e03e2
;
/* mov x2, lr */
stub
->
mov_x2_lr
=
0xaa1e03e2
;
/* mov x2, lr */
...
...
dlls/ntdll/process.c
View file @
220a70be
...
@@ -249,7 +249,11 @@ NTSTATUS WINAPI RtlWow64GetThreadSelectorEntry( HANDLE handle, THREAD_DESCRIPTOR
...
@@ -249,7 +249,11 @@ NTSTATUS WINAPI RtlWow64GetThreadSelectorEntry( HANDLE handle, THREAD_DESCRIPTOR
if
(
RtlWow64GetThreadContext
(
handle
,
&
context
))
if
(
RtlWow64GetThreadContext
(
handle
,
&
context
))
{
{
/* hardcoded values */
/* hardcoded values */
#ifdef __x86_64__
#ifdef __arm64ec__
context
.
SegCs
=
0x33
;
context
.
SegSs
=
0x2b
;
context
.
SegFs
=
0x53
;
#elif defined(__x86_64__)
context
.
SegCs
=
0x23
;
context
.
SegCs
=
0x23
;
__asm__
(
"movw %%fs,%0"
:
"=m"
(
context
.
SegFs
)
);
__asm__
(
"movw %%fs,%0"
:
"=m"
(
context
.
SegFs
)
);
__asm__
(
"movw %%ss,%0"
:
"=m"
(
context
.
SegSs
)
);
__asm__
(
"movw %%ss,%0"
:
"=m"
(
context
.
SegSs
)
);
...
...
dlls/ntdll/relay.c
View file @
220a70be
...
@@ -34,7 +34,7 @@
...
@@ -34,7 +34,7 @@
WINE_DEFAULT_DEBUG_CHANNEL
(
relay
);
WINE_DEFAULT_DEBUG_CHANNEL
(
relay
);
#if
defined(__i386__) || defined(__x86_64__) || defined(__arm__) || defined(__aarch64
__)
#if
(defined(__i386__) || defined(__x86_64__) || defined(__arm__) || defined(__aarch64__)) && !defined(__arm64ec
__)
struct
relay_descr
/* descriptor for a module */
struct
relay_descr
/* descriptor for a module */
{
{
...
...
Vitaly Lipatov
@lav
mentioned in commit
4e0e6238
·
May 08, 2024
mentioned in commit
4e0e6238
mentioned in commit 4e0e623859aefee9d28a383dffe155fd1cfb3f38
Toggle commit list
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment