Subversion Repositories Kolibri OS

Rev

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

Rev 1074 Rev 1220
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
;; Distributed under terms of the GNU General Public License    ;;
4
;; Distributed under terms of the GNU General Public License    ;;
5
;;                                                              ;;
5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 7... Line 7...
7
 
7
 
Line 8... Line 8...
8
$Revision: 1074 $
8
$Revision: 1220 $
Line 9... Line 9...
9
 
9
 
Line 111... Line 111...
111
       jmp .namecopied
111
       jmp .namecopied
112
.bigfilename:
112
.bigfilename:
113
       popad
113
       popad
114
       mov eax, -ERROR_FILE_NOT_FOUND
114
       mov eax, -ERROR_FILE_NOT_FOUND
115
       ret
115
       ret
-
 
116
 
116
.namecopied:
117
.namecopied:
Line 117... Line 118...
117
 
118
 
118
       mov [cmdline], ebx
119
       mov [cmdline], ebx
119
       test ebx, ebx
120
       test ebx, ebx
Line 199... Line 200...
199
       mov   ebx,[slot_base]
200
       mov   ebx,[slot_base]
200
       mov   [ebx+APPDATA.dir_table],eax
201
       mov   [ebx+APPDATA.dir_table],eax
201
       mov   eax,[hdr_mem]
202
       mov   eax,[hdr_mem]
202
       mov   [ebx+APPDATA.mem_size],eax
203
       mov   [ebx+APPDATA.mem_size],eax
Line -... Line 204...
-
 
204
 
-
 
205
       xor edx, edx
-
 
206
       cmp word [6], '02'
-
 
207
       jne @f
-
 
208
 
-
 
209
       not edx
-
 
210
@@:
-
 
211
       mov   [ebx+APPDATA.tls_base],edx
203
 
212
 
204
if GREEDY_KERNEL
213
if GREEDY_KERNEL
205
else
214
else
206
       mov ecx, [hdr_mem]
215
       mov ecx, [hdr_mem]
207
       mov edi, [file_size]
216
       mov edi, [file_size]
Line 276... Line 285...
276
       ret
285
       ret
Line 277... Line 286...
277
 
286
 
Line 278... Line 287...
278
 .check_01_header:
287
 .check_01_header:
-
 
288
 
-
 
289
       cmp [eax+6], word '01'
279
 
290
       je @f
280
       cmp  [eax+6],word '01'
291
       cmp [eax+6], word '02'
281
       jne  .fail
292
       jne .fail
282
 
293
@@:
283
       mov  ecx,[APP_HEADER_01.start]
294
       mov  ecx,[APP_HEADER_01.start]
Line 284... Line 295...
284
       mov  [ebx+0x08], ecx            ;app_eip
295
       mov  [ebx+0x08], ecx                 ;app_eip
Line 734... Line 745...
734
       mov ecx, 0x8000
745
       mov ecx, 0x8000
735
@@:
746
@@:
736
       mov eax, [slot]
747
       mov eax, [slot]
737
       shl  eax,8
748
       shl  eax,8
738
       mov ebx, [offset]
749
       mov ebx, [offset]
739
     ;      add ebx, new_app_base
-
 
-
 
750
 
740
       push ecx
751
       push ecx
741
       stdcall map_memEx, [proc_mem_map],\
752
       stdcall map_memEx, [proc_mem_map],\
742
                  [SLOT_BASE+eax+0xB8],\
753
                  [SLOT_BASE+eax+0xB8],\
743
                  ebx, ecx
754
                  ebx, ecx
744
       pop ecx
755
       pop ecx
Line 895... Line 906...
895
       mov [edx+APPDATA.mem_size], eax
906
       mov [edx+APPDATA.mem_size], eax
Line 896... Line 907...
896
 
907
 
897
       mov ecx,[ebx+APPDATA.dir_table]
908
       mov ecx,[ebx+APPDATA.dir_table]
Line -... Line 909...
-
 
909
       mov [edx+APPDATA.dir_table],ecx      ;copy page directory
-
 
910
 
-
 
911
       mov eax, [ebx+APPDATA.tls_base]
-
 
912
       test eax, eax
-
 
913
       jz @F
-
 
914
 
-
 
915
       push edx
-
 
