diff --git a/sdk/lib/crt/crt.cmake b/sdk/lib/crt/crt.cmake index 71ae85df2f3..3cde0ccc43d 100644 --- a/sdk/lib/crt/crt.cmake +++ b/sdk/lib/crt/crt.cmake @@ -23,7 +23,6 @@ list(APPEND CRT_SOURCE list(APPEND CRT_ASM_SOURCE ${CRT_EXCEPT_ASM_SOURCE} - ${CRT_SETJMP_ASM_SOURCE} ${CRT_STDLIB_ASM_SOURCE} ${CRT_STRING_ASM_SOURCE} ${CRT_WINE_ASM_SOURCE} diff --git a/sdk/lib/crt/libcntpr.cmake b/sdk/lib/crt/libcntpr.cmake index 4105cbe4155..470cc5854a6 100644 --- a/sdk/lib/crt/libcntpr.cmake +++ b/sdk/lib/crt/libcntpr.cmake @@ -18,7 +18,6 @@ list(APPEND LIBCNTPR_ASM_SOURCE ${LIBCNTPR_FLOAT_ASM_SOURCE} ${LIBCNTPR_MATH_ASM_SOURCE} ${LIBCNTPR_MEM_ASM_SOURCE} - ${LIBCNTPR_SETJMP_ASM_SOURCE} ${LIBCNTPR_STRING_ASM_SOURCE} ) diff --git a/sdk/lib/crt/setjmp/amd64/setjmp.s b/sdk/lib/crt/setjmp/amd64/setjmp.s deleted file mode 100644 index 6aee6dbe07a..00000000000 --- a/sdk/lib/crt/setjmp/amd64/setjmp.s +++ /dev/null @@ -1,169 +0,0 @@ -/* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS system libraries - * PURPOSE: Implementation of _setjmp/longjmp - * FILE: lib/sdk/crt/setjmp/amd64/setjmp.s - * PROGRAMMER: Timo Kreuzer (timo.kreuzer@reactos.org) - */ - -/* INCLUDES ******************************************************************/ - -#include -#include - -#define JUMP_BUFFER_Frame 0 /* 0x00 */ -#define JUMP_BUFFER_Rbx 8 /* 0x08 */ -#define JUMP_BUFFER_Rsp 16 /* 0x10 */ -#define JUMP_BUFFER_Rbp 24 /* 0x18 */ -#define JUMP_BUFFER_Rsi 32 /* 0x20 */ -#define JUMP_BUFFER_Rdi 40 /* 0x28 */ -#define JUMP_BUFFER_R12 48 /* 0x30 */ -#define JUMP_BUFFER_R13 56 /* 0x38 */ -#define JUMP_BUFFER_R14 64 /* 0x40 */ -#define JUMP_BUFFER_R15 72 /* 0x48 */ -#define JUMP_BUFFER_Rip 80 /* 0x50 */ -#define JUMP_BUFFER_Spare 88 /* 0x58 */ -#define JUMP_BUFFER_Xmm6 96 /* 0x60 */ -#define JUMP_BUFFER_Xmm7 112 /* 0x70 */ -#define JUMP_BUFFER_Xmm8 128 /* 0x80 */ -#define JUMP_BUFFER_Xmm9 144 /* 0x90 */ -#define JUMP_BUFFER_Xmm10 160 /* 0xa0 */ -#define JUMP_BUFFER_Xmm11 176 /* 0xb0 */ -#define JUMP_BUFFER_Xmm12 192 /* 0xc0 */ -#define JUMP_BUFFER_Xmm13 208 /* 0xd0 */ -#define JUMP_BUFFER_Xmm14 224 /* 0xe0 */ -#define JUMP_BUFFER_Xmm15 240 /* 0xf0 */ - - -/* FUNCTIONS ******************************************************************/ -.code64 - -/*! - * int _setjmp(jmp_buf env); - * - * \param - jmp_buf env - * \return 0 - * \note Sets up the jmp_buf - */ -PUBLIC _setjmp -FUNC _setjmp - - .endprolog - - /* Load rsp as it was before the call into rax */ - lea rax, [rsp + 8] - /* Load return address into r8 */ - mov r8, [rsp] - mov qword ptr [rcx + JUMP_BUFFER_Frame], 0 - mov [rcx + JUMP_BUFFER_Rbx], rbx - mov [rcx + JUMP_BUFFER_Rbp], rbp - mov [rcx + JUMP_BUFFER_Rsi], rsi - mov [rcx + JUMP_BUFFER_Rdi], rdi - mov [rcx + JUMP_BUFFER_R12], r12 - mov [rcx + JUMP_BUFFER_R13], r13 - mov [rcx + JUMP_BUFFER_R14], r14 - mov [rcx + JUMP_BUFFER_R15], r15 - mov [rcx + JUMP_BUFFER_Rsp], rax - mov [rcx + JUMP_BUFFER_Rip], r8 - movdqa [rcx + JUMP_BUFFER_Xmm6], xmm6 - movdqa [rcx + JUMP_BUFFER_Xmm7], xmm7 - movdqa [rcx + JUMP_BUFFER_Xmm8], xmm8 - movdqa [rcx + JUMP_BUFFER_Xmm9], xmm9 - movdqa [rcx + JUMP_BUFFER_Xmm10], xmm10 - movdqa [rcx + JUMP_BUFFER_Xmm11], xmm11 - movdqa [rcx + JUMP_BUFFER_Xmm12], xmm12 - movdqa [rcx + JUMP_BUFFER_Xmm13], xmm13 - movdqa [rcx + JUMP_BUFFER_Xmm14], xmm14 - movdqa [rcx + JUMP_BUFFER_Xmm15], xmm15 - xor rax, rax - ret -ENDFUNC - -/*! - * int _setjmpex(jmp_buf _Buf,void *_Ctx); - * - * \param - jmp_buf env - * \param - frame - * \return 0 - * \note Sets up the jmp_buf - */ -PUBLIC _setjmpex -FUNC _setjmpex - - .endprolog - - /* Load rsp as it was before the call into rax */ - lea rax, [rsp + 8] - /* Load return address into r8 */ - mov r8, [rsp] - mov [rcx + JUMP_BUFFER_Frame], rdx - mov [rcx + JUMP_BUFFER_Rbx], rbx - mov [rcx + JUMP_BUFFER_Rbp], rbp - mov [rcx + JUMP_BUFFER_Rsi], rsi - mov [rcx + JUMP_BUFFER_Rdi], rdi - mov [rcx + JUMP_BUFFER_R12], r12 - mov [rcx + JUMP_BUFFER_R13], r13 - mov [rcx + JUMP_BUFFER_R14], r14 - mov [rcx + JUMP_BUFFER_R15], r15 - mov [rcx + JUMP_BUFFER_Rsp], rax - mov [rcx + JUMP_BUFFER_Rip], r8 - movdqa [rcx + JUMP_BUFFER_Xmm6], xmm6 - movdqa [rcx + JUMP_BUFFER_Xmm7], xmm7 - movdqa [rcx + JUMP_BUFFER_Xmm8], xmm8 - movdqa [rcx + JUMP_BUFFER_Xmm9], xmm9 - movdqa [rcx + JUMP_BUFFER_Xmm10], xmm10 - movdqa [rcx + JUMP_BUFFER_Xmm11], xmm11 - movdqa [rcx + JUMP_BUFFER_Xmm12], xmm12 - movdqa [rcx + JUMP_BUFFER_Xmm13], xmm13 - movdqa [rcx + JUMP_BUFFER_Xmm14], xmm14 - movdqa [rcx + JUMP_BUFFER_Xmm15], xmm15 - xor rax, rax - ret -ENDFUNC - - -/*! - * void longjmp(jmp_buf env, int value); - * - * \param - jmp_buf setup by _setjmp - * \param - int value to return - * \return Doesn't return - * \note Non-local goto - */ -PUBLIC longjmp -FUNC longjmp - - .endprolog - - // FIXME: handle frame - - mov rbx, [rcx + JUMP_BUFFER_Rbx] - mov rbp, [rcx + JUMP_BUFFER_Rbp] - mov rsi, [rcx + JUMP_BUFFER_Rsi] - mov rdi, [rcx + JUMP_BUFFER_Rdi] - mov r12, [rcx + JUMP_BUFFER_R12] - mov r13, [rcx + JUMP_BUFFER_R13] - mov r14, [rcx + JUMP_BUFFER_R14] - mov r15, [rcx + JUMP_BUFFER_R15] - mov rsp, [rcx + JUMP_BUFFER_Rsp] - mov r8, [rcx + JUMP_BUFFER_Rip] - movdqa xmm6, [rcx + JUMP_BUFFER_Xmm6] - movdqa xmm7, [rcx + JUMP_BUFFER_Xmm7] - movdqa xmm8, [rcx + JUMP_BUFFER_Xmm8] - movdqa xmm9, [rcx + JUMP_BUFFER_Xmm9] - movdqa xmm10, [rcx + JUMP_BUFFER_Xmm10] - movdqa xmm11, [rcx + JUMP_BUFFER_Xmm11] - movdqa xmm12, [rcx + JUMP_BUFFER_Xmm12] - movdqa xmm13, [rcx + JUMP_BUFFER_Xmm13] - movdqa xmm14, [rcx + JUMP_BUFFER_Xmm14] - movdqa xmm15, [rcx + JUMP_BUFFER_Xmm15] - - /* return param2 or 1 if it was 0 */ - mov rax, rdx - test rax, rax - jnz l2 - inc rax -l2: jmp r8 -ENDFUNC - -END diff --git a/sdk/lib/crt/setjmp/arm/setjmp.s b/sdk/lib/crt/setjmp/arm/setjmp.s deleted file mode 100644 index 47155afe09a..00000000000 --- a/sdk/lib/crt/setjmp/arm/setjmp.s +++ /dev/null @@ -1,64 +0,0 @@ -/* - * COPYRIGHT: BSD - See COPYING.ARM in the top level directory - * PROJECT: ReactOS CRT library - * PURPOSE: Implementation of _setjmp / longjmp - * PROGRAMMER: Timo Kreuzer (timo.kreuzer@reactos.org) - */ - -/* INCLUDES ******************************************************************/ - -#include - -/* CODE **********************************************************************/ - TEXTAREA - - LEAF_ENTRY _setjmpex - - /* Store r1 (->Frame) and r4 - r11 */ - stmia r0!, {r1,r4-r11} - - /* Store sp (->Sp), lr (->Pc), fp (->Fpscr) */ - mov r1, sp - stmia r0!, {r1,lr,fp} - - /* Store NEON registers */ - vst1.64 {d0}, [r0]! - vst1.64 {d1}, [r0]! - vst1.64 {d2}, [r0]! - vst1.64 {d3}, [r0]! - vst1.64 {d4}, [r0]! - vst1.64 {d5}, [r0]! - vst1.64 {d6}, [r0]! - vst1.64 {d7}, [r0]! - - /* Return 0 */ - mov r0, #0 - bx lr - LEAF_END _setjmpex - - IMPORT _setjmp, WEAK _setjmpex - IMPORT setjmp, WEAK _setjmpex - - LEAF_ENTRY longjmp - - ldmia r0!, {r1,r4-r11} - ldmia r0!, {r1,lr,fp} - mov sp, r1 - - /* Load NEON registers */ - vld1.64 {d0}, [r0]! - vld1.64 {d1}, [r0]! - vld1.64 {d2}, [r0]! - vld1.64 {d3}, [r0]! - vld1.64 {d4}, [r0]! - vld1.64 {d5}, [r0]! - vld1.64 {d6}, [r0]! - vld1.64 {d7}, [r0]! - - /* Return 1 */ - mov r0, #1 - bx lr - LEAF_END longjmp - - END -/* EOF */ diff --git a/sdk/lib/crt/setjmp/i386/setjmp.s b/sdk/lib/crt/setjmp/i386/setjmp.s deleted file mode 100644 index 84bdb669705..00000000000 --- a/sdk/lib/crt/setjmp/i386/setjmp.s +++ /dev/null @@ -1,113 +0,0 @@ -/* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS system libraries - * PURPOSE: Implementation of _setjmp/longjmp - * FILE: lib/sdk/crt/setjmp/i386/setjmp.s - * PROGRAMMER: Ge van Geldorp (ge@gse.nl) - * NOTES: Implementation is not complete, see Wine source for a more - * complete implementation - */ - -#include - -#define JB_BP 0 -#define JB_BX 1 -#define JB_DI 2 -#define JB_SI 3 -#define JB_SP 4 -#define JB_IP 5 - -#define PCOFF 0 - -#define JMPBUF 4 - -.code -/* - * int - * _setjmp(jmp_buf env); - * - * Parameters: - * [ESP+04h] - jmp_buf env - * Registers: - * None - * Returns: - * 0 - * Notes: - * Sets up the jmp_buf - */ -PUBLIC __setjmp -__setjmp: - xor eax, eax - mov edx, JMPBUF[esp] - - /* Save registers. */ - mov [edx + JB_BP*4], ebp /* Save caller's frame pointer. */ - mov [edx + JB_BX*4], ebx - mov [edx + JB_DI*4], edi - mov [edx + JB_SI*4], esi - lea ecx, JMPBUF[esp] /* Save SP as it will be after we return. */ - mov [edx + JB_SP*4], ecx - mov ecx, PCOFF[esp] /* Save PC we are returning to now. */ - mov [edx + JB_IP*4], ecx - ret - -/* - * int - * _setjmp3(jmp_buf env, int nb_args, ...); - * - * Parameters: - * [ESP+04h] - jmp_buf env - * Registers: - * None - * Returns: - * 0 - * Notes: - * Sets up the jmp_buf - */ -PUBLIC __setjmp3 -__setjmp3: - xor eax, eax - mov edx, JMPBUF[esp] - - /* Save registers. */ - mov [edx + JB_BP*4], ebp /* Save caller's frame pointer. */ - mov [edx + JB_BX*4], ebx - mov [edx + JB_DI*4], edi - mov [edx + JB_SI*4], esi - lea ecx, JMPBUF[esp] /* Save SP as it will be after we return. */ - mov [edx + JB_SP*4], ecx - mov ecx, PCOFF[esp] /* Save PC we are returning to now. */ - mov [edx + JB_IP*4], ecx - ret - -/* - * void - * longjmp(jmp_buf env, int value); - * - * Parameters: - * [ESP+04h] - jmp_buf setup by _setjmp - * [ESP+08h] - int value to return - * Registers: - * None - * Returns: - * Doesn't return - * Notes: - * Non-local goto - */ -PUBLIC _longjmp -_longjmp: - mov ecx, JMPBUF[esp] /* User's jmp_buf in %ecx. */ - - mov eax, [esp + 8] /* Second argument is return value. */ - /* Save the return address now. */ - mov edx, [ecx + JB_IP*4] - /* Restore registers. */ - mov ebp, [ecx + JB_BP*4] - mov ebx, [ecx + JB_BX*4] - mov edi, [ecx + JB_DI*4] - mov esi, [ecx + JB_SI*4] - mov esp, [ecx + JB_SP*4] - /* Jump to saved PC. */ - jmp edx - -END diff --git a/sdk/lib/crt/setjmp/setjmp.cmake b/sdk/lib/crt/setjmp/setjmp.cmake deleted file mode 100644 index 05ff378f7b5..00000000000 --- a/sdk/lib/crt/setjmp/setjmp.cmake +++ /dev/null @@ -1,18 +0,0 @@ - -if(ARCH STREQUAL "i386") - list(APPEND LIBCNTPR_SETJMP_ASM_SOURCE - setjmp/i386/setjmp.s - ) -elseif(ARCH STREQUAL "amd64") - list(APPEND LIBCNTPR_SETJMP_ASM_SOURCE - setjmp/amd64/setjmp.s - ) -elseif(ARCH STREQUAL "arm") - list(APPEND LIBCNTPR_SETJMP_ASM_SOURCE - setjmp/arm/setjmp.s - ) -endif() - -list(APPEND CRT_SETJMP_ASM_SOURCE - ${LIBCNTPR_SETJMP_ASM_SOURCE} -)