Rev 213 | Rev 254 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 213 | Rev 214 | ||
---|---|---|---|
Line 678... | Line 678... | ||
678 | jz test_used |
678 | jz test_used |
679 | and eax, 0xFFFFF000 |
679 | and eax, 0xFFFFF000 |
680 | cmp eax, ecx ;alloc_size |
680 | cmp eax, ecx ;alloc_size |
681 | jb m_next |
681 | jb m_next |
682 | jz @f |
682 | |
683 | - | ||
Line 684... | Line 683... | ||
684 | mov edx, esi |
683 | mov edx, esi |
685 | add edx, ecx |
684 | add edx, ecx |
686 | sub eax, ecx; |
685 | sub eax, ecx; |
687 | or eax, FREE_BLOCK |
686 | or eax, FREE_BLOCK |
688 | shr edx, 12 |
687 | shr edx, 12 |
689 | mov [pages_tab+edx*4], eax |
688 | mov [pages_tab+edx*4], eax |
690 | @@: |
689 | |
691 | or ecx, USED_BLOCK |
690 | or ecx, USED_BLOCK |
692 | mov [pages_tab+ebx*4], ecx |
691 | mov [pages_tab+ebx*4], ecx |
693 | shr ecx, 12 |
692 | shr ecx, 12 |
694 | dec ecx |
693 | dec ecx |
695 | inc ebx |
694 | inc ebx |
Line 752... | Line 751... | ||
752 | mov ebx, [CURRENT_TASK] |
751 | mov ebx, [CURRENT_TASK] |
753 | shl ebx, 8 |
752 | shl ebx, 8 |
754 | mov esi, dword [ebx+PROC_BASE+APPDATA.heap_base]; heap_base |
753 | mov esi, dword [ebx+PROC_BASE+APPDATA.heap_base]; heap_base |
755 | mov edi, dword [ebx+PROC_BASE+APPDATA.heap_top]; heap_top |
754 | mov edi, dword [ebx+PROC_BASE+APPDATA.heap_top]; heap_top |
756 | add esi, new_app_base |
755 | shr esi, 12 |
757 | add edi, new_app_base |
- | |
758 | shr esi, 12 |
- | |
759 | shr edi, 12 |
756 | shr edi, 12 |
760 | @@: |
757 | @@: |
761 | mov eax, [pages_tab+esi*4] |
758 | mov eax, [pages_tab+esi*4] |
762 | test eax, USED_BLOCK |
759 | test eax, USED_BLOCK |
763 | jz .test_free |
760 | jz .test_free |
Line 824... | Line 821... | ||
824 | jnz .find |
821 | jnz .find |
825 | popf |
822 | popf |
826 | xor eax, eax |
823 | xor eax, eax |
827 | ret |
824 | ret |
828 | 825 | .find: |
|
829 | .find: btr [srv_map], eax |
826 | btr [srv_map], eax |
830 | popf |
827 | popf |
831 | shl eax,5 |
828 | shl eax,0x02 |
832 | add eax, srv_tab |
829 | lea eax,[srv_tab+eax+eax*8] ;srv_tab+eax*36 |
833 | ret |
830 | ret |
834 | endp |
831 | endp |
835 | 832 |