zig.h: Use zig_*_windows_teb() inline assembly with TinyCC and slimcc.

This commit is contained in:
Alex Rønne Petersen 2024-12-02 11:07:17 +01:00
parent 204df19d79
commit 37538f19cd
No known key found for this signature in database

View file

@ -4002,7 +4002,7 @@ static inline void* zig_thumb_windows_teb(void) {
void* teb = 0;
#if defined(zig_msvc)
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));
#endif
return teb;
@ -4014,7 +4014,7 @@ static inline void* zig_aarch64_windows_teb(void) {
void* teb = 0;
#if defined(zig_msvc)
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));
#endif
return teb;
@ -4026,7 +4026,7 @@ static inline void* zig_x86_windows_teb(void) {
void* teb = 0;
#if defined(zig_msvc)
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));
#endif
return teb;
@ -4038,7 +4038,7 @@ static inline void* zig_x86_64_windows_teb(void) {
void* teb = 0;
#if defined(zig_msvc)
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));
#endif
return teb;