Author: tkreuzer Date: Thu May 14 22:32:49 2015 New Revision: 67737
URL: http://svn.reactos.org/svn/reactos?rev=67737&view=rev Log: [RPCRT4] Fix ARM build
Modified: trunk/reactos/dll/win32/rpcrt4/CMakeLists.txt trunk/reactos/dll/win32/rpcrt4/cproxy.c trunk/reactos/dll/win32/rpcrt4/cstub.c trunk/reactos/dll/win32/rpcrt4/ndr_stubless.c
Modified: trunk/reactos/dll/win32/rpcrt4/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/rpcrt4/CMakeLists... ============================================================================== --- trunk/reactos/dll/win32/rpcrt4/CMakeLists.txt [iso-8859-1] (original) +++ trunk/reactos/dll/win32/rpcrt4/CMakeLists.txt [iso-8859-1] Thu May 14 22:32:49 2015 @@ -35,7 +35,7 @@ -DCOM_NO_WINDOWS_H -DMSWMSG)
-if(MSVC) +if(MSVC AND NOT ARCH STREQUAL "arm") add_asm_files(rpcrt4_asm msvc.S) endif()
Modified: trunk/reactos/dll/win32/rpcrt4/cproxy.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/rpcrt4/cproxy.c?r... ============================================================================== --- trunk/reactos/dll/win32/rpcrt4/cproxy.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/rpcrt4/cproxy.c [iso-8859-1] Thu May 14 22:32:49 2015 @@ -17,7 +17,7 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - * + * * TODO: Handle non-i386 architectures */
@@ -150,6 +150,30 @@ thunk->call_stubless = call_stubless_func; }
+#elif defined(__arm__) + +extern void call_stubless_func(void); +__ASM_GLOBAL_FUNC(call_stubless_func, + "DCD 0xDEFC\n\t" // _assertfail + "" ); + +#include "pshpack1.h" +struct thunk +{ + DWORD assertfail; +}; +#include "poppack.h" + +static const struct thunk thunk_template = +{ + { 0xDEFC } /* _assertfail */ +}; + +static inline void init_thunk( struct thunk *thunk, unsigned int index ) +{ + *thunk = thunk_template; +} + #else /* __i386__ */
#warning You must implement stubless proxies for your CPU
Modified: trunk/reactos/dll/win32/rpcrt4/cstub.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/rpcrt4/cstub.c?re... ============================================================================== --- trunk/reactos/dll/win32/rpcrt4/cstub.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/rpcrt4/cstub.c [iso-8859-1] Thu May 14 22:32:49 2015 @@ -156,6 +156,13 @@
static const BYTE opcodes[16] = { 0x48, 0x8b, 0x49, 0x20, 0x48, 0x8b, 0x01, 0xff, 0xa0, 0, 0, 0, 0, 0x48, 0x8d, 0x36 }; +#elif defined(__arm__) +typedef struct +{ + DWORD offset; +} vtbl_method_t; +static const BYTE opcodes[1]; + #else
#warning You must implement delegated proxies/stubs for your CPU
Modified: trunk/reactos/dll/win32/rpcrt4/ndr_stubless.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/rpcrt4/ndr_stuble... ============================================================================== --- trunk/reactos/dll/win32/rpcrt4/ndr_stubless.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/rpcrt4/ndr_stubless.c [iso-8859-1] Thu May 14 22:32:49 2015 @@ -1062,6 +1062,13 @@ __ASM_CFI(".cfi_adjust_cfa_offset -8\n\t") __ASM_CFI(".cfi_same_value %rbp\n\t") "ret") +#elif defined(__arm__) +LONG_PTR __cdecl call_server_func(SERVER_ROUTINE func, unsigned char * args, unsigned short stack_size) +{ + FIXME("Not implemented for ARM\n"); + assert(FALSE); + return 0; +} #else #warning call_server_func not implemented for your architecture LONG_PTR __cdecl call_server_func(SERVER_ROUTINE func, unsigned char * args, unsigned short stack_size) @@ -1389,7 +1396,7 @@
pRpcMsg->BufferLength = stubMsg.BufferLength; /* allocate buffer for [out] and [ret] params */ - Status = I_RpcGetBuffer(pRpcMsg); + Status = I_RpcGetBuffer(pRpcMsg); if (Status) RpcRaiseException(Status); stubMsg.Buffer = pRpcMsg->Buffer;