Subversion Repositories Kolibri OS

Rev

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