/kernel/branches/Kolibri-acpi/core/dll.inc |
---|
594,7 → 594,7 |
jz .err_2 |
mov edx, [file_size] ;preallocate page memory |
shr eax, 10 |
shr eax, 9 |
lea edi, [page_tabs+eax] |
add edx, 4095 |
shr edx, 12 |
605,6 → 605,8 |
or eax, PG_UWR |
stosd |
xor eax, eax |
stosd |
dec edx |
jnz @B |
649,7 → 651,7 |
test eax, eax |
jz .err_2 |
shr eax, 10 ; and remap pages. |
shr eax, 9 ; and remap pages. |
mov ecx, [file_size] |
add ecx, 4095 |
656,7 → 658,7 |
shr ecx, 12 |
mov esi, [km_file] |
shr esi, 10 |
shr esi, 9 |
add esi, page_tabs |
lea edi, [page_tabs+eax] |
667,6 → 669,8 |
and eax, 0xFFFFF000 |
or eax, PG_UWR |
stosd |
xor eax, eax |
stosd |
loop @B |
stdcall free_kernel_space, [km_file] ; release allocated kernel space |
1222,7 → 1226,7 |
mov [eax+HDLL.parent], esi |
mov edx, ebx |
shr edx, 12 |
or dword [page_tabs+(edx-1)*4], DONT_FREE_BLOCK |
or dword [page_tabs+(edx-1)*8], DONT_FREE_BLOCK |
; copy entries of page table from kernel-side image to usermode |
; use copy-on-write for user-mode image, so map as readonly |
xor edi, edi |
1229,10 → 1233,10 |
mov ecx, [esi+DLLDESCR.data] |
shr ecx, 12 |
.map_pages_loop: |
mov eax, [page_tabs+ecx*4] |
mov eax, [page_tabs+ecx*8] |
and eax, not 0xFFF |
or al, PG_UR |
xchg eax, [page_tabs+edx*4] |
xchg eax, [page_tabs+edx*8] |
test al, 1 |
jz @f |
call free_page |
/kernel/branches/Kolibri-acpi/core/heap.inc |
---|
585,7 → 585,7 |
mov [ebx+PROC.heap_top], eax |
sub eax, esi |
shr esi, 10 |
shr esi, 9 |
mov ecx, eax |
sub eax, PAGE_SIZE |
or ecx, FREE_BLOCK |
616,7 → 616,7 |
mov ebx, esi |
shr ebx, 12 |
mov eax, [page_tabs+ebx*4] |
mov eax, [page_tabs+ebx*8] |
test al, FREE_BLOCK |
jz .test_used |
and eax, 0xFFFFF000 |
628,16 → 628,16 |
sub eax, ecx |
or al, FREE_BLOCK |
shr edx, 12 |
mov [page_tabs+edx*4], eax |
mov [page_tabs+edx*8], eax |
@@: |
or ecx, USED_BLOCK |
mov [page_tabs+ebx*4], ecx |
mov [page_tabs+ebx*8], ecx |
shr ecx, 12 |
inc ebx |
dec ecx |
jz .no |
@@: |
mov dword [page_tabs+ebx*4], 2 |
mov dword [page_tabs+ebx*8], 2 |
inc ebx |
dec ecx |
jnz @B |
703,7 → 703,7 |
jae .error |
mov ebx, esi |
shr ebx, 12 |
mov eax, [page_tabs+ebx*4] |
mov eax, [page_tabs+ebx*8] |
mov ecx, eax |
and ecx, 0xFFFFF000 |
add ecx, esi |
740,7 → 740,7 |
sub eax, esi |
jz .nofirst |
or al, FREE_BLOCK |
mov [page_tabs+ebx*4], eax |
mov [page_tabs+ebx*8], eax |
.nofirst: |
mov eax, [alloc_size] |
add eax, 0x1FFF |
749,13 → 749,13 |
add edx, eax |
shr ebx, 12 |
or al, USED_BLOCK |
mov [page_tabs+ebx*4], eax |
mov [page_tabs+ebx*8], eax |
shr eax, 12 |
dec eax |
jz .second_nofill |
inc ebx |
.fill: |
mov dword [page_tabs+ebx*4], 2 |
mov dword [page_tabs+ebx*8], 2 |
inc ebx |
dec eax |
jnz .fill |
764,7 → 764,7 |
sub ecx, edx |
jz .nothird |
or cl, FREE_BLOCK |
mov [page_tabs+ebx*4], ecx |
mov [page_tabs+ebx*8], ecx |
.nothird: |
mov edx, [current_process] |
801,7 → 801,7 |
xor ebx, ebx |
shr esi, 12 |
mov eax, [page_tabs+(esi-1)*4] |
mov eax, [page_tabs+(esi-1)*8] |
test al, USED_BLOCK |
jz .cantfree |
test al, DONT_FREE_BLOCK |
810,7 → 810,7 |
and eax, not 4095 |
mov ecx, eax |
or al, FREE_BLOCK |
mov [page_tabs+(esi-1)*4], eax |
mov [page_tabs+(esi-1)*8], eax |
sub ecx, 4096 |
mov ebx, ecx |
shr ecx, 12 |
817,7 → 817,7 |
jz .released |
.release: |
xor eax, eax |
xchg eax, [page_tabs+esi*4] |
xchg eax, [page_tabs+esi*8] |
test al, 1 |
jz @F |
test eax, PG_SHARED |
877,7 → 877,7 |
js .error |
shr ebx, 12 ; chek block attributes |
lea ebx, [page_tabs+ebx*4] |
lea ebx, [page_tabs+ebx*8] |
mov eax, [ebx-4] ; block attributes |
test al, USED_BLOCK |
jz .error |
885,7 → 885,7 |
jnz .error |
shr edx, 12 |
lea edx, [page_tabs+edx*4] ; unmap offset |
lea edx, [page_tabs+edx*8] ; unmap offset |
mov ecx, [size] |
add ecx, 4095 |
892,8 → 892,8 |
shr ecx, 12 ; unmap size in pages |
shr eax, 12 ; block size + 1 page |
lea ebx, [ebx+eax*4-4] ; block end ptr |
lea eax, [edx+ecx*4] ; unmap end ptr |
lea ebx, [ebx+eax*8-8] ; block end ptr |
lea eax, [edx+ecx*8] ; unmap end ptr |
cmp eax, ebx ; check for overflow |
ja .error |
914,7 → 914,7 |
call free_page ; empty c-o-w page instead this ? |
@@: |
add ebx, 4096 |
add edx, 4 |
add edx, 8 |
dec ecx |
jnz .unmap |
935,7 → 935,7 |
shr esi, 12 |
shr edi, 12 |
@@: |
mov eax, [page_tabs+esi*4] |
mov eax, [page_tabs+esi*8] |
test al, USED_BLOCK |
jz .test_free |
shr eax, 12 |
950,7 → 950,7 |
cmp edx, edi |
jae .exit |
mov ebx, [page_tabs+edx*4] |
mov ebx, [page_tabs+edx*8] |
test bl, USED_BLOCK |
jz .next_free |
961,11 → 961,11 |
.next_free: |
test bl, FREE_BLOCK |
jz .err |
and dword [page_tabs+edx*4], 0 |
and dword [page_tabs+edx*8], 0 |
add eax, ebx |
and eax, not 4095 |
or eax, FREE_BLOCK |
mov [page_tabs+esi*4], eax |
mov [page_tabs+esi*8], eax |
jmp @B |
.exit: |
xor eax, eax |
995,7 → 995,7 |
lea ecx, [eax - 0x1000] |
shr ecx, 12 |
mov edx, [page_tabs+ecx*4] |
mov edx, [page_tabs+ecx*8] |
test dl, USED_BLOCK |
jnz @f |
; attempt to realloc invalid pointer |
1024,7 → 1024,7 |
jz .release_done |
dec edx |
xor eax, eax |
xchg eax, [page_tabs+edx*4] |
xchg eax, [page_tabs+edx*8] |
test al, 1 |
jz .loop |
call free_page |
1036,7 → 1036,7 |
sub ebx, ecx |
cmp ebx, 1 |
jnz .nofreeall |
mov eax, [page_tabs+ecx*4] |
mov eax, [page_tabs+ecx*8] |
and eax, not 0xFFF |
mov edx, [current_process] |
mov ebx, [edx+PROC.mem_used] |
1043,7 → 1043,7 |
sub ebx, eax |
add ebx, 0x1000 |
or al, FREE_BLOCK |
mov [page_tabs+ecx*4], eax |
mov [page_tabs+ecx*8], eax |
push esi edi |
mov esi, [edx+PROC.heap_base] |
mov edi, [edx+PROC.heap_top] |
1055,7 → 1055,7 |
sub edx, ecx |
shl ebx, 12 |
or ebx, USED_BLOCK |
xchg [page_tabs+ecx*4], ebx |
xchg [page_tabs+ecx*8], ebx |
shr ebx, 12 |
sub ebx, edx |
push ebx ecx edx |
1079,10 → 1079,10 |
@@: |
cmp edx, esi |
jae .merge_done |
mov eax, [page_tabs+edx*4] |
mov eax, [page_tabs+edx*8] |
test al, USED_BLOCK |
jnz .merge_done |
and dword [page_tabs+edx*4], 0 |
and dword [page_tabs+edx*8], 0 |
shr eax, 12 |
add edx, eax |
shl eax, 12 |
1091,7 → 1091,7 |
.merge_done: |
pop esi |
or ebx, FREE_BLOCK |
mov [page_tabs+ecx*4], ebx |
mov [page_tabs+ecx*8], ebx |
.ret: |
mov ecx, [current_process] |
lea ecx, [ecx+PROC.heap_lock] |
1106,7 → 1106,7 |
shr eax, 12 |
cmp edx, eax |
jae .cant_inplace |
mov eax, [page_tabs+edx*4] |
mov eax, [page_tabs+edx*8] |
test al, FREE_BLOCK |
jz .cant_inplace |
shr eax, 12 |
1116,18 → 1116,18 |
jz @f |
shl eax, 12 |
or al, FREE_BLOCK |
mov [page_tabs+ebx*4], eax |
mov [page_tabs+ebx*8], eax |
@@: |
mov eax, ebx |
sub eax, ecx |
shl eax, 12 |
or al, USED_BLOCK |
mov [page_tabs+ecx*4], eax |
mov [page_tabs+ecx*8], eax |
lea eax, [ecx+1] |
shl eax, 12 |
push eax |
push edi |
lea edi, [page_tabs+edx*4] |
lea edi, [page_tabs+edx*8] |
mov eax, 2 |
sub ebx, edx |
mov ecx, ebx |
1155,7 → 1155,7 |
.find_place: |
cmp esi, edi |
jae .place_not_found |
mov eax, [page_tabs+esi*4] |
mov eax, [page_tabs+esi*8] |
test al, FREE_BLOCK |
jz .next_place |
shr eax, 12 |
1177,22 → 1177,22 |
add esi, ebx |
shl eax, 12 |
or al, FREE_BLOCK |
mov [page_tabs+esi*4], eax |
mov [page_tabs+esi*8], eax |
pop esi |
@@: |
mov eax, ebx |
shl eax, 12 |
or al, USED_BLOCK |
mov [page_tabs+esi*4], eax |
mov [page_tabs+esi*8], eax |
inc esi |
mov eax, esi |
shl eax, 12 |
push eax |
mov eax, [page_tabs+ecx*4] |
mov eax, [page_tabs+ecx*8] |
and eax, not 0xFFF |
or al, FREE_BLOCK |
sub edx, ecx |
mov [page_tabs+ecx*4], eax |
mov [page_tabs+ecx*8], eax |
inc ecx |
dec ebx |
dec edx |
1199,8 → 1199,8 |
jz .no |
@@: |
xor eax, eax |
xchg eax, [page_tabs+ecx*4] |
mov [page_tabs+esi*4], eax |
xchg eax, [page_tabs+ecx*8] |
mov [page_tabs+esi*8], eax |
mov eax, ecx |
shl eax, 12 |
invlpg [eax] |
1216,7 → 1216,7 |
add [edx+PROC.mem_used], ebx |
pop ebx |
@@: |
mov dword [page_tabs+esi*4], 2 |
mov dword [page_tabs+esi*8], 2 |
inc esi |
dec ebx |
jnz @b |
1441,10 → 1441,10 |
mov [size], ecx |
shr ecx, 12 |
shr eax, 10 |
shr eax, 9 |
mov esi, [esi+SMEM.base] |
shr esi, 10 |
shr esi, 9 |
lea edi, [page_tabs+eax] |
add esi, page_tabs |
1457,6 → 1457,7 |
and eax, 0xFFFFF000 |
or eax, edx |
stosd |
movsd |
loop @B |
xor edx, edx |
/kernel/branches/Kolibri-acpi/core/memory.inc |
---|
131,7 → 131,7 |
and eax, [pte_valid_mask] |
mov ebx, [esp+8] ; lin_addr |
shr ebx, 12 |
mov [page_tabs+ebx*4], eax |
mov [page_tabs+ebx*8], eax |
mov eax, [esp+8] ; lin_addr |
pop ebx |
invlpg [eax] |
194,7 → 194,8 |
or edx, [flags] |
and edx, [pte_valid_mask] |
@@: |
mov [page_tabs+eax*4], edx |
mov [page_tabs+eax*8], edx |
mov [page_tabs+eax*8+4], dword 0 |
invlpg [ebx] |
inc eax |
add ebx, edi |
232,12 → 233,14 |
and eax, [pte_valid_mask ] |
mov edi, ebx |
shr edi, 12 |
lea edi, [page_tabs+edi*4] |
lea edi, [page_tabs+edi*8] |
@@: |
stosd |
mov [edi], eax |
mov [edi+4], dword 0 |
invlpg [ebx] |
add eax, 0x1000 |
add ebx, 0x1000 |
add edi, 8 |
loop @B |
pop edi |
264,7 → 267,7 |
mov edi, eax |
shr esi, 12 |
lea esi, [page_tabs+esi*4] |
lea esi, [page_tabs+esi*8] |
push ecx |
mov ecx, pg_data.mutex |
295,7 → 298,7 |
mov ebx, eax |
.next: |
add edi, 0x1000 |
add esi, 4 |
add esi, 8 |
loop @B |
mov [pg_data.pages_free], ebp |
320,12 → 323,13 |
mov edi, eax |
mov edx, eax |
shr edi, 10 |
shr edi, 9 |
add edi, page_tabs |
xor eax, eax |
@@: |
stosd |
stosd |
invlpg [edx] |
add edx, 0x1000 |
loop @b |
338,13 → 342,14 |
proc map_page_table stdcall, lin_addr:dword, phis_addr:dword |
push ebx |
mov ebx, [lin_addr] |
shr ebx, 22 |
shr ebx, 21 |
mov eax, [phis_addr] |
and eax, not 0xFFF |
or eax, PG_UWR |
mov dword [master_tab+ebx*4], eax |
mov [master_tab+ebx*8], eax |
mov [master_tab+ebx*8+4], dword 0 |
mov eax, [lin_addr] |
shr eax, 10 |
shr eax, 9 |
add eax, page_tabs |
invlpg [eax] |
pop ebx |
437,11 → 442,11 |
mov ecx, pg_data.mutex |
call mutex_lock |
@@: |
mov eax, [app_page_tabs+edi*4] |
mov eax, [app_page_tabs+edi*8] |
test eax, 1 |
jz .next |
mov dword [app_page_tabs+edi*4], 0 |
mov dword [app_page_tabs+edi*8], 0 |
invlpg [ebx] |
call free_page |
476,10 → 481,10 |
push esi ;new size |
push edi ;old size |
add edi, 0x3FFFFF |
and edi, not(0x3FFFFF) |
add esi, 0x3FFFFF |
and esi, not(0x3FFFFF) |
add edi, 0x1FFFFF |
and edi, not(0x1FFFFF) |
add esi, 0x1FFFFF |
and esi, not(0x1FFFFF) |
cmp edi, esi |
jae .grow |
491,7 → 496,7 |
stdcall map_page_table, edi, eax |
push edi |
shr edi, 10 |
shr edi, 9 |
add edi, page_tabs |
mov ecx, 1024 |
xor eax, eax |
499,7 → 504,7 |
rep stosd |
pop edi |
add edi, 0x00400000 |
add edi, 0x00200000 |
cmp edi, esi |
jb @B |
.grow: |
546,7 → 551,7 |
cmp eax, 0x400000 |
jb @f |
shr eax, 12 |
mov eax, [page_tabs+(eax+(OS_BASE shr 12))*4] |
mov eax, [page_tabs+(eax+(OS_BASE shr 12))*8] |
@@: |
and eax, 0xFFFFF000 |
ret |
588,13 → 593,13 |
shr ebx, 12 |
mov ecx, ebx |
shr ecx, 10 |
mov edx, [master_tab+ecx*4] |
shr ecx, 9 |
mov edx, [master_tab+ecx*8] |
test edx, PG_READ |
jz .fail ;таблица страниц не создана |
;неверный адрес в программе |
mov eax, [page_tabs+ebx*4] |
mov eax, [page_tabs+ebx*8] |
test eax, 2 |
jz .fail ;адрес не зарезервирован для ; |
;использования. Ошибка |
703,7 → 708,7 |
count dd ? |
process dd ? |
endl |
xchg bx, bx |
mov [count], 0 |
cmp [buf_size], 0 |
jz .exit |
829,7 → 834,7 |
; out: CF cleared <=> failed |
; destroys: only eax |
proc safe_map_page stdcall, slot:dword, req_access:dword, ofs:dword |
mov eax, [esi+edx*4] |
mov eax, [esi+edx*8] |
test al, PG_READ |
jz .not_present |
test al, PG_WRITE |
851,7 → 856,7 |
test eax, eax |
jz .fail |
or al, PG_UWR |
mov [esi+edx*4], eax |
mov [esi+edx*8], eax |
jmp .map |
.resolve_readonly: |
; readonly page, probably copy-on-write |
893,7 → 898,7 |
test eax, eax |
jz .no_hdll |
or al, PG_UWR |
mov [esi+edx*4], eax |
mov [esi+edx*8], eax |
stdcall map_page, edi, eax, [req_access] |
push esi edi |
mov esi, ebx |
1024,7 → 1029,8 |
mov edx, ebx |
shr ebx, 12 |
xor eax, eax |
mov [page_tabs+ebx*4], eax |
mov [page_tabs+ebx*8], eax |
mov [page_tabs+ebx*8+4], eax |
invlpg [edx] |
mov ebx, [ipc_pdir] |
1031,7 → 1037,8 |
mov edx, ebx |
shr ebx, 12 |
xor eax, eax |
mov [page_tabs+ebx*4], eax |
mov [page_tabs+ebx*8], eax |
mov [page_tabs+ebx*8+4], eax |
invlpg [edx] |
mov ebx, [ipc_ptab] |
1038,7 → 1045,8 |
mov edx, ebx |
shr ebx, 12 |
xor eax, eax |
mov [page_tabs+ebx*4], eax |
mov [page_tabs+ebx*8], eax |
mov [page_tabs+ebx*8+4], eax |
invlpg [edx] |
mov eax, [dst_slot] |
/kernel/branches/Kolibri-acpi/core/sched.inc |
---|
56,9 → 56,6 |
uglobal |
align 4 |
; far_jump: |
; .offs dd ? |
; .sel dw ? |
context_counter dd 0 ;noname & halyavin |
next_usage_update dd 0 |
timer_ticks dd 0 |
103,15 → 100,29 |
mov esp, [ebx+APPDATA.saved_esp] |
; set new thread io-map |
mov eax, [ebx+APPDATA.io_map] |
mov dword [page_tabs+((tss._io_map_0 and -4096) shr 10)], eax |
; mov dword [page_tabs+((tss._io_map_0 and -4096) shr 9)], eax |
mov eax, [ebx+APPDATA.io_map+4] |
mov dword [page_tabs+((tss._io_map_1 and -4096) shr 10)], eax |
; mov dword [page_tabs+((tss._io_map_1 and -4096) shr 9)], eax |
; set new thread memory-map |
mov eax, [ebx+APPDATA.process] |
cmp eax, [current_process] |
je @f |
mov [current_process], eax |
mov eax, [eax+PROC.pdt_0_phys] |
mov ecx, [eax+PROC.pdt_0_phys] |
mov eax, [eax+PROC.pdt_1_phys] |
or ecx, PG_READ |
or eax, PG_READ |
mov [sys_pml3], ecx |
mov [sys_pml3+8], eax |
or ecx, PG_SWR |
or eax, PG_SWR |
mov [sys_pml2+OS_BASE+8192-20*8], ecx |
mov [sys_pml2+OS_BASE+8192-19*8], eax |
mov eax, sys_pml3-OS_BASE |
mov cr3, eax |
@@: |
; set tss.esp0 |
/kernel/branches/Kolibri-acpi/core/sys32.inc |
---|
306,13 → 306,13 |
push ebx |
shr ebx, 12 |
mov ecx, ebx |
shr ecx, 10 |
mov edx, [master_tab+ecx*4] |
shr ecx, 9 |
mov edx, [master_tab+ecx*8] |
test edx, PG_READ |
jz .fail ;page table is not created |
;incorrect address in the program |
mov eax, [page_tabs+ebx*4] |
mov eax, [page_tabs+ebx*8] |
test eax, 2 |
jz .fail ;address not reserved for use. error |
/kernel/branches/Kolibri-acpi/core/taskman.inc |
---|
337,11 → 337,11 |
mov [process], eax |
mov eax, [app_size] |
add eax, 0x3FFFFF |
shr eax, 22 |
add eax, 0x1FFFFF |
shr eax, 21 |
mov [app_tabs], eax |
stdcall kernel_alloc, 0x2000 |
stdcall kernel_alloc, 0x3000 |
test eax, eax |
jz .fail |
mov [process], eax |
371,20 → 371,15 |
mov eax, edi |
call get_pg_addr |
mov [edi-4096+PROC.pdt_0_phys], eax |
lea eax, [edi+4096] |
call get_pg_addr |
mov [edi-4096+PROC.pdt_1_phys], eax |
mov ecx, (OS_BASE shr 20)/4 |
mov ecx, 2048 |
xor eax, eax |
rep stosd |
mov ecx, (OS_BASE shr 20)/4 |
mov esi, sys_proc+PROC.pdt_0+(OS_BASE shr 20) |
rep movsd |
mov eax, [edi-8192+PROC.pdt_0_phys] |
or eax, PG_SWR |
mov [edi-4096+(page_tabs shr 20)], eax |
lea edx, [edi-4096] |
lea edx, [edi-8192] |
mov esi, [app_tabs] |
.alloc_page_dir: |
393,6 → 388,7 |
jz .fail |
or eax, PG_UWR |
mov [edx], eax |
mov [edx+4], dword 0 |
mov edi, [tmp_task_ptab] |
stdcall map_page, edi, eax, PG_SWR |
400,7 → 396,7 |
xor eax, eax |
rep stosd |
add edx, 4 |
add edx, 8 |
dec esi |
jnz .alloc_page_dir |
430,7 → 426,7 |
push esi |
mov esi, [pg_tab] |
mov ecx, 1024 |
mov ecx, 512 |
.free: |
mov eax, [esi] |
test eax, 1 |
441,7 → 437,7 |
jnz .next ;skip shared pages |
call free_page |
.next: |
add esi, 4 |
add esi, 8 |
dec ecx |
jnz .free |
pop esi |
467,7 → 463,7 |
mov esi, [esp] |
add esi, PROC.pdt_0 |
mov edi, (0x80000000 shr 20)/4 |
mov edi, 1024 |
.destroy: |
mov eax, [esi] |
test eax, 1 |
478,7 → 474,7 |
mov eax, [esi] |
call free_page |
.next: |
add esi, 4 |
add esi, 8 |
dec edi |
jnz .destroy |
808,7 → 804,7 |
shr ecx, 12 ; image pages |
mov edi, page_tabs |
shr esi, 10 |
shr esi, 9 |
add esi, edi |
.map_image: |
816,6 → 812,7 |
and eax, -4096 |
or eax, PG_UWR |
stosd |
movsd |
dec edx |
loop .map_image |
828,6 → 825,8 |
or eax, PG_UWR |
stosd |
xor eax, eax |
stosd |
dec edx |
jnz .map_bss |
867,7 → 866,41 |
add esi, ecx |
jmp .check_cmdline |
.copy_full_path: |
mov esi, [current_slot] |
mov esi, [esi+APPDATA.cur_dir] |
mov ebx, 1023 |
mov al, '/' |
stosb |
.copy_path: |
dec ebx |
jz .finish_path |
lodsb |
stosb |
test al, al |
jnz .copy_path |
mov byte [edi-1], '/' |
cmp ecx, ebx |
jbe @F |
mov ecx, ebx |
@@: |
lea esi, [ebp+sizeof.APP_HDR] |
xor eax, eax |
rep movsb |
stosb |
jmp .check_cmdline |
.finish_path: |
xor eax, eax |
stosb |
jmp .check_cmdline |
.copy_filename: |
cmp byte [esi], '/' |
jne .copy_full_path |
rep movsb |
stosb |
914,8 → 947,8 |
mov fs, dx |
.cleanup: |
stdcall free_kernel_space, [ebp+APP_HDR.img_base] |
stdcall kernel_free, ebp |
; stdcall free_kernel_space, [ebp+APP_HDR.img_base] |
; stdcall kernel_free, ebp |
.exit: |
popad |
iretd |
/kernel/branches/Kolibri-acpi/core/v86.inc |
---|
107,8 → 107,10 |
add eax, edx |
loop @b |
mov eax, [sys_proc+PROC.pdt_0_phys] |
mov cr3, eax |
mov eax, sys_proc |
push ebx |
; call set_cr3 |
pop ebx |
popfd |
pop edi |