Module: wine Branch: master Commit: c8c5b6e08fe784e9a56a13d59239f08e2b1e5c0d URL: http://source.winehq.org/git/wine.git/?a=commit;h=c8c5b6e08fe784e9a56a13d592...
Author: André Hentschel nerv@dawncrow.de Date: Fri Apr 15 19:32:55 2011 +0200
ntdll: Add implementation for RtlCaptureContext on ARM.
---
dlls/ntdll/signal_arm.c | 16 +++++++++++----- 1 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/dlls/ntdll/signal_arm.c b/dlls/ntdll/signal_arm.c index 0934164..e92ebcc 100644 --- a/dlls/ntdll/signal_arm.c +++ b/dlls/ntdll/signal_arm.c @@ -160,11 +160,17 @@ static inline void restore_fpu( CONTEXT *context, const ucontext_t *sigcontext ) /*********************************************************************** * RtlCaptureContext (NTDLL.@) */ -void WINAPI RtlCaptureContext( CONTEXT *context ) -{ - FIXME("not implemented\n"); - memset( context, 0, sizeof(*context) ); -} +/* FIXME: Use the Stack instead of the actual register values */ +__ASM_STDCALL_FUNC( RtlCaptureContext, 4, + "stmfd SP!, {r1}\n\t" + "mov r1, #0x40\n\t" /* CONTEXT_ARM */ + "add r1, r1, #0x3\n\t" /* CONTEXT_FULL */ + "str r1, [r0]\n\t" /* context->ContextFlags */ + "ldmfd SP!, {r1}\n\t" + "stmib r0, {r0-pc}\n\t" /* Push registers to pointer */ + "mrs r1, CPSR\n\t" + "stmib r0, {r1}\n\t" /* context->Cpsr */ + )
/***********************************************************************