blob: 2d2ae8bc55f6379ce19570e6dada6edae3d79449 [file]
;-------------------------------------------------------------------------------------------------------
; 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