Commit df6cacf6 authored by Maciej Suminski's avatar Maciej Suminski

Windows build fix.

parent fdf9898e
...@@ -5,16 +5,17 @@ ...@@ -5,16 +5,17 @@
#if __i386__ #if __i386__
#include "jump_i386_sysv_elf_gas.S"
#include "make_i386_sysv_elf_gas.S"
#ifdef __WIN32__ #ifdef __WIN32__
#include "jump_i386_pe_gas.S" #include "jump_i386_pe_gas.S"
#include "make_i386_pe_gas.S" #include "make_i386_pe_gas.S"
#endif #else
#include "jump_i386_sysv_elf_gas.S"
#include "make_i386_sysv_elf_gas.S"
#endif
#elif __x86_64__ #elif __x86_64__
#include "jump_x86_64_sysv_elf_gas.S" #include "jump_x86_64_sysv_elf_gas.S"
#include "make_x86_64_sysv_elf_gas.S" #include "make_x86_64_sysv_elf_gas.S"
#endif #endif
...@@ -4,54 +4,53 @@ ...@@ -4,54 +4,53 @@
http://www.boost.org/LICENSE_1_0.txt) http://www.boost.org/LICENSE_1_0.txt)
*/ */
.global _jump_fcontext
.text .text
.globl jump_fcontext
.align 2 .align 2
.type jump_fcontext,@function
jump_fcontext: _jump_fcontext:
mov 0x4(%esp),%ecx mov 0x4(%esp),%ecx
mov %edi,(%ecx) mov %edi,(%ecx)
mov %esi,0x4(%ecx) mov %esi,0x4(%ecx)
mov %ebx,0x8(%ecx) mov %ebx,0x8(%ecx)
mov %ebp,0xc(%ecx) mov %ebp,0xc(%ecx)
mov %fs:0x18,%edx mov %fs:0x18,%edx
mov (%edx),%eax mov (%edx),%eax
mov %eax,0x24(%ecx) mov %eax,0x24(%ecx)
mov 0x4(%edx),%eax mov 0x4(%edx),%eax
mov %eax,0x18(%ecx) mov %eax,0x18(%ecx)
mov 0x8(%edx),%eax mov 0x8(%edx),%eax
mov %eax,0x20(%ecx) mov %eax,0x20(%ecx)
mov 0x10(%edx),%eax mov 0x10(%edx),%eax
mov %eax,0x28(%ecx) mov %eax,0x28(%ecx)
lea 0x4(%esp),%eax lea 0x4(%esp),%eax
mov %eax,0x10(%ecx) mov %eax,0x10(%ecx)
mov (%esp),%eax mov (%esp),%eax
mov %eax,0x14(%ecx) mov %eax,0x14(%ecx)
mov 0x8(%esp),%edx mov 0x8(%esp),%edx
mov (%edx),%edi mov (%edx),%edi
mov 0x4(%edx),%esi mov 0x4(%edx),%esi
mov 0x8(%edx),%ebx mov 0x8(%edx),%ebx
mov 0xc(%edx),%ebp mov 0xc(%edx),%ebp
mov 0x10(%esp),%eax mov 0x10(%esp),%eax
test %eax,%eax test %eax,%eax
je jump_fcontext+0x5f je _jump_fcontext+0x5f
stmxcsr 0x2c(%ecx) stmxcsr 0x2c(%ecx)
fnstcw 0x30(%ecx) fnstcw 0x30(%ecx)
ldmxcsr 0x2c(%edx) ldmxcsr 0x2c(%edx)
fldcw 0x30(%edx) fldcw 0x30(%edx)
mov %edx,%ecx mov %edx,%ecx
mov %fs:0x18,%edx mov %fs:0x18,%edx
mov 0x24(%ecx),%eax mov 0x24(%ecx),%eax
mov %eax,(%edx) mov %eax,(%edx)
mov 0x18(%ecx),%eax mov 0x18(%ecx),%eax
mov %eax,0x4(%edx) mov %eax,0x4(%edx)
mov 0x20(%ecx),%eax mov 0x20(%ecx),%eax
mov %eax,0x8(%edx) mov %eax,0x8(%edx)
mov 0x28(%ecx),%eax mov 0x28(%ecx),%eax
mov %eax,0x10(%edx) mov %eax,0x10(%edx)
mov 0xc(%esp),%eax mov 0xc(%esp),%eax
mov 0x10(%ecx),%esp mov 0x10(%ecx),%esp
mov %eax,0x4(%esp) mov %eax,0x4(%esp)
mov 0x14(%ecx),%ecx mov 0x14(%ecx),%ecx
jmp *%ecx jmp *%ecx
...@@ -4,12 +4,11 @@ ...@@ -4,12 +4,11 @@
http://www.boost.org/LICENSE_1_0.txt) http://www.boost.org/LICENSE_1_0.txt)
*/ */
.global _make_fcontext
.text .text
.globl make_fcontext
.align 2 .align 2
.type make_fcontext,@function
make_fcontext: _make_fcontext:
mov 0x4(%esp),%eax mov 0x4(%esp),%eax
lea -0x34(%eax),%eax lea -0x34(%eax),%eax
and $0xfffffff0,%eax and $0xfffffff0,%eax
...@@ -31,10 +30,10 @@ make_fcontext: ...@@ -31,10 +30,10 @@ make_fcontext:
mov %fs:0x18,%ecx mov %fs:0x18,%ecx
mov (%ecx),%edx mov (%ecx),%edx
inc %edx inc %edx
je make_fcontext+0x4c // <_make_fcontext+0x4c> je _make_fcontext+0x4c // <_make_fcontext+0x4c>
dec %edx dec %edx
xchg %edx,%ecx xchg %edx,%ecx
jmp make_fcontext+0x42 // <_make_fcontext+0x42> jmp _make_fcontext+0x42 // <_make_fcontext+0x42>
mov 0x4(%ecx),%ecx mov 0x4(%ecx),%ecx
mov 0x10(%eax),%edx mov 0x10(%eax),%edx
mov %ecx,0x18(%edx) mov %ecx,0x18(%edx)
...@@ -45,10 +44,7 @@ make_fcontext: ...@@ -45,10 +44,7 @@ make_fcontext:
ret ret
finish: finish:
xor %eax,%eax xor %eax,%eax
mov %eax,(%esp) mov %eax,(%esp)
call finish+0xa call finish+0xa
hlt hlt
.size make_fcontext,.-make_fcontext
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment