iOS C++/UNO bridge fixes
As the inline asm statement stores parameters into r0-r3 we need to include those registers in the clobber list. Clang happened to store pMethod in r2 as input to the asm snippet. iOS uses the basic calling convention, but __ARM_EABI__ is not defined so amend some ifdefs. Change-Id: If3d66c5f3baa4dfa13f82a2b5c2ef1ab559ce31b
This commit is contained in:
parent
806535be2b
commit
0ff470cff6
1 changed files with 3 additions and 3 deletions
|
@ -115,7 +115,7 @@ void MapReturn(sal_uInt32 r0, sal_uInt32 r1, typelib_TypeDescriptionReference *
|
|||
pRegisterReturn[0] = r0;
|
||||
break;
|
||||
case typelib_TypeClass_FLOAT:
|
||||
#if !defined(__ARM_PCS_VFP) && (defined(__ARM_EABI__) || defined(__SOFTFP__))
|
||||
#if !defined(__ARM_PCS_VFP) && (defined(__ARM_EABI__) || defined(__SOFTFP__) || defined(IOS))
|
||||
pRegisterReturn[0] = r0;
|
||||
#else
|
||||
register float fret asm("s0");
|
||||
|
@ -126,7 +126,7 @@ void MapReturn(sal_uInt32 r0, sal_uInt32 r1, typelib_TypeDescriptionReference *
|
|||
#endif
|
||||
break;
|
||||
case typelib_TypeClass_DOUBLE:
|
||||
#if !defined(__ARM_PCS_VFP) && (defined(__ARM_EABI__) || defined(__SOFTFP__))
|
||||
#if !defined(__ARM_PCS_VFP) && (defined(__ARM_EABI__) || defined(__SOFTFP__) || defined(IOS))
|
||||
pRegisterReturn[1] = r1;
|
||||
pRegisterReturn[0] = r0;
|
||||
#else
|
||||
|
@ -222,7 +222,7 @@ void callVirtualMethod(
|
|||
"mov %[r1], r1\n\t"
|
||||
: [r0]"=r" (r0), [r1]"=r" (r1)
|
||||
: [pmethod]"m" (pMethod), [pgpr]"m" (pGPR), [pfpr]"m" (pFPR)
|
||||
: "r4", "r5");
|
||||
: "r0", "r1", "r2", "r3", "r4", "r5");
|
||||
|
||||
MapReturn(r0, r1, pReturnType, (sal_uInt32*)pRegisterReturn);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue