Rev 369 | Rev 425 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 369 | Rev 380 | ||
---|---|---|---|
Line 614... | Line 614... | ||
614 | proc init_heap |
614 | proc init_heap |
615 | 615 | ||
Line 616... | Line 616... | ||
616 | mov ebx,[CURRENT_TASK] |
616 | mov ebx,[CURRENT_TASK] |
617 | shl ebx,8 |
617 | shl ebx,8 |
618 | mov eax, [PROC_BASE+APPDATA.heap_top+ebx] |
618 | mov eax, [SLOT_BASE+APPDATA.heap_top+ebx] |
619 | test eax, eax |
619 | test eax, eax |
620 | jz @F |
620 | jz @F |
621 | sub eax,[PROC_BASE+APPDATA.heap_base+ebx] |
621 | sub eax,[SLOT_BASE+APPDATA.heap_base+ebx] |
622 | sub eax, 4096 |
622 | sub eax, 4096 |
623 | ret |
623 | ret |
624 | @@: |
624 | @@: |
625 | mov esi, [PROC_BASE+APPDATA.mem_size+ebx] |
625 | mov esi, [SLOT_BASE+APPDATA.mem_size+ebx] |
626 | add esi, 4095 |
626 | add esi, 4095 |
627 | and esi, not 4095 |
627 | and esi, not 4095 |
628 | mov [PROC_BASE+APPDATA.mem_size+ebx], esi |
628 | mov [SLOT_BASE+APPDATA.mem_size+ebx], esi |
629 | mov eax, HEAP_TOP |
629 | mov eax, HEAP_TOP |
630 | mov [PROC_BASE+APPDATA.heap_base+ebx], esi |
630 | mov [SLOT_BASE+APPDATA.heap_base+ebx], esi |
631 | mov [PROC_BASE+APPDATA.heap_top+ebx], eax |
631 | mov [SLOT_BASE+APPDATA.heap_top+ebx], eax |
Line 632... | Line 632... | ||
632 | 632 | ||
633 | sub eax, esi |
633 | sub eax, esi |
634 | add esi, new_app_base |
634 | add esi, new_app_base |
635 | shr esi, 10 |
635 | shr esi, 10 |
Line 651... | Line 651... | ||
651 | and ecx, not 4095 |
651 | and ecx, not 4095 |
652 | 652 | ||
Line 653... | Line 653... | ||
653 | mov ebx, [CURRENT_TASK] |
653 | mov ebx, [CURRENT_TASK] |
654 | shl ebx, 8 |
654 | shl ebx, 8 |
655 | mov esi, dword [ebx+PROC_BASE+APPDATA.heap_base]; heap_base |
655 | mov esi, dword [ebx+SLOT_BASE+APPDATA.heap_base]; heap_base |
656 | mov edi, dword [ebx+PROC_BASE+APPDATA.heap_top]; heap_top |
656 | mov edi, dword [ebx+SLOT_BASE+APPDATA.heap_top]; heap_top |
657 | add esi, new_app_base |
657 | add esi, new_app_base |
658 | add edi, new_app_base |
658 | add edi, new_app_base |
659 | l_0: |
659 | l_0: |
660 | cmp esi, edi |
660 | cmp esi, edi |
661 | jae m_exit |
661 | jae m_exit |
Line 693... | Line 693... | ||
693 | shl edx, 8 |
693 | shl edx, 8 |
694 | mov ebx, [alloc_size] |
694 | mov ebx, [alloc_size] |
695 | add ebx, 0xFFF |
695 | add ebx, 0xFFF |
696 | and ebx, not 0xFFF |
696 | and ebx, not 0xFFF |
697 | add ebx, [PROC_BASE+APPDATA.mem_size+edx] |
697 | add ebx, [SLOT_BASE+APPDATA.mem_size+edx] |
698 | call update_mem_size |
698 | call update_mem_size |
699 | 699 | ||
Line 700... | Line 700... | ||
700 | mov eax, esi |
700 | mov eax, esi |
701 | add eax, 4096 |
701 | add eax, 4096 |
702 | sub eax, new_app_base |
702 | sub eax, new_app_base |
Line 750... | Line 750... | ||
750 | jnz .release |
750 | jnz .release |
751 | .not_used: |
751 | .not_used: |
752 | mov edx, [CURRENT_TASK] |
752 | mov edx, [CURRENT_TASK] |
753 | shl edx, 8 |
753 | shl edx, 8 |
754 | mov esi, dword [edx+PROC_BASE+APPDATA.heap_base]; heap_base |
754 | mov esi, dword [edx+SLOT_BASE+APPDATA.heap_base]; heap_base |
755 | mov edi, dword [edx+PROC_BASE+APPDATA.heap_top]; heap_top |
755 | mov edi, dword [edx+SLOT_BASE+APPDATA.heap_top]; heap_top |
756 | sub ebx, [edx+PROC_BASE+APPDATA.mem_size] |
756 | sub ebx, [edx+SLOT_BASE+APPDATA.mem_size] |
757 | neg ebx |
757 | neg ebx |
758 | call update_mem_size |
758 | call update_mem_size |
759 | add esi, new_app_base |
759 | add esi, new_app_base |
760 | add edi, new_app_base |
760 | add edi, new_app_base |
761 | shr esi, 12 |
761 | shr esi, 12 |
762 | shr edi, 12 |
762 | shr edi, 12 |