Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,21 @@ if(FIBER_OBJECT)
set_target_properties(fiber PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif()

# Set C standard on the target so it applies in both standalone and subdirectory
# mode. The standalone code path above sets CMAKE_C_STANDARD, but that does not
# propagate when fiber is consumed as a subdirectory.
set_property(TARGET fiber PROPERTY C_STANDARD 99)
set_property(TARGET fiber PROPERTY C_STANDARD_REQUIRED ON)
set_property(TARGET fiber PROPERTY C_EXTENSIONS OFF)

if(CMU_COMP_MSVC AND NOT CMU_COMP_GNUC)
# Pure MSVC (not clang-cl) needs /std:c11 to define __STDC_VERSION__, and
# never defines __STDC__ without /Za. Both are required by cxx-header-utils
# (hu/lang.h) for C language detection.
set_property(TARGET fiber PROPERTY C_STANDARD 11)
target_compile_definitions(fiber PRIVATE __STDC__=1)
endif()

if(FIBER_STANDALONE_PROJECT)
enable_testing()
add_subdirectory(test)
Expand Down
2 changes: 1 addition & 1 deletion src/fiber.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
# include <unistd.h>
# if HU_C_11_P
# define ALIGNED_ALLOC aligned_alloc
# elif HU_OS_BSD_P || defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112L
# elif HU_OS_BSD_P || HU_OS_APPLE_P || defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112L
# define USE_POSIX_MEMALIGN 1
# else
# include <malloc.h>
Expand Down
76 changes: 38 additions & 38 deletions src/fiber_asm_amd64_win64.asm
Original file line number Diff line number Diff line change
Expand Up @@ -8,50 +8,50 @@ fiber_asm_switch PROC

mov [rcx], rsp
mov rsp, [rdx]
mov [rcx+0x8], rax
mov rax, [rdx+0x8]
mov [rcx+0x10], rbx
mov rbx, [rdx+0x10]
mov [rcx+0x18], rbp
mov rbp, [rdx+0x18]
mov [rcx+0x20], rdi
mov rdi, [rdx+0x20]
mov [rcx+0x28], rsi
mov rsi, [rdx+0x28]
mov [rcx+0x30], r12
mov r12, [rdx+0x30]
mov [rcx+0x38], r13
mov r13, [rdx+0x38]
mov [rcx+0x40], r14
mov r14, [rdx+0x40]
mov [rcx+0x48], r15
mov r15, [rdx+0x48]
mov [rcx+8h], rax
mov rax, [rdx+8h]
mov [rcx+10h], rbx
mov rbx, [rdx+10h]
mov [rcx+18h], rbp
mov rbp, [rdx+18h]
mov [rcx+20h], rdi
mov rdi, [rdx+20h]
mov [rcx+28h], rsi
mov rsi, [rdx+28h]
mov [rcx+30h], r12
mov r12, [rdx+30h]
mov [rcx+38h], r13
mov r13, [rdx+38h]
mov [rcx+40h], r14
mov r14, [rdx+40h]
mov [rcx+48h], r15
mov r15, [rdx+48h]

lea rcx, [rcx+0x58]
lea rcx, [rcx+58h]
and rcx, -16
lea rdx, [rdx+0x58]
lea rdx, [rdx+58h]
and rdx, -16

movaps [rcx], xmm6
movaps xmm6, [rdx]
movaps [rcx+0x10], xmm7
movaps xmm7, [rdx+0x10]
movaps [rcx+0x20], xmm8
movaps xmm8, [rdx+0x20]
movaps [rcx+0x30], xmm9
movaps xmm9, [rdx+0x30]
movaps [rcx+0x40], xmm10
movaps xmm10, [rdx+0x40]
movaps [rcx+0x50], xmm11
movaps xmm11, [rdx+0x50]
movaps [rcx+0x60], xmm12
movaps xmm12, [rdx+0x60]
movaps [rcx+0x70], xmm13
movaps xmm13, [rdx+0x70]
movaps [rcx+0x80], xmm14
movaps xmm14, [rdx+0x80]
movaps [rcx+0x90], xmm15
movaps xmm15, [rdx+0x90]
movaps [rcx+10h], xmm7
movaps xmm7, [rdx+10h]
movaps [rcx+20h], xmm8
movaps xmm8, [rdx+20h]
movaps [rcx+30h], xmm9
movaps xmm9, [rdx+30h]
movaps [rcx+40h], xmm10
movaps xmm10, [rdx+40h]
movaps [rcx+50h], xmm11
movaps xmm11, [rdx+50h]
movaps [rcx+60h], xmm12
movaps xmm12, [rdx+60h]
movaps [rcx+70h], xmm13
movaps xmm13, [rdx+70h]
movaps [rcx+80h], xmm14
movaps xmm14, [rdx+80h]
movaps [rcx+90h], xmm15
movaps xmm15, [rdx+90h]

jmp rax
fiber_asm_switch ENDP
Expand Down