/kernel/trunk/core/exports.inc |
---|
93,17 → 93,17 |
dd szPciWrite8 , pci_write8 |
dd szPciWrite16 , pci_write16 |
dd szAllocPage , alloc_page |
dd szAllocPages , alloc_pages |
dd szAllocPage , alloc_page ;stdcall |
dd szAllocPages , alloc_pages ;stdcall |
dd szFreePage , free_page |
dd szMapPage , map_page |
dd szMapPage , map_page ;stdcall |
dd szMapSpace , map_space |
dd szGetPgAddr , get_pg_addr |
dd szCommitPages , commit_pages ;not implemented |
dd szReleasePages , release_pages |
dd szAllocKernelSpace, alloc_kernel_space |
dd szFreeKernelSpace , free_kernel_space |
dd szAllocKernelSpace, alloc_kernel_space ;stdcall |
dd szFreeKernelSpace , free_kernel_space ;stdcall |
dd szKernelAlloc , kernel_alloc |
dd szKernelFree , kernel_free |
dd szUserAlloc , user_alloc |
/kernel/trunk/core/heap.inc |
---|
269,6 → 269,10 |
proc alloc_kernel_space stdcall, size:dword |
local block_ind:DWORD |
push ebx |
push esi |
push edi |
mov eax, [size] |
add eax, 4095 |
and eax, not 4095 |
356,6 → 360,9 |
mov ebx, [size] |
sub [heap_free], ebx |
and [heap_mutex], 0 |
pop edi |
pop esi |
pop ebx |
ret |
.m_eq_size: |
remove_from_list edi |
376,16 → 383,24 |
mov ebx, [size] |
sub [heap_free], ebx |
and [heap_mutex], 0 |
pop edi |
pop esi |
pop ebx |
ret |
.error: |
xor eax, eax |
mov [heap_mutex], eax |
pop edi |
pop esi |
pop ebx |
ret |
endp |
align 4 |
proc free_kernel_space stdcall uses ebx ecx edx esi edi, base:dword |
push ebx |
push esi |
push edi |
mov ebx, heap_mutex |
call wait_mutex ;ebx |
480,6 → 495,9 |
xor eax, eax |
mov [heap_mutex], eax |
dec eax |
pop edi |
pop esi |
pop ebx |
ret |
.insert: |
remove_from_used esi |
499,10 → 517,16 |
xor eax, eax |
mov [heap_mutex], eax |
dec eax |
pop edi |
pop esi |
pop ebx |
ret |
.fail: |
xor eax, eax |
mov [heap_mutex], eax |
pop edi |
pop esi |
pop ebx |
ret |
endp |
/kernel/trunk/core/memory.inc |
---|
13,6 → 13,7 |
pushfd |
cli |
push ebx |
mov ebx, [page_start] |
mov ecx, [page_end] |
.l1: |
21,6 → 22,7 |
add ebx,4 |
cmp ebx, ecx |
jb .l1 |
pop ebx |
popfd |
xor eax,eax |
ret |
31,6 → 33,7 |
lea eax, [eax+ebx*8] |
shl eax, 12 |
dec [pg_data.pages_free] |
pop ebx |
popfd |
ret |
endp |
38,6 → 41,8 |
align 4 |
proc alloc_pages stdcall, count:dword |
pushfd |
push ebx |
push edi |
cli |
mov eax, [count] |
add eax, 7 |
59,7 → 64,10 |
inc ecx |
cmp ecx,ebx |
jb .match |
.fail: xor eax, eax |
.fail: |
xor eax, eax |
pop edi |
pop ebx |
popfd |
ret |
.next: |
66,6 → 74,8 |
inc ecx |
cmp ecx, ebx |
jb .find |
pop edi |
pop ebx |
popfd |
xor eax, eax |
ret |
81,6 → 91,8 |
mov ebx, [count] |
shl ebx, 3 |
sub [pg_data.pages_free], ebx |
pop edi |
pop ebx |
popfd |
ret |
endp |
/kernel/trunk/core/peload.inc |
---|
179,14 → 179,6 |
jmp .L24 |
.L22: |
push eax |
push edx |
mov edx, 0x400 ;bochs |
mov al,0xff ;bochs |
out dx, al ;bochs |
pop edx |
pop eax |
mov ecx, [esp+16] |
add ebx, [ecx+40] |