mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-07 22:34:28 +00:00
zig.h: Use zig_*_windows_teb() inline assembly with TinyCC and slimcc.
This commit is contained in:
parent
204df19d79
commit
37538f19cd
1 changed files with 4 additions and 4 deletions
|
|
@ -4002,7 +4002,7 @@ static inline void* zig_thumb_windows_teb(void) {
|
||||||
void* teb = 0;
|
void* teb = 0;
|
||||||
#if defined(zig_msvc)
|
#if defined(zig_msvc)
|
||||||
teb = (void*)_MoveFromCoprocessor(15, 0, 13, 0, 2);
|
teb = (void*)_MoveFromCoprocessor(15, 0, 13, 0, 2);
|
||||||
#elif defined(zig_gnuc)
|
#elif defined(zig_gnuc) || defined(zig_tinyc) || defined(zig_slimcc)
|
||||||
__asm__ ("mrc p15, 0, %[ptr], c13, c0, 2" : [ptr] "=r" (teb));
|
__asm__ ("mrc p15, 0, %[ptr], c13, c0, 2" : [ptr] "=r" (teb));
|
||||||
#endif
|
#endif
|
||||||
return teb;
|
return teb;
|
||||||
|
|
@ -4014,7 +4014,7 @@ static inline void* zig_aarch64_windows_teb(void) {
|
||||||
void* teb = 0;
|
void* teb = 0;
|
||||||
#if defined(zig_msvc)
|
#if defined(zig_msvc)
|
||||||
teb = (void*)__readx18qword(0x0);
|
teb = (void*)__readx18qword(0x0);
|
||||||
#elif defined(zig_gnuc)
|
#elif defined(zig_gnuc) || defined(zig_tinyc) || defined(zig_slimcc)
|
||||||
__asm__ ("mov %[ptr], x18" : [ptr] "=r" (teb));
|
__asm__ ("mov %[ptr], x18" : [ptr] "=r" (teb));
|
||||||
#endif
|
#endif
|
||||||
return teb;
|
return teb;
|
||||||
|
|
@ -4026,7 +4026,7 @@ static inline void* zig_x86_windows_teb(void) {
|
||||||
void* teb = 0;
|
void* teb = 0;
|
||||||
#if defined(zig_msvc)
|
#if defined(zig_msvc)
|
||||||
teb = (void*)__readfsdword(0x18);
|
teb = (void*)__readfsdword(0x18);
|
||||||
#elif defined(zig_gnuc)
|
#elif defined(zig_gnuc) || defined(zig_tinyc) || defined(zig_slimcc)
|
||||||
__asm__ ("movl %%fs:0x18, %[ptr]" : [ptr] "=r" (teb));
|
__asm__ ("movl %%fs:0x18, %[ptr]" : [ptr] "=r" (teb));
|
||||||
#endif
|
#endif
|
||||||
return teb;
|
return teb;
|
||||||
|
|
@ -4038,7 +4038,7 @@ static inline void* zig_x86_64_windows_teb(void) {
|
||||||
void* teb = 0;
|
void* teb = 0;
|
||||||
#if defined(zig_msvc)
|
#if defined(zig_msvc)
|
||||||
teb = (void*)__readgsqword(0x30);
|
teb = (void*)__readgsqword(0x30);
|
||||||
#elif defined(zig_gnuc)
|
#elif defined(zig_gnuc) || defined(zig_tinyc) || defined(zig_slimcc)
|
||||||
__asm__ ("movq %%gs:0x30, %[ptr]" : [ptr] "=r" (teb));
|
__asm__ ("movq %%gs:0x30, %[ptr]" : [ptr] "=r" (teb));
|
||||||
#endif
|
#endif
|
||||||
return teb;
|
return teb;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue