Kaydet (Commit) 5198a42c authored tarafından Oliver Bolte's avatar Oliver Bolte

INTEGRATION: CWS unxlngs04 (1.8.6); FILE MERGED

2005/09/23 11:40:28 sparcmoz 1.8.6.1: #51545#:GNU/Linux Sparc bridges gcc4 assembler error memory input 0 is not directly addressable
üst 193ac27d
...@@ -4,9 +4,9 @@ ...@@ -4,9 +4,9 @@
* *
* $RCSfile: cpp2uno.cxx,v $ * $RCSfile: cpp2uno.cxx,v $
* *
* $Revision: 1.8 $ * $Revision: 1.9 $
* *
* last change: $Author: rt $ $Date: 2005-09-07 22:25:05 $ * last change: $Author: obo $ $Date: 2005-12-21 15:38:28 $
* *
* The Contents of this file are made available subject to * The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1. * the terms of GNU Lesser General Public License Version 2.1.
...@@ -371,11 +371,13 @@ static typelib_TypeClass cpp_mediate( ...@@ -371,11 +371,13 @@ static typelib_TypeClass cpp_mediate(
*/ */
static void cpp_vtable_call() static void cpp_vtable_call()
{ {
volatile sal_Int64 nRegReturn; sal_Int64 nRegReturn;
int nFunctionIndex; int nFunctionIndex;
void** pCallStack; void** pCallStack;
int vTableOffset; int vTableOffset;
void * pRegReturn = &nRegReturn;
__asm__( "st %%i0, %0\n\t" __asm__( "st %%i0, %0\n\t"
"st %%i1, %1\n\t" "st %%i1, %1\n\t"
"st %%i2, %2\n\t" "st %%i2, %2\n\t"
...@@ -394,41 +396,40 @@ static void cpp_vtable_call() ...@@ -394,41 +396,40 @@ static void cpp_vtable_call()
case typelib_TypeClass_BYTE: case typelib_TypeClass_BYTE:
__asm__( "ld %0, %%l0\n\t" __asm__( "ld %0, %%l0\n\t"
"ldsb [%%l0], %%i0\n" "ldsb [%%l0], %%i0\n"
: : "m"(&nRegReturn) ); : : "m"(pRegReturn) );
break; break;
case typelib_TypeClass_CHAR: case typelib_TypeClass_CHAR:
case typelib_TypeClass_SHORT: case typelib_TypeClass_SHORT:
case typelib_TypeClass_UNSIGNED_SHORT: case typelib_TypeClass_UNSIGNED_SHORT:
__asm__( "ld %0, %%l0\n\t" __asm__( "ld %0, %%l0\n\t"
"ldsh [%%l0], %%i0\n" "ldsh [%%l0], %%i0\n"
: : "m"(&nRegReturn) ); : : "m"(pRegReturn) );
break; break;
case typelib_TypeClass_HYPER: case typelib_TypeClass_HYPER:
case typelib_TypeClass_UNSIGNED_HYPER: case typelib_TypeClass_UNSIGNED_HYPER:
__asm__( "ld %0, %%l0\n\t" __asm__( "ld %0, %%l0\n\t"
"ld [%%l0], %%i0\n\t" "ld [%%l0], %%i0\n\t"
"ld %1, %%l0\n\t" "add %%l0, 4, %%l0\n\t"
"ld [%%l0], %%i1\n\t" "ld [%%l0], %%i1\n\t"
: : "m"(&nRegReturn), "m"(((long*)&nRegReturn) +1) ); : : "m"(pRegReturn) );
break; break;
case typelib_TypeClass_FLOAT: case typelib_TypeClass_FLOAT:
__asm__( "ld %0, %%l0\n\t" __asm__( "ld %0, %%l0\n\t"
"ld [%%l0], %%f0\n" "ld [%%l0], %%f0\n"
: : "m"(&nRegReturn) ); : : "m"(pRegReturn) );
break; break;
case typelib_TypeClass_DOUBLE: case typelib_TypeClass_DOUBLE:
__asm__( "ld %0, %%l0\n\t" __asm__( "ld %0, %%l0\n\t"
"ldd [%%l0], %%f0\n" "ldd [%%l0], %%f0\n"
: : "m"(&nRegReturn) ); : : "m"(pRegReturn) );
break; break;
case typelib_TypeClass_VOID: case typelib_TypeClass_VOID:
break; break;
default: default:
__asm__( "ld %0, %%l0\n\t" __asm__( "ld %0, %%l0\n\t"
"ld [%%l0], %%i0\n" "ld [%%l0], %%i0\n"
: : "m"(&nRegReturn) ); : : "m"(pRegReturn) );
break; break;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment