Subversion Repositories Kolibri OS

Rev

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

Rev 281 Rev 294
Line 611... Line 611...
611
@@:
611
@@:
612
           mov esi, [PROC_BASE+APPDATA.mem_size+ebx]
612
           mov esi, [PROC_BASE+APPDATA.mem_size+ebx]
613
           add esi, 4095
613
           add esi, 4095
614
           and esi, not 4095
614
           and esi, not 4095
615
           mov eax, HEAP_TOP
615
           mov [PROC_BASE+APPDATA.mem_size+ebx], esi
-
 
616
           mov eax, HEAP_TOP
616
           mov [PROC_BASE+APPDATA.heap_base+ebx], esi
617
           mov [PROC_BASE+APPDATA.heap_base+ebx], esi
617
           mov [PROC_BASE+APPDATA.heap_top+ebx], eax
618
           mov [PROC_BASE+APPDATA.heap_top+ebx], eax
618
 
619
 
Line 619... Line 620...
619
           sub eax, esi
620
           sub eax, esi
Line 674... Line 675...
674
           inc ebx
675
           inc ebx
675
           dec ecx
676
           dec ecx
676
           jnz @B
677
           jnz @B
677
 
678
 
Line -... Line 679...
-
 
679
        mov     edx, [CURRENT_TASK]
-
 
680
        shl     edx, 8
-
 
681
        mov     ebx, [alloc_size]
-
 
682
        add     ebx, 0xFFF
-
 
683
        and     ebx, not 0xFFF
-
 
684
        add     ebx, [PROC_BASE+APPDATA.mem_size+edx]
-
 
685
        call    update_mem_size
-
 
686
 
678
           mov eax, esi
687
           mov eax, esi
679
           add eax, 4096
688
           add eax, 4096
680
           sub eax, new_app_base
689
           sub eax, new_app_base
681
           ret
690
           ret
682
m_next:
691
m_next:
Line 700... Line 709...
700
           mov esi, [base]
709
           mov esi, [base]
701
           test esi, esi
710
           test esi, esi
702
           jz .exit
711
           jz .exit
Line -... Line 712...
-
 
712
 
703
 
713
           xor ebx, ebx
704
           sub esi, 4096
714
           sub esi, 4096
705
           shr esi, 12
715
           shr esi, 12
706
           mov eax, [pages_tab+esi*4]
716
           mov eax, [pages_tab+esi*4]
707
           test eax, USED_BLOCK
717
           test eax, USED_BLOCK
Line 713... Line 723...
713
           mov [pages_tab+esi*4], eax
723
           mov [pages_tab+esi*4], eax
714
           inc esi
724
           inc esi
715
           sub ecx, 4096
725
           sub ecx, 4096
716
           shr ecx, 12
726
           shr ecx, 12
717
.release:
727
           mov ebx, ecx
-
 
728
.release:
718
           xor eax, eax
729
           xor eax, eax
719
           xchg eax, [pages_tab+esi*4]
730
           xchg eax, [pages_tab+esi*4]
720
           test eax, 1
731
           test eax, 1
721
           jz @F
732
           jz @F
722
           call free_page
733
           call free_page
Line 724... Line 735...
724
           inc esi
735
           inc esi
725
           dec ecx
736
           dec ecx
726
           jnz .release
737
           jnz .release
727
.not_used:
738
.not_used:
728
           mov ebx, [CURRENT_TASK]
739
           mov edx, [CURRENT_TASK]
729
           shl ebx, 8
740
           shl edx, 8
730
           mov esi, dword [ebx+PROC_BASE+APPDATA.heap_base]; heap_base
741
           mov esi, dword [edx+PROC_BASE+APPDATA.heap_base]; heap_base
731
           mov edi, dword [ebx+PROC_BASE+APPDATA.heap_top]; heap_top
742
           mov edi, dword [edx+PROC_BASE+APPDATA.heap_top]; heap_top
732
           add esi, new_app_base
743
           sub ebx, [edx+PROC_BASE+APPDATA.mem_size]
-
 
744
           neg ebx
-
 
745
           call update_mem_size
-
 
746
           add esi, new_app_base
733
           add edi, new_app_base
747
           add edi, new_app_base
734
           shr esi, 12
748
           shr esi, 12
735
           shr edi, 12
749
           shr edi, 12
736
@@:
750
@@:
737
           mov eax, [pages_tab+esi*4]
751
           mov eax, [pages_tab+esi*4]