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
cdb9b601
Commit
cdb9b601
authored
Sep 29, 2023
by
Jacek Caban
Committed by
Alexandre Julliard
Sep 29, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
include: Support ARM64EC target in winnt.h.
parent
71ebc22d
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
20 additions
and
20 deletions
+20
-20
winnt.h
include/winnt.h
+20
-20
No files found.
include/winnt.h
View file @
cdb9b601
...
...
@@ -33,7 +33,7 @@
#endif
#if defined(_MSC_VER) && (defined(__arm__) || defined(__aarch64__))
#if defined(_MSC_VER) && (defined(__arm__) || defined(__aarch64__)
|| defined(__arm64ec__)
)
#include <intrin.h>
#endif
...
...
@@ -2405,6 +2405,17 @@ static FORCEINLINE struct _TEB * WINAPI NtCurrentTeb(void)
__asm
mov
teb
,
eax
;
return
teb
;
}
#elif (defined(__aarch64__) || defined(__arm64ec__)) && defined(__GNUC__)
register
struct
_TEB
*
__wine_current_teb
__asm__
(
"x18"
);
static
FORCEINLINE
struct
_TEB
*
WINAPI
NtCurrentTeb
(
void
)
{
return
__wine_current_teb
;
}
#elif (defined(__aarch64__) || defined(__arm64ec__)) && defined(_MSC_VER)
static
FORCEINLINE
struct
_TEB
*
WINAPI
NtCurrentTeb
(
void
)
{
return
(
struct
_TEB
*
)
__getReg
(
18
);
}
#elif defined(__x86_64__) && defined(__GNUC__)
static
FORCEINLINE
struct
_TEB
*
WINAPI
NtCurrentTeb
(
void
)
{
...
...
@@ -2432,17 +2443,6 @@ static FORCEINLINE struct _TEB * WINAPI NtCurrentTeb(void)
{
return
(
struct
_TEB
*
)(
ULONG_PTR
)
_MoveFromCoprocessor
(
15
,
0
,
13
,
0
,
2
);
}
#elif defined(__aarch64__) && defined(__GNUC__)
register
struct
_TEB
*
__wine_current_teb
__asm__
(
"x18"
);
static
FORCEINLINE
struct
_TEB
*
WINAPI
NtCurrentTeb
(
void
)
{
return
__wine_current_teb
;
}
#elif defined(__aarch64__) && defined(_MSC_VER)
static
FORCEINLINE
struct
_TEB
*
WINAPI
NtCurrentTeb
(
void
)
{
return
(
struct
_TEB
*
)
__getReg
(
18
);
}
#elif !defined(RC_INVOKED)
# error You must define NtCurrentTeb() for your architecture
#endif
...
...
@@ -6902,6 +6902,13 @@ static FORCEINLINE void MemoryBarrier(void)
InterlockedOr
(
&
dummy
,
0
);
}
#elif defined(__aarch64__) || defined(__arm64ec__)
static
FORCEINLINE
void
MemoryBarrier
(
void
)
{
__dmb
(
_ARM64_BARRIER_SY
);
}
#elif defined(__x86_64__)
#pragma intrinsic(__faststorefence)
...
...
@@ -6919,13 +6926,6 @@ static FORCEINLINE void MemoryBarrier(void)
__dmb
(
_ARM_BARRIER_SY
);
}
#elif defined(__aarch64__)
static
FORCEINLINE
void
MemoryBarrier
(
void
)
{
__dmb
(
_ARM64_BARRIER_SY
);
}
#endif
/* __i386__ */
/* Since Visual Studio 2012, volatile accesses do not always imply acquire and
...
...
@@ -7191,7 +7191,7 @@ unsigned char _InterlockedCompareExchange128(volatile __int64 *, __int64, __int6
static
FORCEINLINE
unsigned
char
InterlockedCompareExchange128
(
volatile
__int64
*
dest
,
__int64
xchg_high
,
__int64
xchg_low
,
__int64
*
compare
)
{
#if
def __x86_64__
#if
defined(__x86_64__) && !defined(__arm64ec__)
unsigned
char
ret
;
__asm__
__volatile__
(
"lock cmpxchg16b %0; setz %b2"
:
"=m"
(
dest
[
0
]),
"=m"
(
dest
[
1
]),
"=r"
(
ret
),
...
...
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