summaryrefslogtreecommitdiff
path: root/src/vm/arm64/pinvokestubs.S
diff options
context:
space:
mode:
authorJiyoung Yun <jy910.yun@samsung.com>2017-04-13 14:17:19 +0900
committerJiyoung Yun <jy910.yun@samsung.com>2017-04-13 14:17:19 +0900
commita56e30c8d33048216567753d9d3fefc2152af8ac (patch)
tree7e5d979695fc4a431740982eb1cfecc2898b23a5 /src/vm/arm64/pinvokestubs.S
parent4b11dc566a5bbfa1378d6266525c281b028abcc8 (diff)
downloadcoreclr-a56e30c8d33048216567753d9d3fefc2152af8ac.tar.gz
coreclr-a56e30c8d33048216567753d9d3fefc2152af8ac.tar.bz2
coreclr-a56e30c8d33048216567753d9d3fefc2152af8ac.zip
Imported Upstream version 2.0.0.11353upstream/2.0.0.11353
Diffstat (limited to 'src/vm/arm64/pinvokestubs.S')
-rw-r--r--src/vm/arm64/pinvokestubs.S45
1 files changed, 13 insertions, 32 deletions
diff --git a/src/vm/arm64/pinvokestubs.S b/src/vm/arm64/pinvokestubs.S
index f6c33ba4c2..c87e8004f0 100644
--- a/src/vm/arm64/pinvokestubs.S
+++ b/src/vm/arm64/pinvokestubs.S
@@ -21,44 +21,28 @@
// $VASigCookieReg : register which contains the VASigCookie
// $SaveFPArgs : "Yes" or "No" . For varidic functions FP Args are not present in FP regs
// So need not save FP Args registers for vararg Pinvoke
-.macro PINVOKE_STUB FuncPrefix,VASigCookieReg,HiddenArg,SaveFPArgs
+.macro PINVOKE_STUB __PInvokeStubFuncName,__PInvokeGenStubFuncName,__PInvokeStubWorkerName,VASigCookieReg,HiddenArg,SaveFPArgs
-#if NOTYET
- GBLS __PInvokeStubFuncName
- GBLS __PInvokeGenStubFuncName
- GBLS __PInvokeStubWorkerName
- IF "\FuncPrefix" == "GenericPInvokeCalli"
-__PInvokeStubFuncName SETS "\FuncPrefix":CC:"Helper"
- ELSE
-__PInvokeStubFuncName SETS "\FuncPrefix":CC:"Stub"
- ENDIF
-__PInvokeGenStubFuncName SETS "\FuncPrefix":CC:"GenILStub"
-__PInvokeStubWorkerName SETS "\FuncPrefix":CC:"StubWorker"
-
- IF "\VASigCookieReg" == "x1"
-__PInvokeStubFuncName SETS "\__PInvokeStubFuncName":CC:"_RetBuffArg"
-__PInvokeGenStubFuncName SETS "\__PInvokeGenStubFuncName":CC:"_RetBuffArg"
- ENDIF
-
- NESTED_ENTRY \__PInvokeStubFuncName
+ NESTED_ENTRY \__PInvokeStubFuncName, _TEXT, NoHandler
// get the stub
ldr x9, [\VASigCookieReg, #VASigCookie__pNDirectILStub]
// if null goto stub generation
- cbz x9, %0
+ cbz x9, LOCAL_LABEL(\__PInvokeStubFuncName\()_0)
EPILOG_BRANCH_REG x9
-0
+LOCAL_LABEL(\__PInvokeStubFuncName\()_0):
+
EPILOG_BRANCH \__PInvokeGenStubFuncName
- NESTED_END
+ NESTED_END \__PInvokeStubFuncName, _TEXT
- NESTED_ENTRY \__PInvokeGenStubFuncName
+ NESTED_ENTRY \__PInvokeGenStubFuncName, _TEXT, NoHandler
PROLOG_WITH_TRANSITION_BLOCK 0, \SaveFPArgs
@@ -66,9 +50,9 @@ __PInvokeGenStubFuncName SETS "\__PInvokeGenStubFuncName":CC:"_RetBuffArg"
mov x2, \HiddenArg
// x1 = VaSigCookie
- IF "\VASigCookieReg" != "x1"
+ .ifnc \VASigCookieReg, x1
mov x1, \VASigCookieReg
- ENDIF
+ .endif
// x0 = pTransitionBlock
add x0, sp, #__PWTB_TransitionBlock
@@ -86,10 +70,7 @@ __PInvokeGenStubFuncName SETS "\__PInvokeGenStubFuncName":CC:"_RetBuffArg"
EPILOG_BRANCH \__PInvokeStubFuncName
- NESTED_END
-#else
- EMIT_BREAKPOINT
-#endif
+ NESTED_END \__PInvokeGenStubFuncName, _TEXT
.endm
// ------------------------------------------------------------------
@@ -100,7 +81,7 @@ __PInvokeGenStubFuncName SETS "\__PInvokeGenStubFuncName":CC:"_RetBuffArg"
// x0 = VASigCookie*
// x12 = MethodDesc *
//
-PINVOKE_STUB VarargPInvoke, x0, x12, 1
+PINVOKE_STUB VarargPInvokeStub, VarargPInvokeGenILStub, VarargPInvokeStubWorker, x0, x12, 0
// ------------------------------------------------------------------
@@ -111,7 +92,7 @@ PINVOKE_STUB VarargPInvoke, x0, x12, 1
// x15 = VASigCookie*
// x14 = Unmanaged target
//
-PINVOKE_STUB GenericPInvokeCalli, x15, x14, 1
+PINVOKE_STUB GenericPInvokeCalliHelper, GenericPInvokeCalliGenILStub, GenericPInvokeCalliStubWorker, x15, x14, 1
// ------------------------------------------------------------------
// VarargPInvokeStub_RetBuffArg & VarargPInvokeGenILStub_RetBuffArg
@@ -121,4 +102,4 @@ PINVOKE_STUB GenericPInvokeCalli, x15, x14, 1
// x1 = VASigCookie*
// x12 = MethodDesc*
//
-PINVOKE_STUB VarargPInvoke, x1, x12, 0
+PINVOKE_STUB VarargPInvokeStub_RetBuffArg, VarargPInvokeGenILStub_RetBuffArg, VarargPInvokeStubWorker, x1, x12, 0