Subversion Repositories Kolibri OS

Rev

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

Rev 357 Rev 365
Line 638... Line 638...
638
           shr esi, 10
638
           shr esi, 10
639
           mov ecx, eax
639
           mov ecx, eax
640
           sub eax, 4096
640
           sub eax, 4096
641
           or ecx, FREE_BLOCK
641
           or ecx, FREE_BLOCK
642
           mov [pages_tab+esi], ecx
642
           mov [page_tabs+esi], ecx
643
           ret
643
           ret
644
.exit:
644
.exit:
645
           xor eax, eax
645
           xor eax, eax
646
           ret
646
           ret
647
endp
647
endp
648
 
648
 
Line 664... Line 664...
664
           jae m_exit
664
           jae m_exit
665
 
665
 
Line 666... Line 666...
666
           mov ebx, esi
666
           mov ebx, esi
667
           shr ebx, 12
667
           shr ebx, 12
668
           mov eax, [pages_tab+ebx*4]
668
           mov eax, [page_tabs+ebx*4]
669
           test eax, FREE_BLOCK
669
           test eax, FREE_BLOCK
670
           jz test_used
670
           jz test_used
671
           and eax, 0xFFFFF000
671
           and eax, 0xFFFFF000
672
           cmp eax, ecx    ;alloc_size
672
           cmp eax, ecx    ;alloc_size
673
           jb  m_next
673
           jb  m_next
Line 677... Line 677...
677
           add edx, ecx
677
           add edx, ecx
678
           sub eax, ecx;
678
           sub eax, ecx;
679
           or eax, FREE_BLOCK
679
           or eax, FREE_BLOCK
680
           shr edx, 12
680
           shr edx, 12
681
           mov [pages_tab+edx*4], eax
681
           mov [page_tabs+edx*4], eax
682
 
682
 
Line 683... Line 683...
683
@@:
683
@@:
684
           or ecx, USED_BLOCK
684
           or ecx, USED_BLOCK
685
           mov [pages_tab+ebx*4], ecx
685
           mov [page_tabs+ebx*4], ecx
686
           shr ecx, 12
686
           shr ecx, 12
687
           dec ecx
687
           dec ecx
688
           inc ebx
688
           inc ebx
689
@@:
689
@@:
690
           mov dword [pages_tab+ebx*4], 2
690
           mov dword [page_tabs+ebx*4], 2
691
           inc ebx
691
           inc ebx
692
           dec ecx
692
           dec ecx
693
           jnz @B
693
           jnz @B
Line 694... Line 694...
694
 
694
 
Line 728... Line 728...
728
 
728
 
Line 729... Line 729...
729
           xor ebx, ebx
729
           xor ebx, ebx
730
           sub esi, 4096
730
           sub esi, 4096
731
           shr esi, 12
731
           shr esi, 12
732
           mov eax, [pages_tab+esi*4]
732
           mov eax, [page_tabs+esi*4]
733
           test eax, USED_BLOCK
733
           test eax, USED_BLOCK
734
           jz .not_used
734
           jz .not_used
Line 735... Line 735...
735
 
735
 
736
           and eax, not 4095
736
           and eax, not 4095
737
           mov ecx, eax
737
           mov ecx, eax
738
           or eax, FREE_BLOCK
738
           or eax, FREE_BLOCK
739
           mov [pages_tab+esi*4], eax
739
           mov [page_tabs+esi*4], eax
740
           inc esi
740
           inc esi
741
           sub ecx, 4096
741
           sub ecx, 4096
742
           shr ecx, 12
742
           shr ecx, 12
743
           mov ebx, ecx
743
           mov ebx, ecx
744
.release:
744
.release:
745
           xor eax, eax
745
           xor eax, eax
746
           xchg eax, [pages_tab+esi*4]
746
           xchg eax, [page_tabs+esi*4]
747
           test eax, 1
747
           test eax, 1
748
           jz @F
748
           jz @F
749
           call free_page
749
           call free_page
750
@@:
750
@@:
Line 763... Line 763...
763
           add edi, new_app_base
763
           add edi, new_app_base
764
           shr esi, 12
764
           shr esi, 12
765
           shr edi, 12
765
           shr edi, 12
766
@@:
766
@@:
767
           mov eax, [pages_tab+esi*4]
767
           mov eax, [page_tabs+esi*4]
768
           test eax, USED_BLOCK
768
           test eax, USED_BLOCK
769
           jz .test_free
769
           jz .test_free
770
           shr eax, 12
770
           shr eax, 12
771
           add esi, eax
771
           add esi, eax
772
           jmp @B
772
           jmp @B
773
.test_free:
773
.test_free:
Line 778... Line 778...
778
           add edx, esi
778
           add edx, esi
779
           cmp edx, edi
779
           cmp edx, edi
780
           jae .exit
780
           jae .exit
781
 
781
 
Line 782... Line 782...
782
           mov ebx, [pages_tab+edx*4]
782
           mov ebx, [page_tabs+edx*4]
783
           test ebx, USED_BLOCK
783
           test ebx, USED_BLOCK
784
           jz .next_free
784
           jz .next_free
Line 785... Line 785...
785
 
785
 
786
           shr ebx, 12
786
           shr ebx, 12
787
           add edx, ebx
787
           add edx, ebx
788
           mov esi, edx
788
           mov esi, edx
789
           jmp @B
789
           jmp @B
790
.next_free:
790
.next_free:
791
           test ebx, FREE_BLOCK
791
           test ebx, FREE_BLOCK
792
           jz .err
792
           jz .err
793
           and dword [pages_tab+edx*4], 0
793
           and dword [page_tabs+edx*4], 0
794
           add eax, ebx
794
           add eax, ebx
795
           and eax, not 4095
795
           and eax, not 4095
796
           or eax, FREE_BLOCK
796
           or eax, FREE_BLOCK
797
           mov [pages_tab+esi*4], eax
797
           mov [page_tabs+esi*4], eax
798
           jmp @B
798
           jmp @B
799
.exit:
799
.exit:
800
           xor eax, eax
800
           xor eax, eax
801
           inc eax
801
           inc eax