Rev 2167 | Rev 2381 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2167 | Rev 2288 | ||
---|---|---|---|
Line 3... | Line 3... | ||
3 | ;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;; |
3 | ;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;; |
4 | ;; Copyright (C) MenuetOS 2000-2004 Ville Mikael Turjanmaa ;; |
4 | ;; Copyright (C) MenuetOS 2000-2004 Ville Mikael Turjanmaa ;; |
5 | ;; Distributed under terms of the GNU General Public License ;; |
5 | ;; Distributed under terms of the GNU General Public License ;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 7... | Line 7... | ||
7 | 7 | ||
Line 8... | Line 8... | ||
8 | $Revision: 2167 $ |
8 | $Revision: 2288 $ |
9 | 9 | ||
10 | 10 | ||
Line 58... | Line 58... | ||
58 | .find_next_task: |
58 | .find_next_task: |
59 | ; \end{Mario79} |
59 | ; \end{Mario79} |
60 | end if |
60 | end if |
61 | call find_next_task |
61 | call find_next_task |
62 | jz .return ; the same task -> skip switch |
62 | jz .return ; the same task -> skip switch |
- | 63 | @@: |
|
63 | @@: mov byte[DONT_SWITCH], 1 |
64 | mov byte[DONT_SWITCH], 1 |
64 | call do_change_task |
65 | call do_change_task |
65 | .return: |
66 | .return: |
66 | popad |
67 | popad |
67 | popfd |
68 | popfd |
68 | ret |
69 | ret |
Line 119... | Line 120... | ||
119 | .loop: |
120 | .loop: |
120 | cmp bh,[TASK_COUNT] |
121 | cmp bh, [TASK_COUNT] |
121 | jb @f |
122 | jb @f |
122 | xor bh, bh |
123 | xor bh, bh |
123 | mov edi,CURRENT_TASK |
124 | mov edi, CURRENT_TASK |
- | 125 | @@: |
|
124 | @@: inc bh ; ebx += APPDATA.size |
126 | inc bh ; ebx += APPDATA.size |
125 | add edi,0x20 ; edi += TASKDATA.size |
127 | add edi, 0x20; edi += TASKDATA.size |
126 | mov al, [edi+TASKDATA.state] |
128 | mov al, [edi+TASKDATA.state] |
127 | test al, al |
129 | test al, al |
128 | jz .found ; state == 0 |
130 | jz .found ; state == 0 |
129 | cmp al, 5 |
131 | cmp al, 5 |
Line 138... | Line 140... | ||
138 | ; testing for timeout |
140 | ; testing for timeout |
139 | mov ecx, [timer_ticks] |
141 | mov ecx, [timer_ticks] |
140 | sub ecx, [ebx+APPDATA.wait_begin] |
142 | sub ecx, [ebx+APPDATA.wait_begin] |
141 | cmp ecx, [ebx+APPDATA.wait_timeout] |
143 | cmp ecx, [ebx+APPDATA.wait_timeout] |
142 | jb .loop |
144 | jb .loop |
- | 145 | @@: |
|
143 | @@: mov [ebx+APPDATA.wait_param], eax ; retval for wait |
146 | mov [ebx+APPDATA.wait_param], eax ; retval for wait |
144 | mov [edi+TASKDATA.state], 0 |
147 | mov [edi+TASKDATA.state], 0 |
145 | .found: |
148 | .found: |
146 | mov [CURRENT_TASK],bh |
149 | mov [CURRENT_TASK], bh |
147 | mov [TASK_BASE],edi |
150 | mov [TASK_BASE], edi |
148 | rdtsc ;call _rdtsc |
151 | rdtsc ;call _rdtsc |
Line 212... | Line 215... | ||
212 | macro lodsReg [reg] { |
215 | macro lodsReg [reg] { |
213 | lodsd |
216 | lodsd |
214 | mov reg,eax |
217 | mov reg, eax |
215 | } lodsReg dr0, dr1, dr2, dr3, dr7 |
218 | } lodsReg dr0, dr1, dr2, dr3, dr7 |
216 | purge lodsReg |
219 | purge lodsReg |
- | 220 | @@: |
|
217 | @@: ret |
221 | ret |
218 | ;end. |
222 | ;end. |
Line 219... | Line 223... | ||
219 | 223 |