Changeset 10918


Ignore:
Timestamp:
Sep 29, 2008, 8:34:02 AM (11 years ago)
Author:
gb
Message:

restore_win32_context() for win32.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/lisp-kernel/x86-asmutils32.s

    r10772 r10918  
    181181_exportfn(C(restore_windows_context))
    182182Xrestore_windows_context_start:
    183         __(hlt)
     183        __(movl 12(%esp),%edx)  /* old valence */
     184        __(movl 8(%esp),%eax)   /* tcr */
     185        __(movw tcr.ldt_selector(%eax), %rcontext_reg)
     186        __(movl 4(%esp),%ecx)   /* context */
     187        __(movl $0,rcontext(tcr.pending_exception_context))
     188        __(frstor win32_context.FloatSave(%ecx))
     189        /* Windows doesn't bother to align the context, so use
     190          'movupd' here */
     191        __(movupd win32_context.Xmm0(%ecx),%xmm0)
     192        __(movupd win32_context.Xmm1(%ecx),%xmm1)
     193        __(movupd win32_context.Xmm2(%ecx),%xmm2)
     194        __(movupd win32_context.Xmm3(%ecx),%xmm3)
     195        __(movupd win32_context.Xmm4(%ecx),%xmm4)
     196        __(movupd win32_context.Xmm5(%ecx),%xmm5)
     197        __(movupd win32_context.Xmm6(%ecx),%xmm6)
     198        __(movupd win32_context.Xmm7(%ecx),%xmm7)
     199        __(ldmxcsr win32_context.MXCSR(%ecx))
     200        __(movl win32_context.Ebp(%ecx),%ebp)
     201        __(movl win32_context.Edi(%ecx),%edi)
     202        __(movl win32_context.Esi(%ecx),%esi)
     203        __(movl win32_context.Edx(%ecx),%edx)
     204        __(movl win32_context.Ebx(%ecx),%ebx)
     205        __(movl win32_context.Eax(%ecx),%eax)
     206        /* There's an iret frame in the context.  Point %esp at it */
     207        __(lea win32_context.Eip(%ecx),%esp)
    184208Xrestore_windows_context_load_rcx:               
    185         __(nop)
     209        __(movl win32_context.Ecx(%ecx),%ecx)
    186210Xrestore_windows_context_iret:           
    187211        __(iretl)
Note: See TracChangeset for help on using the changeset viewer.