Mercurial > cgi-bin > hgwebdir.cgi > VMS > VMS_Implementations > VMS_impls > VMS__MC_shared_impl
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 |