916
       stdcall user_alloc, 4096
-
 
917
       pop edx
-
 
918
       test eax, eax
-
 
919
       jz .failed
-
 
920
@@:
898
       mov [edx+APPDATA.dir_table],ecx  ;copy page directory
921
       mov [edx+APPDATA.tls_base], eax
899
 
922
 
900
       lea eax, [app_cmdline]
923
       lea eax, [app_cmdline]
Line 901... Line 924...
901
       stdcall set_app_params ,[slot],eax,dword 0,\
924
       stdcall set_app_params ,[slot],eax,dword 0,\
Line 929... Line 952...
929
.locked:
952
.locked:
930
       pop ebx
953
       pop ebx
931
       pop eax
954
       pop eax
932
       ret
955
       ret
Line -... Line 956...
-
 
956
 
-
 
957
align 4
-
 
958
tls_app_entry:
-
 
959
 
-
 
960
        call init_heap
-
 
961
        stdcall user_alloc, 4096
-
 
962
 
-
 
963
        mov edx, [current_slot]
-
 
964
        mov [edx+APPDATA.tls_base], eax
-
 
965
        mov [tls_data_l+2],ax
-
 
966
        shr eax,16
-
 
967
        mov [tls_data_l+4],al
-
 
968
        mov [tls_data_l+7],ah
-
 
969
        mov dx, app_tls
-
 
970
        mov fs, dx
-
 
971
        popad
-
 
972
        iretd
-
 
973
 
933
 
974
 
934
EFL_IF      equ 0x0200
975
EFL_IF      equ 0x0200
935
EFL_IOPL1   equ 0x1000
976
EFL_IOPL1   equ 0x1000
936
EFL_IOPL2   equ 0x2000
977
EFL_IOPL2   equ 0x2000
Line 1035... Line 1076...
1035
       mov    ebx,[slot]
1076
       mov    ebx,[slot]
1036
       mov    eax,ebx
1077
       mov    eax,ebx
1037
       shl    ebx,5
1078
       shl    ebx,5
1038
       lea    ecx,[draw_data+ebx]  ;ecx - pointer to draw data
1079
       lea    ecx,[draw_data+ebx]  ;ecx - pointer to draw data
Line -... Line 1080...
-
 
1080
 
-
 
1081
       mov edx, irq0.return
-
 
1082
       cmp [ebx*8+SLOT_BASE+APPDATA.tls_base], -1
-
 
1083
       jne @F
-
 
1084
       mov edx, tls_app_entry
1039
 
1085
@@:
1040
; set window state to 'normal' (non-minimized/maximized/rolled-up) state
1086
; set window state to 'normal' (non-minimized/maximized/rolled-up) state
1041
       mov     [ebx+window_data+WDATA.fl_wstate], WSTATE_NORMAL
1087
       mov     [ebx+window_data+WDATA.fl_wstate], WSTATE_NORMAL
1042
       mov     [ebx+window_data+WDATA.fl_redraw], 1
1088
       mov     [ebx+window_data+WDATA.fl_redraw], 1
1043
       add    ebx,CURRENT_TASK        ;ebx - pointer to information about process
1089
       add    ebx,CURRENT_TASK        ;ebx - pointer to information about process
Line 1061... Line 1107...
1061
       mov ebx, [pl0_stack]
1107
       mov ebx, [pl0_stack]
1062
       mov esi,[params]
1108
       mov esi,[params]
1063
       lea ecx, [ebx+REG_EIP]
1109
       lea ecx, [ebx+REG_EIP]
1064
       xor eax, eax
1110
       xor eax, eax
Line 1065... Line 1111...
1065
 
1111
 
1066
       mov [ebx+REG_RET], dword irq0.return
1112
       mov [ebx+REG_RET], edx
1067
       mov [ebx+REG_EDI], eax
1113
       mov [ebx+REG_EDI], eax
1068
       mov [ebx+REG_ESI], eax
1114
       mov [ebx+REG_ESI], eax
1069
       mov [ebx+REG_EBP], eax
1115
       mov [ebx+REG_EBP], eax
1070
       mov [ebx+REG_ESP], ecx   ;ebx+REG_EIP
1116
       mov [ebx+REG_ESP], ecx   ;ebx+REG_EIP