| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- ;-------------------------------------------------------------------------------------------------------
- ; Copyright (C) Microsoft. All rights reserved.
- ; Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- ;-------------------------------------------------------------------------------------------------------
- OPT 2 ; disable listing
- #include "ksarm.h"
- OPT 1 ; re-enable listing
- TTL Lib\Backend\arm\LinearScanMdA.asm
- EXPORT |?SaveAllRegistersAndBailOut@LinearScanMD@@SAXQAVBailOutRecord@@@Z|
- EXPORT |?SaveAllRegistersAndBranchBailOut@LinearScanMD@@SAXQAVBranchBailOutRecord@@H@Z|
- ; BailOutRecord::BailOut(BailOutRecord const * bailOutRecord)
- IMPORT |?BailOut@BailOutRecord@@SAPAXPBV1@@Z|
- ; BranchBailOutRecord::BailOut(BranchBailOutRecord const * bailOutRecord, BOOL cond)
- IMPORT |?BailOut@BranchBailOutRecord@@SAPAXPBV1@H@Z|
- TEXTAREA
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; LinearScanMD::SaveAllRegistersAndBailOut(BailOutRecord *const bailOutRecord)
- NESTED_ENTRY ?SaveAllRegistersAndBailOut@LinearScanMD@@SAXQAVBailOutRecord@@@Z
- ; r0 == bailOutRecord
- ; lr == return address
- ; Save all registers except the above, which would have already been saved by jitted code if necessary
- ldr r12, [r0] ; bailOutRecord->globalBailOutRecordDataTable
- ldr r12, [r12] ; bailOutRecord->globalBailOutRecordDataTable->registerSaveSpace
- add r12, r12, #192 ; &reinterpret_cast<byte *>(bailOutRecord->globalBailOutRecordDataTable->registerSaveSpace)[(RegD0 - 1) * 4 + VFP_REGCOUNT * 8]
- vstmdb r12!, {d0 - d15}
- sub r12, r12, #16 ; skip r12-r15
- stmdb r12!, {r1 - r11}
- b |?BailOut@BailOutRecord@@SAPAXPBV1@@Z|
- NESTED_END
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; LinearScanMD::SaveAllRegistersAndBranchBailOut(BranchBailOutRecord *const bailOutRecord, const BOOL condition)
- NESTED_ENTRY ?SaveAllRegistersAndBranchBailOut@LinearScanMD@@SAXQAVBranchBailOutRecord@@H@Z
- ; r0 == bailOutRecord
- ; r1 == condition
- ; lr == return address
- ; Save all registers except the above, which would have already been saved by jitted code if necessary
- ldr r12, [r0] ; bailOutRecord->globalBailOutRecordDataTable
- ldr r12, [r12] ; bailOutRecord->globalBailOutRecordDataTable->registerSaveSpace
- add r12, r12, #192 ; &bailOutRecord->globalBailOutRecordDataTable->registerSaveSpace[(RegD0 - 1) * 4 + VFP_REGCOUNT * 8]
- vstmdb r12!, {d0 - d15}
- sub r12, r12, #16 ; skip r12-r15
- stmdb r12!, {r2 - r11}
- b |?BailOut@BranchBailOutRecord@@SAPAXPBV1@H@Z|
- NESTED_END
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- END
|