Rev 211 | Rev 221 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 211 | Rev 214 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | GREEDY_KERNEL equ 0; 1 |
1 | GREEDY_KERNEL equ 0 |
Line 2... | Line 2... | ||
2 | 2 | ||
3 | 3 | ||
4 | struc APP_HEADER_00 |
4 | struc APP_HEADER_00 |
Line 602... | Line 602... | ||
602 | 602 | ||
603 | align 4 |
603 | align 4 |
604 | proc add_app_parameters stdcall,slot:dword,img_base:dword,\ |
604 | proc add_app_parameters stdcall,slot:dword,img_base:dword,\ |
Line 605... | Line 605... | ||
605 | cmd_line:dword, app_path:dword, flags:dword |
605 | cmd_line:dword, app_path:dword, flags:dword |
- | 606 | ||
606 | 607 | mov edi, [slot] |
|
607 | mov eax,[slot] |
608 | mov esi, [fpu_data] |
- | 609 | bt [cpu_caps], CAPS_FXSR |
|
608 | bt [cpu_caps], CAPS_FXSR |
610 | jnc .no_SSE |
609 | jnc .no_SSE |
611 | |
610 | shl eax, 8 |
- | |
611 | mov ebx, eax |
612 | shl edi, 8 |
612 | add eax, eax |
613 | mov eax, edi |
613 | add eax, [fpu_data] |
614 | lea edi, [esi+edi*2] |
614 | mov [ebx+PROC_BASE+APPDATA.fpu_state], eax |
615 | mov [eax+PROC_BASE+APPDATA.fpu_state], edi |
- | 616 | mov [eax+PROC_BASE+APPDATA.fpu_handler], 0 |
|
615 | mov [ebx+PROC_BASE+APPDATA.fpu_handler], 0 |
617 | mov [eax+PROC_BASE+APPDATA.sse_handler], 0 |
616 | mov [ebx+PROC_BASE+APPDATA.sse_handler], 0 |
618 | mov ecx, 512/4 |
617 | jmp .m1 |
619 | jmp @F |
- | 620 | .no_SSE: |
|
618 | .no_SSE: |
621 | mov eax, edi |
619 | mov ecx, eax |
622 | shl eax, 8 |
620 | mov ebx, eax |
623 | mov ebx, edi |
621 | shl eax, 7 |
624 | shl edi, 7 |
622 | shl ebx, 4 |
- | |
623 | sub eax, ebx ;eax*=112 |
625 | shl ebx, 4 |
624 | add eax, [fpu_data] |
626 | sub edi, ebx ;edi*=112 |
625 | shl ecx, 8 |
627 | add edi, esi |
626 | mov [ecx+PROC_BASE+APPDATA.fpu_state], eax |
628 | mov [eax+PROC_BASE+APPDATA.fpu_state], edi |
- | 629 | mov [eax+PROC_BASE+APPDATA.fpu_handler], 0 |
|
627 | mov [ecx+PROC_BASE+APPDATA.fpu_handler], 0 |
630 | mov [eax+PROC_BASE+APPDATA.sse_handler], 0 |
- | 631 | mov ecx, 112/4 |
|
- | 632 | @@: |
|
628 | mov [ecx+PROC_BASE+APPDATA.sse_handler], 0 |
633 | rep movsd |
629 | .m1: |
634 | |
630 | mov ebx,[slot] |
635 | mov ebx,[slot] |
631 | cmp ebx,[TASK_COUNT] |
636 | cmp ebx,[TASK_COUNT] |
632 | jle .noinc |
637 | jle .noinc |