Ignore:
Timestamp:
Mar 9, 2017, 3:49:30 PM (5 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
aaron-thesis, arm-eh, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, resolv-new, with_gc
Children:
149d297
Parents:
5222605
Message:

Fixed saving and loading of control words for i386

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/libcfa/concurrency/CtxSwitch-i386.S

    r5222605 r7b2c2c5f  
    5252        movl 4(%esp),%eax
    5353
     54        // Save floating & SSE control words on the stack.
     55
     56        sub    $8,%esp
     57        stmxcsr 0(%esp)         // 4 bytes
     58        fnstcw  4(%esp)         // 2 bytes
     59
    5460        // Save volatile registers on the stack.
    5561
     
    6975        // argument is now at 8 + 12 = 20(%esp)
    7076
    71         movl 20(%esp),%eax
     77        movl 28(%esp),%eax
    7278
    7379        // Load new context from the "to" area.
     
    8187        popl %edi
    8288        popl %ebx
     89
     90        // Load floating & SSE control words from the stack.
     91
     92        fldcw   4(%esp)
     93        ldmxcsr 0(%esp)
     94        add    $8,%esp
    8395
    8496        // Return to thread.
Note: See TracChangeset for help on using the changeset viewer.