Subversion Repositories Kolibri OS

Rev

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