mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Better (?) support for Windows TIB.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65867 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
904af4aef2
commit
d97c928067
4 changed files with 40 additions and 17 deletions
|
@ -14,28 +14,38 @@
|
|||
; to touch these in order to pass them to the destination coroutine.
|
||||
|
||||
@coroutine_transfer@8 proc
|
||||
; Save caller registers
|
||||
; Save the thread information block:
|
||||
push fs:[0]
|
||||
push fs:[4]
|
||||
push fs:[8]
|
||||
|
||||
; Save caller registers:
|
||||
push ebp
|
||||
push ebx
|
||||
push edi
|
||||
push esi
|
||||
|
||||
; Save caller stack pointer
|
||||
; Save caller stack pointer:
|
||||
mov dword ptr [ecx], esp
|
||||
|
||||
; Restore callee stack pointer
|
||||
; Restore callee stack pointer:
|
||||
mov esp, dword ptr [edx]
|
||||
|
||||
; Restore callee stack
|
||||
; Restore callee stack:
|
||||
pop esi
|
||||
pop edi
|
||||
pop ebx
|
||||
pop ebp
|
||||
|
||||
; Save the first argument as the return value
|
||||
; Restore the thread information block:
|
||||
pop fs:[8]
|
||||
pop fs:[4]
|
||||
pop fs:[0]
|
||||
|
||||
; Save the first argument as the return value:
|
||||
mov eax, dword ptr ecx
|
||||
|
||||
; Jump to the address on the stack
|
||||
; Jump to the address on the stack:
|
||||
ret
|
||||
@coroutine_transfer@8 endp
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue