André Hentschel : ntdll: Add implementation for RtlCaptureContext on ARM.

Alexandre Julliard julliard at winehq.org
Mon Apr 18 11:10:55 CDT 2011


Module: wine
Branch: master
Commit: c8c5b6e08fe784e9a56a13d59239f08e2b1e5c0d
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=c8c5b6e08fe784e9a56a13d59239f08e2b1e5c0d

Author: André Hentschel <nerv at 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 */
+                    )
 
 
 /***********************************************************************




More information about the wine-cvs mailing list