123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- ;/*
- ; Copyright (C) 2013 Digia Plc. and/or its subsidiary(-ies)
- ;
- ; Redistribution and use in source and binary forms, with or without
- ; modification, are permitted provided that the following conditions
- ; are met:
- ; 1. Redistributions of source code must retain the above copyright
- ; notice, this list of conditions and the following disclaimer.
- ; 2. Redistributions in binary form must reproduce the above copyright
- ; notice, this list of conditions and the following disclaimer in the
- ; documentation and/or other materials provided with the distribution.
- ;
- ; THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- ; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- ; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- ; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- ; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- ; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- ; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- ; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- ; OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- ; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- ; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- ;*/
- EXTERN cti_vm_throw : near
- PUBLIC ctiTrampoline
- PUBLIC ctiVMThrowTrampoline
- PUBLIC ctiOpThrowNotCaught
- _TEXT SEGMENT
- ctiTrampoline PROC
- ; Dump register parameters to their home address
- mov qword ptr[rsp+20h], r9
- mov qword ptr[rsp+18h], r8
- mov qword ptr[rsp+10h], rdx
- mov qword ptr[rsp+8h], rcx
- push rbp
- mov rbp, rsp
- push r12
- push r13
- push r14
- push r15
- push rbx
- ; Decrease rsp to point to the start of our JITStackFrame
- sub rsp, 58h
- mov r12, 512
- mov r14, 0FFFF000000000000h
- mov r15, 0FFFF000000000002h
- mov r13, r8
- call rcx
- add rsp, 58h
- pop rbx
- pop r15
- pop r14
- pop r13
- pop r12
- pop rbp
- ret
- ctiTrampoline ENDP
- ctiVMThrowTrampoline PROC
- mov rcx, rsp
- call cti_vm_throw
- int 3
- ctiVMThrowTrampoline ENDP
- ctiOpThrowNotCaught PROC
- add rsp, 58h
- pop rbx
- pop r15
- pop r14
- pop r13
- pop r12
- pop rbp
- ret
- ctiOpThrowNotCaught ENDP
- _TEXT ENDS
- END
|