/kernel/trunk/core/sched.inc |
---|
326,6 → 326,8 |
pop ecx |
spin_unlock_irqrestore SchedulerLock |
.found: |
; the line below assumes APPDATA is 256 bytes long and SLOT_BASE is |
; aligned on 0x10000 |
mov [CURRENT_TASK], bh |
mov [TASK_BASE], edi |
rdtsc ;call _rdtsc |
/kernel/trunk/core/sys32.inc |
---|
467,7 → 467,7 |
jne @F |
mov [fpu_owner], 2 |
mov eax, [256*2+SLOT_BASE+APPDATA.fpu_state] |
mov eax, [sizeof.APPDATA*2+SLOT_BASE+APPDATA.fpu_state] |
clts |
bt [cpu_caps], CAPS_SSE |
jnc .no_SSE |
611,12 → 611,12 |
add edi, SLOT_BASE |
mov eax, [edi+APPDATA.io_map] |
cmp eax, [SLOT_BASE+256+APPDATA.io_map] |
cmp eax, [SLOT_BASE+sizeof.APPDATA+APPDATA.io_map] |
je @F |
call free_page |
@@: |
mov eax, [edi+APPDATA.io_map+4] |
cmp eax, [SLOT_BASE+256+APPDATA.io_map+4] |
cmp eax, [SLOT_BASE+sizeof.APPDATA+APPDATA.io_map+4] |
je @F |
call free_page |
@@: |
822,7 → 822,7 |
ret |
endp |
; Request termination of thread identified by edx = SLOT_BASE + slot*256. |
; Request termination of thread identified by edx = SLOT_BASE + slot*sizeof.APPDATA. |
; Called by anyone. |
proc request_terminate |
xor eax, eax ; set return value |
/kernel/trunk/core/taskman.inc |
---|
128,7 → 128,7 |
lea edi, [SLOT_BASE+eax] |
mov [slot_base], edi |
; clean extended information about process |
mov ecx, 256/4 |
mov ecx, sizeof.APPDATA/4 |
xor eax, eax |
cld |
rep stosd |
726,7 → 726,7 |
shl edi, 8 |
add edi, SLOT_BASE |
mov edx, edi ;edx=edi - pointer to extended infomation about new thread |
mov ecx, 256/4 |
mov ecx, sizeof.APPDATA/4 |
xor eax, eax |
cld |
rep stosd ;clean extended information about new thread |
918,9 → 918,9 |
mov [eax+SLOT_BASE+APPDATA.terminate_protection], 80000001h |
;set default io permission map |
mov ecx, [SLOT_BASE+256+APPDATA.io_map] |
mov ecx, [SLOT_BASE+sizeof.APPDATA+APPDATA.io_map] |
mov [eax+SLOT_BASE+APPDATA.io_map], ecx |
mov ecx, [SLOT_BASE+256+APPDATA.io_map+4] |
mov ecx, [SLOT_BASE+sizeof.APPDATA+APPDATA.io_map+4] |
mov [eax+SLOT_BASE+APPDATA.io_map+4], ecx |
mov esi, fpu_data |