summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bridges/source/cpp_uno/gcc3_ios_arm/uno2cpp-i386.cxx25
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_intel/callvirtualmethod.cxx25
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_sparc/uno2cpp.cxx19
-rw-r--r--bridges/source/cpp_uno/gcc3_macosx_intel/uno2cpp.cxx29
-rw-r--r--bridges/source/cpp_uno/gcc3_solaris_intel/uno2cpp.cxx23
-rw-r--r--bridges/source/cpp_uno/gcc3_solaris_sparc/uno2cpp.cxx18
-rw-r--r--bridges/source/cpp_uno/mingw_intel/callvirtualmethod.cxx23
-rw-r--r--include/wntgcci/sehandler.hxx2
8 files changed, 82 insertions, 82 deletions
diff --git a/bridges/source/cpp_uno/gcc3_ios_arm/uno2cpp-i386.cxx b/bridges/source/cpp_uno/gcc3_ios_arm/uno2cpp-i386.cxx
index 45e51a9929fc..5846f5d1fe20 100644
--- a/bridges/source/cpp_uno/gcc3_ios_arm/uno2cpp-i386.cxx
+++ b/bridges/source/cpp_uno/gcc3_ios_arm/uno2cpp-i386.cxx
@@ -67,11 +67,11 @@ void callVirtualMethod(
// never called
if (! pAdjustedThisPtr) CPPU_CURRENT_NAMESPACE::dummy_can_throw_anything("xxx"); // address something
- volatile long edx = 0, eax = 0; // for register returns
- void * stackptr = 0;
+ long edx, eax; // for register returns
+ void * stackptr;
asm volatile (
- "mov %%esp, %6\n\t"
- "mov %0, %%eax\n\t"
+ "mov %%esp, %2\n\t"
+ "mov %3, %%eax\n\t"
"mov %%eax, %%edx\n\t"
// stack padding to keep stack aligned:
"shl $2, %%eax\n\t"
@@ -83,28 +83,27 @@ void callVirtualMethod(
"mov %%edx, %%eax\n\t"
"dec %%edx\n\t"
"shl $2, %%edx\n\t"
- "add %1, %%edx\n"
+ "add %4, %%edx\n"
"Lcopy:\n\t"
"pushl 0(%%edx)\n\t"
"sub $4, %%edx\n\t"
"dec %%eax\n\t"
"jne Lcopy\n\t"
// do the actual call
- "mov %2, %%edx\n\t"
+ "mov %5, %%edx\n\t"
"mov 0(%%edx), %%edx\n\t"
- "mov %3, %%eax\n\t"
+ "mov %6, %%eax\n\t"
"shl $2, %%eax\n\t"
"add %%eax, %%edx\n\t"
"mov 0(%%edx), %%edx\n\t"
"call *%%edx\n\t"
// save return registers
- "mov %%eax, %4\n\t"
- "mov %%edx, %5\n\t"
+ "mov %%eax, %0\n\t"
+ "mov %%edx, %1\n\t"
// cleanup stack
- "mov %6, %%esp\n\t"
- :
- : "m"(nStackLongs), "m"(pStackLongs), "m"(pAdjustedThisPtr),
- "m"(nVtableIndex), "m"(eax), "m"(edx), "m"(stackptr)
+ "mov %2, %%esp\n\t"
+ : "=m"(eax), "=m"(edx), "=m"(stackptr)
+ : "m"(nStackLongs), "m"(pStackLongs), "m"(pAdjustedThisPtr), "m"(nVtableIndex)
: "eax", "edx" );
switch( pReturnTypeDescr->eTypeClass )
{
diff --git a/bridges/source/cpp_uno/gcc3_linux_intel/callvirtualmethod.cxx b/bridges/source/cpp_uno/gcc3_linux_intel/callvirtualmethod.cxx
index af060de41506..15b357be2cfb 100644
--- a/bridges/source/cpp_uno/gcc3_linux_intel/callvirtualmethod.cxx
+++ b/bridges/source/cpp_uno/gcc3_linux_intel/callvirtualmethod.cxx
@@ -62,44 +62,43 @@ void CPPU_CURRENT_NAMESPACE::callVirtualMethod(
if (! pAdjustedThisPtr) CPPU_CURRENT_NAMESPACE::dummy_can_throw_anything("xxx"); // address something
#endif
- volatile long edx = 0, eax = 0; // for register returns
+ long edx, eax; // for register returns
void * stackptr;
asm volatile (
- "mov %%esp, %6\n\t"
+ "mov %%esp, %2\n\t"
// preserve potential 128bit stack alignment
"and $0xfffffff0, %%esp\n\t"
- "mov %0, %%eax\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 %0, %%eax\n\t"
+ "mov %3, %%eax\n\t"
"mov %%eax, %%edx\n\t"
"dec %%edx\n\t"
"shl $2, %%edx\n\t"
- "add %1, %%edx\n"
+ "add %4, %%edx\n"
"Lcopy:\n\t"
"pushl 0(%%edx)\n\t"
"sub $4, %%edx\n\t"
"dec %%eax\n\t"
"jne Lcopy\n\t"
// do the actual call
- "mov %2, %%edx\n\t"
+ "mov %5, %%edx\n\t"
"mov 0(%%edx), %%edx\n\t"
- "mov %3, %%eax\n\t"
+ "mov %6, %%eax\n\t"
"shl $2, %%eax\n\t"
"add %%eax, %%edx\n\t"
"mov 0(%%edx), %%edx\n\t"
"call *%%edx\n\t"
// save return registers
- "mov %%eax, %4\n\t"
- "mov %%edx, %5\n\t"
+ "mov %%eax, %0\n\t"
+ "mov %%edx, %1\n\t"
// cleanup stack
- "mov %6, %%esp\n\t"
- :
- : "m"(nStackLongs), "m"(pStackLongs), "m"(pAdjustedThisPtr),
- "m"(nVtableIndex), "m"(eax), "m"(edx), "m"(stackptr)
+ "mov %2, %%esp\n\t"
+ : "=m"(eax), "=m"(edx), "=m"(stackptr)
+ : "m"(nStackLongs), "m"(pStackLongs), "m"(pAdjustedThisPtr), "m"(nVtableIndex)
: "eax", "ecx", "edx" );
switch( pReturnTypeDescr->eTypeClass )
{
diff --git a/bridges/source/cpp_uno/gcc3_linux_sparc/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_linux_sparc/uno2cpp.cxx
index 37b00d258ad1..1a73ed5188ee 100644
--- a/bridges/source/cpp_uno/gcc3_linux_sparc/uno2cpp.cxx
+++ b/bridges/source/cpp_uno/gcc3_linux_sparc/uno2cpp.cxx
@@ -70,9 +70,9 @@ void callVirtualMethod( void * pAdjustedThisPtr,
// never called
if (! pAdjustedThisPtr) CPPU_CURRENT_NAMESPACE::dummy_can_throw_anything("xxx"); // address something
- volatile long o0 = 0, o1 = 0; // for register returns
- volatile double f0d = 0;
- volatile float f0f = 0;
+ long o0, o1; // for register returns
+ double f0d;
+ float f0f;
volatile long long saveReg[7];
__asm__ (
@@ -231,12 +231,15 @@ void callVirtualMethod( void * pAdjustedThisPtr,
"ldd [%%l7], %%o4\n\t"
"add %%l7, 8, %%l7\n\t"
"ldd [%%l7], %%l6\n\t"
- : :
- "m"(o0),
- "m"(o1),
- "m"(f0d),
- "m"(f0f),
+ :
+ "=m"(o0),
+ "=m"(o1),
+ "=m"(f0d),
+ "=m"(f0f),
+ :
"r"(&saveReg[0])
+ :
+ "memory"
);
switch( eReturnType )
{
diff --git a/bridges/source/cpp_uno/gcc3_macosx_intel/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_macosx_intel/uno2cpp.cxx
index 9b14f17c526c..7c09e3ce7369 100644
--- a/bridges/source/cpp_uno/gcc3_macosx_intel/uno2cpp.cxx
+++ b/bridges/source/cpp_uno/gcc3_macosx_intel/uno2cpp.cxx
@@ -70,11 +70,11 @@ void callVirtualMethod(
// never called
if (! pAdjustedThisPtr) CPPU_CURRENT_NAMESPACE::dummy_can_throw_anything("xxx"); // address something
- volatile long edx = 0, eax = 0; // for register returns
- void * stackptr = 0;
+ long edx, eax; // for register returns
+ void * stackptr;
asm volatile (
- "mov %%esp, %6\n\t"
- "mov %0, %%eax\n\t"
+ "mov %%esp, %2\n\t"
+ "mov %3, %%eax\n\t"
"mov %%eax, %%edx\n\t"
// stack padding to keep stack aligned:
"shl $2, %%eax\n\t"
@@ -86,28 +86,27 @@ void callVirtualMethod(
"mov %%edx, %%eax\n\t"
"dec %%edx\n\t"
"shl $2, %%edx\n\t"
- "add %1, %%edx\n"
+ "add %4, %%edx\n"
"Lcopy:\n\t"
"pushl 0(%%edx)\n\t"
"sub $4, %%edx\n\t"
"dec %%eax\n\t"
"jne Lcopy\n\t"
// do the actual call
- "mov %2, %%edx\n\t"
+ "mov %5, %%edx\n\t"
"mov 0(%%edx), %%edx\n\t"
- "mov %3, %%eax\n\t"
+ "mov %6, %%eax\n\t"
"shl $2, %%eax\n\t"
"add %%eax, %%edx\n\t"
"mov 0(%%edx), %%edx\n\t"
"call *%%edx\n\t"
// save return registers
- "mov %%eax, %4\n\t"
- "mov %%edx, %5\n\t"
+ "mov %%eax, %0\n\t"
+ "mov %%edx, %1\n\t"
// cleanup stack
- "mov %6, %%esp\n\t"
- :
- : "m"(nStackLongs), "m"(pStackLongs), "m"(pAdjustedThisPtr),
- "m"(nVtableIndex), "m"(eax), "m"(edx), "m"(stackptr)
+ "mov %2, %%esp\n\t"
+ : "=m"(eax), "=m"(edx), "=m"(stackptr)
+ : "m"(nStackLongs), "m"(pStackLongs), "m"(pAdjustedThisPtr), "m"(nVtableIndex)
: "eax", "ecx", "edx" );
switch( pReturnTypeDescr->eTypeClass )
{
@@ -131,10 +130,10 @@ void callVirtualMethod(
*(unsigned char*)pRegisterReturn = eax;
break;
case typelib_TypeClass_FLOAT:
- asm ( "fstps %0" : : "m"(*(char *)pRegisterReturn) );
+ asm ( "fstps %0" : "=m"(*(char *)pRegisterReturn) );
break;
case typelib_TypeClass_DOUBLE:
- asm ( "fstpl %0\n\t" : : "m"(*(char *)pRegisterReturn) );
+ asm ( "fstpl %0\n\t" : "=m"(*(char *)pRegisterReturn) );
break;
default: {
sal_Int32 const nRetSize = pReturnTypeDescr->nSize;
diff --git a/bridges/source/cpp_uno/gcc3_solaris_intel/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_solaris_intel/uno2cpp.cxx
index 1be121519577..13ac8df07663 100644
--- a/bridges/source/cpp_uno/gcc3_solaris_intel/uno2cpp.cxx
+++ b/bridges/source/cpp_uno/gcc3_solaris_intel/uno2cpp.cxx
@@ -57,37 +57,36 @@ static void callVirtualMethod(
// never called
if (! pAdjustedThisPtr) CPPU_CURRENT_NAMESPACE::dummy_can_throw_anything("xxx"); // address something
- volatile long edx = 0, eax = 0; // for register returns
+ long edx, eax; // for register returns
void * stackptr;
asm volatile (
- "mov %%esp, %6\n\t"
+ "mov %%esp, %2\n\t"
// copy values
- "mov %0, %%eax\n\t"
+ "mov %3, %%eax\n\t"
"mov %%eax, %%edx\n\t"
"dec %%edx\n\t"
"shl $2, %%edx\n\t"
- "add %1, %%edx\n"
+ "add %4, %%edx\n"
"Lcopy:\n\t"
"pushl 0(%%edx)\n\t"
"sub $4, %%edx\n\t"
"dec %%eax\n\t"
"jne Lcopy\n\t"
// do the actual call
- "mov %2, %%edx\n\t"
+ "mov %5, %%edx\n\t"
"mov 0(%%edx), %%edx\n\t"
- "mov %3, %%eax\n\t"
+ "mov %6, %%eax\n\t"
"shl $2, %%eax\n\t"
"add %%eax, %%edx\n\t"
"mov 0(%%edx), %%edx\n\t"
"call *%%edx\n\t"
// save return registers
- "mov %%eax, %4\n\t"
- "mov %%edx, %5\n\t"
+ "mov %%eax, %0\n\t"
+ "mov %%edx, %1\n\t"
// cleanup stack
- "mov %6, %%esp\n\t"
- :
- : "m"(nStackLongs), "m"(pStackLongs), "m"(pAdjustedThisPtr),
- "m"(nVtableIndex), "m"(eax), "m"(edx), "m"(stackptr)
+ "mov %2, %%esp\n\t"
+ : "=m"(eax), "=m"(edx), "=m"(stackptr)
+ : "m"(nStackLongs), "m"(pStackLongs), "m"(pAdjustedThisPtr), "m"(nVtableIndex)
: "eax", "ecx", "edx" );
switch( eReturnType )
{
diff --git a/bridges/source/cpp_uno/gcc3_solaris_sparc/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_solaris_sparc/uno2cpp.cxx
index a85d756a823f..ae9f0b889ebc 100644
--- a/bridges/source/cpp_uno/gcc3_solaris_sparc/uno2cpp.cxx
+++ b/bridges/source/cpp_uno/gcc3_solaris_sparc/uno2cpp.cxx
@@ -68,9 +68,9 @@ void callVirtualMethod( void * pAdjustedThisPtr,
// never called
if (! pAdjustedThisPtr) CPPU_CURRENT_NAMESPACE::dummy_can_throw_anything("xxx"); // address something
- volatile long o0 = 0, o1 = 0; // for register returns
- volatile double f0d = 0;
- volatile float f0f = 0;
+ long o0, o1; // for register returns
+ double f0d;
+ float f0f;
volatile long long saveReg[7];
__asm__ (
@@ -229,12 +229,14 @@ void callVirtualMethod( void * pAdjustedThisPtr,
"ldd [%%l7], %%o4\n\t"
"add %%l7, 8, %%l7\n\t"
"ldd [%%l7], %%l6\n\t"
- : :
- "m"(o0),
- "m"(o1),
- "m"(f0d),
- "m"(f0f),
+ :
+ "=m"(o0),
+ "=m"(o1),
+ "=m"(f0d),
+ "=m"(f0f),
+ :
"r"(&saveReg[0])
+ : "memory"
);
switch( eReturnType )
{
diff --git a/bridges/source/cpp_uno/mingw_intel/callvirtualmethod.cxx b/bridges/source/cpp_uno/mingw_intel/callvirtualmethod.cxx
index c1bb9b6e07ad..2f6950ad7a49 100644
--- a/bridges/source/cpp_uno/mingw_intel/callvirtualmethod.cxx
+++ b/bridges/source/cpp_uno/mingw_intel/callvirtualmethod.cxx
@@ -56,37 +56,36 @@ void CPPU_CURRENT_NAMESPACE::callVirtualMethod(
// never called
if (! pAdjustedThisPtr) CPPU_CURRENT_NAMESPACE::dummy_can_throw_anything("xxx"); // address something
- volatile long edx = 0, eax = 0; // for register returns
+ long edx, eax; // for register returns
void * stackptr;
asm volatile (
- "mov %%esp, %6\n\t"
+ "mov %%esp, %2\n\t"
// copy values
- "mov %0, %%eax\n\t"
+ "mov %3, %%eax\n\t"
"mov %%eax, %%edx\n\t"
"dec %%edx\n\t"
"shl $2, %%edx\n\t"
- "add %1, %%edx\n"
+ "add %4, %%edx\n"
"Lcopy:\n\t"
"pushl 0(%%edx)\n\t"
"sub $4, %%edx\n\t"
"dec %%eax\n\t"
"jne Lcopy\n\t"
// do the actual call
- "mov %2, %%edx\n\t"
+ "mov %5, %%edx\n\t"
"mov 0(%%edx), %%edx\n\t"
- "mov %3, %%eax\n\t"
+ "mov %6, %%eax\n\t"
"shl $2, %%eax\n\t"
"add %%eax, %%edx\n\t"
"mov 0(%%edx), %%edx\n\t"
"call *%%edx\n\t"
// save return registers
- "mov %%eax, %4\n\t"
- "mov %%edx, %5\n\t"
+ "mov %%eax, %0\n\t"
+ "mov %%edx, %1\n\t"
// cleanup stack
- "mov %6, %%esp\n\t"
- :
- : "m"(nStackLongs), "m"(pStackLongs), "m"(pAdjustedThisPtr),
- "m"(nVtableIndex), "m"(eax), "m"(edx), "m"(stackptr)
+ "mov %2, %%esp\n\t"
+ : "=m"(eax), "=m"(edx), "=m"(stackptr)
+ : "m"(nStackLongs), "m"(pStackLongs), "m"(pAdjustedThisPtr), "m"(nVtableIndex)
: "eax", "ecx", "edx" );
switch( returnType->eTypeClass )
{
diff --git a/include/wntgcci/sehandler.hxx b/include/wntgcci/sehandler.hxx
index 9218adde07a7..6f196d88e668 100644
--- a/include/wntgcci/sehandler.hxx
+++ b/include/wntgcci/sehandler.hxx
@@ -58,7 +58,7 @@ public:
m_ER.pHandlerClass = this;
m_ER.hp = handler;
asm("movl %%fs:0, %%eax\n\t"
- "movl %%eax, %0": : "m" (m_ER.prev): "%eax" );
+ "movl %%eax, %0": "=m" (m_ER.prev): : "%eax" );
asm("movl %0, %%eax\n\t"
"movl %%eax, %%fs:0": : "r" (&m_ER): "%eax" );
}