mirror of
https://github.com/reactos/reactos.git
synced 2025-08-04 23:45:42 +00:00
[RPCRT4]
Fix ARM build svn path=/trunk/; revision=67737
This commit is contained in:
parent
369786f126
commit
6eae9fd0d8
4 changed files with 41 additions and 3 deletions
|
@ -35,7 +35,7 @@ add_definitions(
|
||||||
-DCOM_NO_WINDOWS_H
|
-DCOM_NO_WINDOWS_H
|
||||||
-DMSWMSG)
|
-DMSWMSG)
|
||||||
|
|
||||||
if(MSVC)
|
if(MSVC AND NOT ARCH STREQUAL "arm")
|
||||||
add_asm_files(rpcrt4_asm msvc.S)
|
add_asm_files(rpcrt4_asm msvc.S)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* License along with this library; if not, write to the Free Software
|
||||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
*
|
*
|
||||||
* TODO: Handle non-i386 architectures
|
* 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;
|
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__ */
|
#else /* __i386__ */
|
||||||
|
|
||||||
#warning You must implement stubless proxies for your CPU
|
#warning You must implement stubless proxies for your CPU
|
||||||
|
|
|
@ -156,6 +156,13 @@ typedef struct
|
||||||
|
|
||||||
static const BYTE opcodes[16] = { 0x48, 0x8b, 0x49, 0x20, 0x48, 0x8b, 0x01,
|
static const BYTE opcodes[16] = { 0x48, 0x8b, 0x49, 0x20, 0x48, 0x8b, 0x01,
|
||||||
0xff, 0xa0, 0, 0, 0, 0, 0x48, 0x8d, 0x36 };
|
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
|
#else
|
||||||
|
|
||||||
#warning You must implement delegated proxies/stubs for your CPU
|
#warning You must implement delegated proxies/stubs for your CPU
|
||||||
|
|
|
@ -1062,6 +1062,13 @@ __ASM_GLOBAL_FUNC( call_server_func,
|
||||||
__ASM_CFI(".cfi_adjust_cfa_offset -8\n\t")
|
__ASM_CFI(".cfi_adjust_cfa_offset -8\n\t")
|
||||||
__ASM_CFI(".cfi_same_value %rbp\n\t")
|
__ASM_CFI(".cfi_same_value %rbp\n\t")
|
||||||
"ret")
|
"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
|
#else
|
||||||
#warning call_server_func not implemented for your architecture
|
#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)
|
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;
|
pRpcMsg->BufferLength = stubMsg.BufferLength;
|
||||||
/* allocate buffer for [out] and [ret] params */
|
/* allocate buffer for [out] and [ret] params */
|
||||||
Status = I_RpcGetBuffer(pRpcMsg);
|
Status = I_RpcGetBuffer(pRpcMsg);
|
||||||
if (Status)
|
if (Status)
|
||||||
RpcRaiseException(Status);
|
RpcRaiseException(Status);
|
||||||
stubMsg.Buffer = pRpcMsg->Buffer;
|
stubMsg.Buffer = pRpcMsg->Buffer;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue