Subversion Repositories Kolibri OS

Rev

Rev 354 | Rev 363 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 354 Rev 357
Line 166... Line 166...
166
           mov   ebx,[slot_base]
166
           mov   ebx,[slot_base]
167
           mov   [ebx+APPDATA.dir_table],eax
167
           mov   [ebx+APPDATA.dir_table],eax
168
           mov   eax,[app_mem]
168
           mov   eax,[app_mem]
169
           mov   [ebx+APPDATA.mem_size],eax
169
           mov   [ebx+APPDATA.mem_size],eax
Line 170... Line 170...
170
 
170
 
-
 
171
if GREEDY_KERNEL
171
if not GREEDY_KERNEL
172
else
172
           mov ecx, [app_mem]
173
           mov ecx, [app_mem]
173
           mov edi, [file_size]
174
           mov edi, [file_size]
174
           add edi, 4095
175
           add edi, 4095
175
           and edi, not 4095
176
           and edi, not 4095
Line 299... Line 300...
299
.failed:
300
.failed:
300
           xor    eax,eax
301
           xor    eax,eax
301
           ret
302
           ret
302
endp
303
endp
Line 303... Line -...
303
 
-
 
304
 
304
 
305
align 4
305
align 4
306
proc create_app_space stdcall, app_size:dword,img_base:dword,img_size:dword
306
proc create_app_space stdcall, app_size:dword,img_base:dword,img_size:dword
307
           locals
307
           locals
308
             app_pages   dd ?
308
             app_pages   dd ?
Line 447... Line 447...
447
           mov eax, [dir_addr]
447
           mov eax, [dir_addr]
448
           ret
448
           ret
449
.fail:
449
.fail:
450
           dec [pg_data.pg_mutex]
450
           dec [pg_data.pg_mutex]
451
           cmp [dir_addr], 0
451
           cmp [dir_addr], 0
452
           jz @f
452
           je @f
453
           stdcall destroy_app_space, [dir_addr]
453
           stdcall destroy_app_space, [dir_addr]
454
@@:
454
@@:
455
           xor eax, eax
455
           xor eax, eax
456
           ret
456
           ret
457
endp
457
endp
Line 966... Line 966...
966
 
966
 
967
align 4
967
align 4
968
proc set_app_params stdcall,slot:dword, params:dword,\
968
proc set_app_params stdcall,slot:dword, params:dword,\
Line -... Line 969...
-
 
969
                        cmd_line:dword, app_path:dword, flags:dword
-
 
970
 
-
 
971
           locals
-
 
972
             pl0_stack dd ?
-
 
973
           endl
969
                        cmd_line:dword, app_path:dword, flags:dword
974
 
-
 
975
           stdcall kernel_alloc, 0x2000
970
 
976
           mov [pl0_stack], eax
-
 
977
 
971
           mov edi, [slot]
978
           lea edi, [eax+0x2000-512]
972
           mov esi, [fpu_data]
979
 
Line 973... Line -...
973
           bt [cpu_caps], CAPS_SSE
-
 
974
           jnc .no_SSE
-
 
975
 
-
 
976
           shl edi, 8
-
 
977
           mov eax, edi
-
 
978
           lea edi, [esi+edi*2]
-
 
979
           mov [eax+PROC_BASE+APPDATA.fpu_state], edi
-
 
980
           mov [eax+PROC_BASE+APPDATA.fpu_handler], 0
-
 
981
           mov [eax+PROC_BASE+APPDATA.sse_handler], 0
-
 
982
           mov ecx, 512/4
-
 
983
           jmp @F
980
           mov eax, [slot]
984
.no_SSE:
-
 
985
           mov eax, edi
-
 
986
           shl eax, 8
-
 
987
           mov ebx, edi
-
 
988
           shl edi, 7
-
 
989
           shl ebx, 4
981
           mov ebx, eax
990
           sub edi, ebx       ;edi*=112
982
 
991
           add edi, esi
983
           shl eax, 8
-
 
984
           mov [eax+PROC_BASE+APPDATA.fpu_state], edi
-
 
985
           mov [eax+PROC_BASE+APPDATA.fpu_handler], 0
992
           mov [eax+PROC_BASE+APPDATA.fpu_state], edi
986
           mov [eax+PROC_BASE+APPDATA.sse_handler], 0
993
           mov [eax+PROC_BASE+APPDATA.fpu_handler], 0
-
 
994
           mov [eax+PROC_BASE+APPDATA.sse_handler], 0
987
 
Line 995... Line -...
995
           mov ecx, 112/4
-
 
996
@@:
988
           mov esi, fpu_data
997
           rep movsd
989
           mov ecx, 512/4
998
 
990
           rep movsd
999
           mov ebx,[slot]
991
 
1000
           cmp ebx,[TASK_COUNT]
992
           cmp    ebx,[TASK_COUNT]
Line 1010... Line 1002...
1010
           mov [PROC_BASE+APPDATA.fd_obj+ebx],edx
1002
           mov [PROC_BASE+APPDATA.fd_obj+ebx],edx
1011
           mov [PROC_BASE+APPDATA.bk_obj+ebx],edx
1003
           mov [PROC_BASE+APPDATA.bk_obj+ebx],edx
Line 1012... Line 1004...
1012
 
1004
 
1013
           mov ecx, [def_cursor]
1005
           mov ecx, [def_cursor]
-
 
1006
           mov [PROC_BASE+APPDATA.cursor+ebx],ecx
-
 
1007
           mov eax, [pl0_stack]
Line 1014... Line 1008...
1014
           mov [PROC_BASE+APPDATA.cursor+ebx],ecx
1008
           mov [PROC_BASE+APPDATA.pl0_stack+ebx],eax
1015
 
1009
 
1016
           shr ebx,3
1010
           shr ebx,3
Line 1103... Line 1097...
1103
           mov [edi+TSS._es],app_data
1097
           mov [edi+TSS._es],app_data
1104
           mov [edi+TSS._fs],app_data
1098
           mov [edi+TSS._fs],app_data
1105
           mov [edi+TSS._gs],graph_data ;selector of graphic segment
1099
           mov [edi+TSS._gs],graph_data ;selector of graphic segment
1106
           mov [edi+TSS._io],word 128
1100
           mov [edi+TSS._io],word 128
1107
           mov [edi+TSS._ss0], os_data
1101
           mov [edi+TSS._ss0], os_data
1108
           mov ebx,[slot]
1102
           mov ebx, [pl0_stack]
1109
           shl ebx,12
1103
           add ebx, 0x2000-512
1110
           add ebx,sysint_stack_data+4096
-
 
1111
           mov [edi+TSS._esp0],ebx
1104
           mov [edi+TSS._esp0],ebx
Line 1112... Line 1105...
1112
 
1105
 
1113
           mov ecx, edi    ;ecx - address of application TSS
1106
           mov ecx, edi    ;ecx - address of application TSS
1114
           mov ebx,[slot]
1107
           mov ebx,[slot]