Subversion Repositories Kolibri OS

Rev

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

Rev 170 Rev 172
Line 380... Line 380...
380
           mov [new_size], edi
380
           mov [new_size], edi
381
 
381
 
Line 382... Line 382...
382
           mov edx,[CURRENT_TASK]
382
           mov edx,[CURRENT_TASK]
383
           shl edx,8
383
           shl edx,8
-
 
384
           cmp [PROC_BASE+APPDATA.heap_base+edx],0
-
 
385
           jne .exit
-
 
386
 
384
           mov esi, [PROC_BASE+0x8c+edx]
387
           mov esi, [PROC_BASE+APPDATA.mem_size+edx]
385
           add esi, 4095
388
           add esi, 4095
386
           and esi, not 4095
389
           and esi, not 4095
Line 387... Line 390...
387
 
390
 
388
           cmp edi, esi
391
           cmp edi, esi
Line 520... Line 523...
520
           pushad
523
           pushad
521
 
524
 
Line 522... Line 525...
522
           mov ebp, esp
525
           mov ebp, esp
523
           mov eax, cr2
526
           mov eax, cr2
524
           sub esp, 4
527
           push eax
525
           mov [esp], eax
-
 
526
           push ds
528
           push ds
Line 527... Line 529...
527
 
529
 
528
           mov ax, 0x10
530
           mov ax, 0x10
Line 529... Line -...
529
           mov ds, ax
-
 
530
 
-
 
531
;     mov edx, 0x400   ;bocsh
-
 
532
;     mov al,0xff      ;bocsh
-
 
533
;     out dx, al       ;bocsh
-
 
534
;     nop              ;bocsh fix
-
 
535
 
531
           mov ds, ax
Line 536... Line 532...
536
 
532
 
537
           mov ebx, [ebp-4]
533
           mov ebx, [ebp-4]
Line 550... Line 546...
550
.user_space:
546
.user_space:
551
           inc [pg_data.pages_faults]
547
           inc [pg_data.pages_faults]
Line 552... Line 548...
552
 
548
 
553
           shr ebx, 12
549
           shr ebx, 12
554
           mov eax, [pages_tab+ebx*4]
-
 
555
 
550
           mov ecx, ebx
556
           shr ebx, 10
551
           shr ecx, 10
-
 
552
           mov edx, [master_tab+ecx*4]
-
 
553
           test edx, 1
Line -... Line 554...
-
 
554
           jz .fail
557
           mov edx, [master_tab+ebx*4]
555
 
558
 
556
           mov eax, [pages_tab+ebx*4]
Line 559... Line 557...
559
           test eax, 2
557
           test eax, 2
560
           jz .exit
558
           jz .fail
561
 
559
 
Line 579... Line 577...
579
           mov esp, ebp
577
           mov esp, ebp
580
           popad
578
           popad
581
           add esp, 4
579
           add esp, 4
582
           iretd
580
           iretd
583
 
581
.fail:
-
 
582
           pop ds
-
 
583
           mov esp, ebp
-
 
584
           popad
-
 
585
           add esp, 4
-
 
586
 
-
 
587
           save_ring3_context     ;debugger support
-
 
588
 
-
 
589
           mov bl, 14
-
 
590
           jmp exc_c
-
 
591
           iretd
-
 
592
 
Line 584... Line 593...
584
.kernel_space:
593
.kernel_space:
585
           shr ebx, 12
594
           shr ebx, 12
586
           mov eax, [pages_tab+ebx*4]
595
           mov eax, [pages_tab+ebx*4]
587
           shr ebx, 10
596
           shr ebx, 10
Line 900... Line 909...
900
align 4
909
align 4
901
sysfn_meminfo:
910
sysfn_meminfo:
Line 902... Line 911...
902
 
911
 
-
 
912
           add ebx, new_app_base
-
 
913
           cmp ebx, new_app_base
-
 
914
           jb .fail
903
           add ebx, new_app_base
915
 
904
           mov eax, [pg_data.pages_count]
916
           mov eax, [pg_data.pages_count]
-
 
917
           mov [ebx], eax
-
 
918
           shl eax, 12
905
           mov [ebx], eax
919
           mov [esp+36], eax
906
           mov ecx, [pg_data.pages_free]
920
           mov ecx, [pg_data.pages_free]
907
           mov [ebx+4], ecx
921
           mov [ebx+4], ecx
908
           mov edx, [pg_data.pages_faults]
922
           mov edx, [pg_data.pages_faults]
909
           mov [ebx+8], edx
923
           mov [ebx+8], edx
Line 914... Line 928...
914
           mov eax, [heap_blocks]
