Resolves: #i124086# preserve 16byte stack alignment...
in gcc3-solaris-intel's uno2cpp bridge Patch-by: Apostolos Syropoulos <asyropoulos123@hotmail.com> Review-by: Herbert Dürr <hdu@apache.org> (cherry picked from commit 95eeed58af27c63977a43c4d688b1467ef3cf047) Conflicts: bridges/source/cpp_uno/gcc3_solaris_intel/uno2cpp.cxx Change-Id: I92a151c5d65f685a6249954b84da31471501ff9b
This commit is contained in:
parent
f7e335ddb7
commit
1e3e7b077f
@ -39,7 +39,15 @@ namespace
|
||||
{
|
||||
|
||||
//==================================================================================================
|
||||
static void callVirtualMethod(
|
||||
void callVirtualMethod(
|
||||
void * pAdjustedThisPtr,
|
||||
sal_Int32 nVtableIndex,
|
||||
void * pRegisterReturn,
|
||||
typelib_TypeClass eReturnType,
|
||||
sal_Int32 * pStackLongs,
|
||||
sal_Int32 nStackLongs ) __attribute__((noinline));
|
||||
|
||||
void callVirtualMethod(
|
||||
void * pAdjustedThisPtr,
|
||||
sal_Int32 nVtableIndex,
|
||||
void * pRegisterReturn,
|
||||
@ -61,6 +69,13 @@ static void callVirtualMethod(
|
||||
void * stackptr;
|
||||
asm volatile (
|
||||
"mov %%esp, %2\n\t"
|
||||
// preserve potential 128bit stack alignment
|
||||
"and $0xfffffff0, %%esp\n\t"
|
||||
"mov %3, %%eax\n\t"
|
||||
"lea -4(,%%eax,4), %%eax\n\t"
|
||||
"and $0xf, %%eax\n\t"
|
||||
"sub $0xc, %%eax\n\t"
|
||||
"add %%eax, %%esp\n\t"
|
||||
// copy values
|
||||
"mov %3, %%eax\n\t"
|
||||
"mov %%eax, %%edx\n\t"
|
||||
|
Loading…
x
Reference in New Issue
Block a user