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 |