Changeset 149d297 for src/libcfa
- Timestamp:
- Mar 9, 2017, 10:47:08 PM (8 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, 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, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- 68ac32e, a9b657a
- Parents:
- 6152c81 (diff), 7b2c2c5f (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Location:
- src/libcfa
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified src/libcfa/Makefile.am ¶
r6152c81 r149d297 81 81 82 82 maintainer-clean-local: 83 -rm -rf ${ includedir}/* ${libdir}/*83 -rm -rf ${CFA_INCDIR} ${CFA_LIBDIR} -
TabularUnified src/libcfa/Makefile.in ¶
r6152c81 r149d297 1161 1161 1162 1162 maintainer-clean-local: 1163 -rm -rf ${ includedir}/* ${libdir}/*1163 -rm -rf ${CFA_INCDIR} ${CFA_LIBDIR} 1164 1164 1165 1165 # Tell versions [3.59,3.63) of GNU make to not export all variables. -
TabularUnified src/libcfa/concurrency/CtxSwitch-i386.S ¶
r6152c81 r149d297 52 52 movl 4(%esp),%eax 53 53 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 54 60 // Save volatile registers on the stack. 55 61 … … 69 75 // argument is now at 8 + 12 = 20(%esp) 70 76 71 movl 2 0(%esp),%eax77 movl 28(%esp),%eax 72 78 73 79 // Load new context from the "to" area. … … 81 87 popl %edi 82 88 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 83 95 84 96 // Return to thread. -
TabularUnified src/libcfa/concurrency/CtxSwitch-x86_64.S ¶
r6152c81 r149d297 47 47 CtxSwitch: 48 48 49 // Save volatile registers on the stack.49 // Save floating & SSE control words on the stack. 50 50 51 51 subq $8,%rsp 52 52 stmxcsr 0(%rsp) // 4 bytes 53 53 fnstcw 4(%rsp) // 2 bytes 54 55 // Save volatile registers on the stack. 56 54 57 pushq %r15 55 58 pushq %r14 … … 75 78 popq %r14 76 79 popq %r15 80 81 // Load floating & SSE control words from the stack. 82 77 83 fldcw 4(%rsp) 78 84 ldmxcsr 0(%rsp) 79 addq $8,%rsp85 addq $8,%rsp 80 86 81 87 // Return to thread. -
TabularUnified src/libcfa/concurrency/invoke.c ¶
r6152c81 r149d297 91 91 struct FakeStack { 92 92 void *fixedRegisters[3]; // fixed registers ebx, edi, esi (popped on 1st uSwitch, values unimportant) 93 void *rturn; // where to go on return from uSwitch 93 uint32_t mxcr; // SSE Status and Control bits (control bits are preserved across function calls) 94 uint16_t fcw; // X97 FPU control word (preserved across function calls) 95 void *rturn; // where to go on return from uSwitch 94 96 void *dummyReturn; // fake return compiler would have pushed on call to uInvoke 95 97 void *argument[3]; // for 16-byte ABI, 16-byte alignment starts here … … 108 110 struct FakeStack { 109 111 void *fixedRegisters[5]; // fixed registers rbx, r12, r13, r14, r15 110 uint32_t mxcr; 111 uint16_t fcw; 112 void *rturn; 112 uint32_t mxcr; // SSE Status and Control bits (control bits are preserved across function calls) 113 uint16_t fcw; // X97 FPU control word (preserved across function calls) 114 void *rturn; // where to go on return from uSwitch 113 115 void *dummyReturn; // NULL return address to provide proper alignment 114 116 };
Note: See TracChangeset
for help on using the changeset viewer.