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] |