[Openmcl-cvs-notifications] r10918 - /trunk/source/lisp-kernel/x86-asmutils32.s
gb at clozure.com
gb at clozure.com
Mon Sep 29 04:34:02 EDT 2008
Author: gb
Date: Mon Sep 29 04:34:02 2008
New Revision: 10918
Log:
restore_win32_context() for win32.
Modified:
trunk/source/lisp-kernel/x86-asmutils32.s
Modified: trunk/source/lisp-kernel/x86-asmutils32.s
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/x86-asmutils32.s (original)
+++ trunk/source/lisp-kernel/x86-asmutils32.s Mon Sep 29 04:34:02 2008
@@ -180,9 +180,33 @@
__ifdef([WIN_32])
_exportfn(C(restore_windows_context))
Xrestore_windows_context_start:
- __(hlt)
+ __(movl 12(%esp),%edx) /* old valence */
+ __(movl 8(%esp),%eax) /* tcr */
+ __(movw tcr.ldt_selector(%eax), %rcontext_reg)
+ __(movl 4(%esp),%ecx) /* context */
+ __(movl $0,rcontext(tcr.pending_exception_context))
+ __(frstor win32_context.FloatSave(%ecx))
+ /* Windows doesn't bother to align the context, so use
+ 'movupd' here */
+ __(movupd win32_context.Xmm0(%ecx),%xmm0)
+ __(movupd win32_context.Xmm1(%ecx),%xmm1)
+ __(movupd win32_context.Xmm2(%ecx),%xmm2)
+ __(movupd win32_context.Xmm3(%ecx),%xmm3)
+ __(movupd win32_context.Xmm4(%ecx),%xmm4)
+ __(movupd win32_context.Xmm5(%ecx),%xmm5)
+ __(movupd win32_context.Xmm6(%ecx),%xmm6)
+ __(movupd win32_context.Xmm7(%ecx),%xmm7)
+ __(ldmxcsr win32_context.MXCSR(%ecx))
+ __(movl win32_context.Ebp(%ecx),%ebp)
+ __(movl win32_context.Edi(%ecx),%edi)
+ __(movl win32_context.Esi(%ecx),%esi)
+ __(movl win32_context.Edx(%ecx),%edx)
+ __(movl win32_context.Ebx(%ecx),%ebx)
+ __(movl win32_context.Eax(%ecx),%eax)
+ /* There's an iret frame in the context. Point %esp at it */
+ __(lea win32_context.Eip(%ecx),%esp)
Xrestore_windows_context_load_rcx: =
- __(nop)
+ __(movl win32_context.Ecx(%ecx),%ecx)
Xrestore_windows_context_iret: =
__(iretl)
Xrestore_windows_context_end: =
More information about the Openmcl-cvs-notifications
mailing list