comparison contextSwitch.s @ 75:f6990e1ba998

new sequential version
author Merten Sach <msach@mailbox.tu-berlin.de>
date Thu, 02 Jun 2011 13:55:51 +0200
parents d8f12351f7cc
children 9ddbb071142d
comparison
equal deleted inserted replaced
1:27d2872398f7 2:b6954584a39f
119 asmTerminateCoreLoop: 119 asmTerminateCoreLoop:
120 movl 0x4(%esp) , %ecx #get VirtProcr 120 movl 0x4(%esp) , %ecx #get VirtProcr
121 movl 0x20(%ecx), %esp #restore stack pointer 121 movl 0x20(%ecx), %esp #restore stack pointer
122 movl 0x1c(%ecx), %ebp #restore frame pointer 122 movl 0x1c(%ecx), %ebp #restore frame pointer
123 movl $terminateCoreLoop, %eax 123 movl $terminateCoreLoop, %eax
124 jmp *%eax #jmp to CoreLoop 124 jmp *%eax #jmp to CoreLoop
125
126
127 /*
128 * This one for the sequential version is special. It discards the current stack
129 * and returns directly from the coreLoop after VMS__dissipate_procr was called
130 */
131 .globl asmTerminateCoreLoopSeq
132 asmTerminateCoreLoopSeq:
133 movl 0x4(%esp) , %ecx #get VirtProcr
134 movl 0x20(%ecx), %esp #restore stack pointer
135 movl 0x1c(%ecx), %ebp #restore frame pointer
136 sub $0x4 , %esp
137 movl %ecx , (%esp) #put argument on stack
138 call VMS__dissipate_procr
139 movl %ebp , %esp #goto the coreLoops stack
140 pop %ebp #restore the old framepointer
141 ret #return from core loop
125 142