928
           mov eax, [heap_blocks]
915
           mov [ebx+20], eax
929
           mov [ebx+20], eax
916
           mov ecx, [free_blocks]
930
           mov ecx, [free_blocks]
917
           mov [ebx+24], ecx
931
           mov [ebx+24], ecx
918
 
932
           ret
-
 
933
.fail:
919
           ret
934
           mov dword [esp+36], -1
-
 
935
           ret
920
 
936
 
Line 921... Line 937...
921
align 4
937
align 4
922
new_services:
938
new_services:
Line 927... Line 943...
927
           cmp eax, 11
943
           cmp eax, 11
928
           jb .fail
944
           jb .fail
929
           ja @f
945
           ja @f
Line 930... Line -...
930
 
-
 
931
;           add ebx, new_app_base
-
 
932
;           stdcall get_mem_info, ebx
-
 
933
;           mov [esp+36], eax
-
 
934
;           ret
-
 
935
;@@:
-
 
936
;           cmp eax, 11
-
 
937
;           ja @f
-
 
938
 
946
 
939
           stdcall init_heap, ebx
947
           stdcall init_heap, ebx
940
           mov [esp+36], eax
948
           mov [esp+36], eax
941
           ret
949
           ret
942
@@:
950
@@:
Line 956... Line 964...
956
@@:
964
@@:
957
           cmp eax, 14
965
           cmp eax, 14
958
           ja @f
966
           ja @f
959
           add ebx,new_app_base
967
           add ebx,new_app_base
960
           stdcall get_notify, ebx
968
           cmp ebx, new_app_base
-
 
969
           jb .fail
-
 
970
           stdcall get_notify, ebx
961
           ret
971
           ret
962
@@:
972
@@:
963
           cmp eax, 15
973
           cmp eax, 15
964
           ja @f
974
           ja @f
965
           mov ecx, [CURRENT_TASK]
975
           mov ecx, [CURRENT_TASK]
Line 972... Line 982...
972
           cmp eax, 16
982
           cmp eax, 16
973
           ja @f
983
           ja @f
974
 
984
 
Line 975... Line 985...
975
           add ebx, new_app_base
985
           add ebx, new_app_base
-
 
986
           cmp ebx, new_app_base
-
 
987
           jb .fail
976
           stdcall get_service, ebx
988
           stdcall get_service, ebx
977
           mov [esp+36], eax
989
           mov [esp+36], eax
978
           ret
990
           ret
979
@@:
991
@@:
980
           cmp eax, 17
992
           cmp eax, 17
Line 1233... Line 1245...
1233
           wrmsr
1245
           wrmsr
1234
           ret
1246
           ret
1235
endp
1247
endp
1236
 
1248
 
Line -... Line 1249...
-
 
1249
align 4
-
 
1250
proc stall stdcall, delay:dword
-
 
1251
           push ecx
-
 
1252
           push edx
-
 
1253
           push ebx
-
 
1254
           push eax
-
 
1255
 
-
 
1256
           mov eax, [delay]
-
 
1257
           mul [stall_mcs]
-
 
1258
           mov ebx, eax       ;low
-
 
1259
           mov ecx, edx       ;high
-
 
1260
           rdtsc
-
 
1261
           add ebx, eax
-
 
1262
           adc ecx,edx
-
 
1263
@@:
-
 
1264
           rdtsc
-
 
1265
           sub eax, ebx
-
 
1266
           sbb edx, ecx
-
 
1267
           jb @B
-
 
1268
 
-
 
1269
           pop eax
-
 
1270
           pop ebx
-
 
1271
           pop edx
-
 
1272
           pop ecx
-
 
1273
           ret
-
 
1274
endp
-
 
1275
 
1237
iglobal
1276
iglobal
1238
align 4
1277
align 4
1239
  intel_str    db "GenuineIntel",0
1278
  intel_str    db "GenuineIntel",0
1240
  AMD_str      db "AuthenticAMD",0
1279
  AMD_str      db "AuthenticAMD",0
1241
endg
1280
endg
Line 1263... Line 1302...
1263
 
1302
 
Line 1264... Line 1303...
1264
  fpu_data          rd 1
1303
  fpu_data          rd 1
1265
  fdd_buff          rd 1
1304
  fdd_buff          rd 1
Line -... Line 1305...
-
 
1305
 
1266
 
1306
  stall_mcs         rd 1
Line 1267... Line 1307...
1267
;;CPUID information
1307
;;CPUID information
1268
 
1308
 
1269
  cpu_vendor        rd 3
1309
  cpu_vendor        rd 3