Fix ARM build

svn path=/trunk/; revision=67737
This commit is contained in:
Timo Kreuzer 2015-05-14 22:32:49 +00:00
parent 369786f126
commit 6eae9fd0d8
4 changed files with 41 additions and 3 deletions

View file

@ -35,7 +35,7 @@ add_definitions(
-DCOM_NO_WINDOWS_H
-DMSWMSG)
if(MSVC)
if(MSVC AND NOT ARCH STREQUAL "arm")
add_asm_files(rpcrt4_asm msvc.S)
endif()

View file

@ -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 @@ static inline void init_thunk( struct thunk *thunk, unsigned int index )
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

View file

@ -156,6 +156,13 @@ typedef struct
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

View file

@ -1062,6 +1062,13 @@ __ASM_GLOBAL_FUNC( call_server_func,
__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 @@ LONG WINAPI NdrStubCall2(
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;