Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 356 → Rev 357

/kernel/trunk/const.inc
226,10 → 226,11
;skin_data equ OS_BASE+0x0778000
 
draw_data equ OS_BASE+0x0800000
sysint_stack_data equ OS_BASE+0x0803000
 
tss_data equ OS_BASE+0x0920000
tss_data equ 0x0803000 ;OS_BASE+0x0920000
 
HEAP_BASE equ 0xA0B000 ;x00C00000
 
pages_tab equ 0x60000000
master_tab equ 0x60180000
current_pgdir equ 0x60180000
238,11 → 239,7
sys_master_tab equ OS_BASE+0x00051000
sys_pgmap equ OS_BASE+0x00052000
 
;lfb_start equ 0x00800000
 
;new_app_pdir equ OS_BASE+0x01000000
;new_app_master_table equ OS_BASE+0x01001000
;new_app_ptable equ OS_BASE+0x01002000
 
new_app_base equ 0x60400000
 
/kernel/trunk/core/dll.inc
512,13 → 512,13
.exit:
push eax
lea edi, [eax+ebx] ;cleanup remain space
mov ecx, ebx ;from file end
add ecx, 4095
and ecx, not 4095
mov ecx, 4096 ;from file end
and ebx, 4095
sub ecx, ebx
xor eax, eax
cld
rep stosb
mov ebx, [file_size]
pop eax
ret
.cleanup:
/kernel/trunk/core/fpu.inc
6,9 → 6,6
bt [cpu_caps], CAPS_SSE
jnc .no_SSE
 
stdcall kernel_alloc, 512*256
mov [fpu_data], eax
 
mov ebx, cr4
mov ecx, cr0
or ebx, CR4_OSFXSR+CR4_OSXMMEXPT
29,16 → 26,14
xorps xmm5, xmm5
xorps xmm6, xmm6
xorps xmm7, xmm7
fxsave [eax]
fxsave [fpu_data] ;[eax]
ret
.no_SSE:
stdcall kernel_alloc, 112*256
mov [fpu_data], eax
mov ecx, cr0
and ecx, not CR0_EM
or ecx, CR0_MP+CR0_NE
mov cr0, ecx
fnsave [eax]
fnsave [fpu_data]
ret
 
align 4
118,8 → 113,6
fpu_owner dd 1
endg
 
 
 
reg_eip equ ebp+4
reg_cs equ ebp+8
reg_eflags equ ebp+12
/kernel/trunk/core/heap.inc
1,12 → 1,9
 
HEAP_BASE equ 0x00C00000
;HEAP_SIZE equ 0x01000000
 
struc MEM_BLOCK
{ .next_block dd ?
.prev_block dd ? ;+4
.list_next dd ? ;+8
.list_prev dd ? ;+12
.list_fd dd ? ;+8
.list_bk dd ? ;+12
.base dd ? ;+16
.size dd ? ;+20
.flags dd ? ;+24
13,6 → 10,7
.handle dd ? ;+28
}
 
MEM_LIST_OFFSET equ 8
FREE_BLOCK equ 4
USED_BLOCK equ 8
 
24,8 → 22,8
 
block_next equ MEM_BLOCK.next_block
block_prev equ MEM_BLOCK.prev_block
list_next equ MEM_BLOCK.list_next
list_prev equ MEM_BLOCK.list_prev
list_fd equ MEM_BLOCK.list_fd
list_bk equ MEM_BLOCK.list_bk
block_base equ MEM_BLOCK.base
block_size equ MEM_BLOCK.size
block_flags equ MEM_BLOCK.flags
40,18 → 38,18
}
 
macro remove_from_list op
{ mov edx, [op+list_next]
mov ecx, [op+list_prev]
{ mov edx, [op+list_fd]
mov ecx, [op+list_bk]
test edx, edx
jz @f
mov [edx+list_prev], ecx
mov [edx+list_bk], ecx
@@:
test ecx, ecx
jz @f
mov [ecx+list_next], edx
mov [ecx+list_fd], edx
@@:
mov [op+list_next],0
mov [op+list_prev],0
mov [op+list_fd],0
mov [op+list_bk],0
}
 
macro remove_from_free op
72,11 → 70,12
 
macro remove_from_used op
{
remove_from_list op
cmp [mem_used_list], op
jne @f
mov [mem_used_list], edx
@@:
mov edx, [op+list_fd]
mov ecx, [op+list_bk]
mov [edx+list_bk], ecx
mov [ecx+list_fd], edx
mov [op+list_fd], 0
mov [op+list_bk], 0
}
 
align 4
97,6 → 96,10
mov [mem_block_end], mem_block_map+512
mov [mem_block_arr], HEAP_BASE
 
mov eax, mem_used.fd-MEM_LIST_OFFSET
mov [mem_used.fd], eax
mov [mem_used.bk], eax
 
stdcall alloc_pages, dword 32
mov ecx, 32
mov edx, eax
109,13 → 112,12
jnz .l1
 
mov edi, HEAP_BASE
mov ebx, edi
add ebx, MEM_BLOCK_SIZE
mov ebx, HEAP_BASE+MEM_BLOCK_SIZE
xor eax, eax
mov [edi+block_next], ebx
mov [edi+block_prev], eax
mov [edi+list_next], eax
mov [edi+list_prev], eax
mov [edi+list_fd], eax
mov [edi+list_bk], eax
mov [edi+block_base], HEAP_BASE
mov [edi+block_size], 4096*MEM_BLOCK_SIZE
mov [edi+block_flags], USED_BLOCK
122,7 → 124,8
 
mov [ebx+block_next], eax
mov [ebx+block_prev], eax
mov [ebx+list_next], eax
mov [ebx+list_fd], eax
mov [ebx+list_bk], eax
mov [ebx+block_base], HEAP_BASE+4096*MEM_BLOCK_SIZE
 
mov ecx, [MEM_AMOUNT]
135,7 → 138,6
mov [mem_block_mask], eax
mov [mem_block_mask+4],0x80000000
 
mov [mem_used_list], eax
mov [mem_block_list+63*4], ebx
mov byte [mem_block_map], 0xFC
and [heap_mutex], 0
220,6 → 222,15
endp
 
proc free_mem_block
mov dword [eax], 0
mov dword [eax+4], 0
mov dword [eax+8], 0
mov dword [eax+12], 0
mov dword [eax+16], 0
; mov dword [eax+20], 0
mov dword [eax+24], 0
mov dword [eax+28], 0
 
sub eax, [mem_block_arr]
shr eax, 5
 
285,8 → 296,8
mov eax, [edi+block_prev]
mov [esi+block_prev], eax
mov [edi+block_prev], esi
mov [esi+list_next], 0
mov [esi+list_prev], 0
mov [esi+list_fd], 0
mov [esi+list_bk], 0
and eax, eax
jz @f
mov [eax+block_next], esi
318,22 → 329,22
btr [mem_block_mask], ecx
@@:
mov edx, [mem_block_list+eax*4]
mov [edi+list_next], edx
mov [edi+list_fd], edx
test edx, edx
jz @f
mov [edx+list_prev], edi
mov [edx+list_bk], edi
@@:
mov [mem_block_list+eax*4], edi
bts [mem_block_mask], eax
.m_eq_ind:
mov ebx, [mem_used_list]
mov [esi+list_next], ebx
test ebx, ebx
jz @f
mov [ebx+list_prev], esi
@@:
mov ecx, mem_used.fd-MEM_LIST_OFFSET
mov edx, [ecx+list_fd]
mov [esi+list_fd], edx
mov [esi+list_bk], ecx
mov [ecx+list_fd], esi
mov [edx+list_bk], esi
 
mov [esi+block_flags], USED_BLOCK
mov [mem_used_list], esi
mov eax, [esi+block_base]
mov ebx, [size]
sub [heap_free], ebx
346,13 → 357,13
jnz @f
btr [mem_block_mask], ebx
@@:
mov ecx, [mem_used_list]
mov [edi+list_next], ecx
test ecx, ecx
jnz @f
mov [ecx+list_prev], edi
@@:
mov [mem_used_list], edi
mov ecx, mem_used.fd-MEM_LIST_OFFSET
mov edx, [ecx+list_fd]
mov [edi+list_fd], edx
mov [edi+list_bk], ecx
mov [ecx+list_fd], edi
mov [edx+list_bk], edi
 
mov [edi+block_flags], USED_BLOCK
mov eax, [edi+block_base]
mov ebx, [size]
372,14 → 383,14
call wait_mutex ;ebx
 
mov eax, [base]
mov esi, [mem_used_list]
mov esi, [mem_used.fd]
@@:
test esi, esi
jz .fail
cmp esi, mem_used.fd-MEM_LIST_OFFSET
je .fail
 
cmp [esi+block_base], eax
je .found
mov esi, [esi+list_next]
mov esi, [esi+list_fd]
jmp @b
.found:
cmp [esi+block_flags], USED_BLOCK
452,10 → 463,10
@@:
mov esi, [mem_block_list+eax*4]
mov [mem_block_list+eax*4], edi
mov [edi+list_next], esi
mov [edi+list_fd], esi
test esi, esi
jz @f
mov [esi+list_prev], edi
mov [esi+list_bk], edi
@@:
bts [mem_block_mask], eax
.m_eq:
471,10 → 482,10
 
mov edi, [mem_block_list+eax*4]
mov [mem_block_list+eax*4], esi
mov [esi+list_next], edi
mov [esi+list_fd], edi
test edi, edi
jz @f
mov [edi+list_prev], esi
mov [edi+list_bk], esi
@@:
bts [mem_block_mask], eax
mov [esi+block_flags],FREE_BLOCK
500,14 → 511,14
and eax, not 4095;
mov [size], eax
and eax, eax
jz .error
jz .err
mov ebx, eax
shr ebx, 12
mov [pages_count], ebx
 
stdcall alloc_kernel_space, eax
and eax, eax
jz .error
test eax, eax
jz .err
mov [lin_addr], eax
 
mov ecx, [pages_count]
522,7 → 533,7
stdcall alloc_pages, ebx
pop ecx ; yes ecx!!!
and eax, eax
jz .error
jz .err
 
mov edi, eax
mov edx, [lin_addr]
536,12 → 547,12
mov ecx, [pages_count]
and ecx, 7
jz .end
 
@@: push ecx
@@:
push ecx
call alloc_page
pop ecx
test eax, eax
jz .error
jz .err
 
stdcall map_page,edx,eax,dword PG_SW
add edx, 0x1000
550,7 → 561,7
.end:
mov eax, [lin_addr]
ret
.error:
.err:
xor eax, eax
ret
endp
563,14 → 574,14
call wait_mutex ;ebx
 
mov eax, [base]
mov esi, [mem_used_list]
mov esi, [mem_used.fd]
@@:
test esi, esi
jz .fail
cmp esi, mem_used.fd-MEM_LIST_OFFSET
je .fail
 
cmp [esi+block_base], eax
je .found
mov esi, [esi+list_next]
mov esi, [esi+list_fd]
jmp @b
.found:
cmp [esi+block_flags], USED_BLOCK
/kernel/trunk/core/memory.inc
1,5 → 1,5
 
tmp_page_tab equ 0x00C00000
tmp_page_tab equ HEAP_BASE
 
align 4
proc mem_test
18,6 → 18,7
cmp dword [edi], 'TEST'
xchg ebx, dword [edi]
je @b
mov [MEM_AMOUNT], edi
 
and eax, not (CR0_CD+CR0_NW) ;enable caching
mov cr0, eax
27,12 → 28,35
endp
 
align 4
proc init_memEx
proc init_mem
 
mov eax, [MEM_AMOUNT]
 
mov [pg_data.mem_amount], eax
mov [pg_data.kernel_max], eax
 
shr eax, 12
mov edx, eax
mov [pg_data.pages_count], eax
mov [pg_data.kernel_pages], eax
 
shr eax, 3
mov [pg_data.pagemap_size], eax
 
shr edx, 10
cmp edx, 3
ja @f
inc edx ;at least 4Mb for kernel heap
@@:
mov [pg_data.kernel_tables], edx
 
xor eax, eax
mov edi, sys_pgdir
mov ecx, 2048
cld
rep stosd
 
mov edx, sys_pgdir
bt [cpu_caps], CAPS_PSE
jnc .no_PSE
 
45,71 → 69,53
or ebx, CR4_PGE
@@:
mov cr4, ebx
sub [pg_data.kernel_tables], 2
 
mov dword [sys_pgdir], eax
mov [edx], eax
add eax, 0x00400000
mov dword [sys_pgdir+4], eax
add eax, 0x00400000
mov dword [sys_pgdir+8], eax
mov [edx+4], eax
add edx, 8
 
mov dword [sys_pgdir+0x600], sys_pgdir+PG_SW
 
mov ecx, [pg_data.kernel_tables]
sub ecx, 3 ;4
mov eax, tmp_page_tab+PG_SW
mov edi, sys_pgdir+12 ;16
 
jmp .map_kernel_tabs
mov eax, 0x800000+PG_SW
mov ecx, (HEAP_BASE-0x800000)/4096
jmp .map_low
.no_PSE:
mov eax, PG_SW
mov esi, tmp_page_tab
mov ecx, 3072/4; 4096/4 ;0x0 - 0x00FFFFFF
mov ecx, HEAP_BASE/4096
.map_low:
mov [esi], eax
mov edi, tmp_page_tab
@@: ;
stosd
add eax, 0x1000
mov [esi+4], eax
add eax, 0x1000
mov [esi+8], eax
add eax, 0x1000
mov [esi+12], eax
add eax, 0x1000
add esi, 16
dec ecx
jnz .map_low ;ÿäðî
jnz @B
 
mov ecx, [pg_data.kernel_tables]
shl ecx, 10
xor eax, eax
rep stosd
 
mov ecx, [pg_data.kernel_tables]
mov eax, tmp_page_tab+PG_SW
mov edi, sys_pgdir
mov edi, edx
 
.map_kernel_tabs:
 
mov [edi], eax
stosd
add eax, 0x1000
add edi, 4
dec ecx
jnz .map_kernel_tabs
 
mov edi, tmp_page_tab
bt [cpu_caps], CAPS_PSE
jc @F
add edi, 3072*4 ;4096*4 ;skip low kernel memory
@@:
mov ecx, [pg_data.kernel_tables]
sub ecx, 3
shl ecx, 10
xor eax, eax
cld
rep stosd
 
mov dword [sys_pgdir+0x600], sys_pgdir+PG_SW
 
ret
endp
 
align 4
proc init_page_map
 
mov edi, sys_pgmap
mov ecx, 384/4
mov ecx, (HEAP_BASE/4096)/32 ;384/4
mov ebx, ecx
xor eax,eax
cld
rep stosd
116,18 → 122,15
 
not eax
mov ecx, [pg_data.pagemap_size]
sub ecx, 384
sub ecx, ebx
shr ecx, 2
rep stosd
 
mov edi, sys_pgmap+384
lea edi, [sys_pgmap+ebx*4] ;+384
mov edx, [pg_data.pages_count]
mov ecx, [pg_data.kernel_tables]
bt [cpu_caps], CAPS_PSE
jnc @f
sub ecx, 3
@@:
sub edx, 3072
add ecx, (HEAP_BASE/4096) and 31
sub edx, HEAP_BASE/4096
sub edx, ecx
mov [pg_data.pages_free], edx
 
140,9 → 143,9
mov ecx, ebx
and ecx, 31
shl eax, cl
mov [page_start], edi; sys_pgmap+384
stosd
 
mov [page_start], sys_pgmap+384
mov ebx, sys_pgmap
add ebx, [pg_data.pagemap_size]
mov [page_end], ebx
1348,7 → 1351,6
align 16
irq_tab rd 16
 
 
MEM_FreeSpace rd 1
 
ipc_tmp rd 1
1363,7 → 1365,6
tmp_task_ptab rd 1
tmp_task_data rd 1
 
fpu_data rd 1
fdd_buff rd 1
LFBSize rd 1
 
1395,6 → 1396,8
 
uglobal
align 16
fpu_data:
rb 512
 
mst MEM_STATE
 
1406,7 → 1409,9
srv.fd rd 1
srv.bk rd 1
 
mem_used_list rd 1
mem_used.fd rd 1
mem_used.bk rd 1
 
mem_block_arr rd 1
mem_block_start rd 1
mem_block_end rd 1
1424,6 → 1429,7
event_end rd 1
event_uid rd 1
sys_page_map rd 1
os_stack rd 1
endg
 
if 0
/kernel/trunk/core/sys32.inc
31,7 → 31,6
 
ret
 
 
build_interrupt_table:
 
mov edi, idts+8
623,10 → 622,9
mov eax,[PROC_BASE+eax+APPDATA.dir_table]
stdcall destroy_app_space, eax
 
;; mov esi, [.slot]
pop esi ;restore stack
mov esi, [.slot]
cmp [fpu_owner],esi ; if user fpu last -> fpu user = 1
jne fpu_ok_1
jne @F
 
mov [fpu_owner],1
mov eax, [256+PROC_BASE+APPDATA.fpu_state]
634,11 → 632,11
clts
jnc .no_SSE
fxrstor [eax]
jmp fpu_ok_1
jmp @F
.no_SSE:
fnclex
frstor [eax]
fpu_ok_1:
@@:
 
mov [0xf400],byte 0 ; empty keyboard buffer
mov [0xf500],byte 0 ; empty button buffer
747,25 → 745,23
.nodebug:
popad
 
pusha ; at 0x80000+
mov edi,esi
mov ebx, [.slot]
shl ebx, 8
mov ebx,[PROC_BASE+ebx+APPDATA.pl0_stack]
 
stdcall kernel_free, ebx
 
mov edi, [.slot]
shl edi,8
add edi,0x80000
mov ecx,256/4
mov eax, 0x20202020
stosd
stosd
stosd
mov ecx,244/4
xor eax, eax
rep stosd
popa
 
pusha ; name to spaces
mov edi,esi
shl edi,8
add edi,0x80000+APPDATA.app_name
mov ecx,11
mov eax,' '
rep stosb
popa
 
 
; activate window
movzx eax, word [0xC000 + esi*2]
cmp eax, [0x3004]
824,7 → 820,6
loop newirqfree
popa
 
 
pusha ; remove all port reservations
mov edx,esi
shl edx, 5
910,6 → 905,7
mov [application_table_status],0
mov esi,process_terminated
call sys_msg_board_str
add esp, 4
ret
restore .slot
 
/kernel/trunk/core/taskman.inc
168,7 → 168,8
mov eax,[app_mem]
mov [ebx+APPDATA.mem_size],eax
 
if not GREEDY_KERNEL
if GREEDY_KERNEL
else
mov ecx, [app_mem]
mov edi, [file_size]
add edi, 4095
301,7 → 302,6
ret
endp
 
 
align 4
proc create_app_space stdcall, app_size:dword,img_base:dword,img_size:dword
locals
449,7 → 449,7
.fail:
dec [pg_data.pg_mutex]
cmp [dir_addr], 0
jz @f
je @f
stdcall destroy_app_space, [dir_addr]
@@:
xor eax, eax
968,35 → 968,27
proc set_app_params stdcall,slot:dword, params:dword,\
cmd_line:dword, app_path:dword, flags:dword
 
mov edi, [slot]
mov esi, [fpu_data]
bt [cpu_caps], CAPS_SSE
jnc .no_SSE
locals
pl0_stack dd ?
endl
 
shl edi, 8
mov eax, edi
lea edi, [esi+edi*2]
stdcall kernel_alloc, 0x2000
mov [pl0_stack], eax
 
lea edi, [eax+0x2000-512]
 
mov eax, [slot]
mov ebx, eax
 
shl eax, 8
mov [eax+PROC_BASE+APPDATA.fpu_state], edi
mov [eax+PROC_BASE+APPDATA.fpu_handler], 0
mov [eax+PROC_BASE+APPDATA.sse_handler], 0
 
mov esi, fpu_data
mov ecx, 512/4
jmp @F
.no_SSE:
mov eax, edi
shl eax, 8
mov ebx, edi
shl edi, 7
shl ebx, 4
sub edi, ebx ;edi*=112
add edi, esi
mov [eax+PROC_BASE+APPDATA.fpu_state], edi
mov [eax+PROC_BASE+APPDATA.fpu_handler], 0
mov [eax+PROC_BASE+APPDATA.sse_handler], 0
mov ecx, 112/4
@@:
rep movsd
 
mov ebx,[slot]
cmp ebx,[TASK_COUNT]
jle .noinc
inc dword [TASK_COUNT] ;update number of processes
1012,6 → 1004,8
 
mov ecx, [def_cursor]
mov [PROC_BASE+APPDATA.cursor+ebx],ecx
mov eax, [pl0_stack]
mov [PROC_BASE+APPDATA.pl0_stack+ebx],eax
 
shr ebx,3
mov eax, new_app_base
1105,9 → 1099,8
mov [edi+TSS._gs],graph_data ;selector of graphic segment
mov [edi+TSS._io],word 128
mov [edi+TSS._ss0], os_data
mov ebx,[slot]
shl ebx,12
add ebx,sysint_stack_data+4096
mov ebx, [pl0_stack]
add ebx, 0x2000-512
mov [edi+TSS._esp0],ebx
 
mov ecx, edi ;ecx - address of application TSS
/kernel/trunk/kernel.asm
356,32 → 356,6
mov [0xe024],dword Vesa20_getpixel32
no_mode_0x12:
 
; MEMORY MODEL
 
call mem_test
 
mov [MEM_AMOUNT], eax
 
mov [pg_data.mem_amount], eax
mov [pg_data.kernel_max], eax
 
shr eax, 12
mov edx, eax
mov [pg_data.pages_count], eax
mov [pg_data.kernel_pages], eax
 
shr eax, 3
mov [pg_data.pagemap_size], eax
 
shr edx, 10
cmp edx, 3
ja @f
inc edx ;at least 4Mb for kernel heap
@@:
mov [pg_data.kernel_tables], edx
 
; ENABLE PAGING
 
call test_cpu
; btr [cpu_caps], CAPS_SSE ;test: dont't use sse code
; btr [cpu_caps], CAPS_SSE2 ;test: don't use sse2
393,9 → 367,12
; btr [cpu_caps], CAPS_MTRR ;test: don't use MTRR
bts [cpu_caps], CAPS_TSC ;force use rdtsc
 
call init_memEx
; MEMORY MODEL
call mem_test
call init_mem
call init_page_map
 
; ENABLE PAGING
mov eax, sys_pgdir
mov cr3, eax
 
404,6 → 381,8
mov cr0,eax
 
call init_kernel_heap
stdcall kernel_alloc, 0x2000
mov [os_stack], eax
call init_LFB
call init_mtrr
call init_fpu
580,7 → 559,7
mov esi,boot_setostask
call boot_log
 
mov eax, [fpu_data]
mov eax, fpu_data
mov dword [0x80000+APPDATA.fpu_state], eax
mov dword [0x80000+APPDATA.fpu_handler], 0
mov dword [0x80000+APPDATA.sse_handler], 0
589,32 → 568,26
 
mov dword [0x80000+256+APPDATA.app_name], dword 'OS/I'
mov dword [0x80000+256+APPDATA.app_name+4], dword 'DLE '
mov ebx, [def_cursor]
mov dword [0x80000+256+APPDATA.cursor], ebx
mov edi, [os_stack]
mov dword [0x80000+256+APPDATA.pl0_stack], edi
add edi, 0x2000-512
mov dword [0x80000+256+APPDATA.fpu_state], edi
 
mov esi, fpu_data
mov ecx, 512/4
cld
rep movsd
 
mov dword [0x80000+256+APPDATA.fpu_handler], 0
mov dword [0x80000+256+APPDATA.sse_handler], 0
 
mov ebx, [def_cursor]
mov dword [0x80000+256+APPDATA.cursor], ebx
 
mov ebx, PROC_BASE+256+APP_OBJ_OFFSET
mov dword [0x80000+256+APPDATA.fd_obj], ebx
mov dword [0x80000+256+APPDATA.bk_obj], ebx
 
 
;set fpu save area
mov esi, eax
bt [cpu_caps], CAPS_SSE
jnc .no_sse
 
lea edi, [eax+512]
mov dword [PROC_BASE+256+APPDATA.fpu_state], edi
mov ecx, 512/4
jmp @F
.no_sse:
lea edi, [eax+112]
mov dword [PROC_BASE+256+APPDATA.fpu_state], edi
mov ecx, 112/4
@@:
rep movsd
 
; task list
mov [0x3020+TASKDATA.wnd_number], 1 ; on screen number
mov [0x3020+TASKDATA.pid], 1 ; process id number
632,7 → 605,9
mov [edi+TSS._cr3],eax
mov [edi+TSS._eip],osloop
mov [edi+TSS._eflags],dword 0x11202 ; sti and resume
mov [edi+TSS._esp],sysint_stack_data + 4096*2 ; uses slot 1 stack
mov eax, [os_stack]
add eax, 0x2000-512
mov [edi+TSS._esp], eax
mov [edi+TSS._cs],os_code
mov [edi+TSS._ss],os_data
mov [edi+TSS._ds],os_data
/kernel/trunk/kernel32.inc
176,7 → 176,7
.ev_count dd ? ;+20
.fpu_handler dd ? ;+24
.sse_handler dd ? ;+28
dd ? ;unused ;+32
.pl0_stack dd ? ;unused ;+32
.heap_base dd ? ;+36
.heap_top dd ? ;+40
.cursor dd ? ;+44
/kernel/trunk/memmap.inc
209,19 → 209,11
; 08 dword draw limit - x end
; 0C dword draw limit - y end
;
; 802000 -> 802fff free (4 Kb)
;
; 803000 -> 902fff sysint_stack_data
; - ring0 stacks for ring3 processes
; - used for interrupt handling
; - 256 entries * 4096 step
;
; 903000 -> 91ffff free (116 Kb)
;
; 920000 -> B28000 TSS and IO map for (8192*8)=65536 ports
; 803000 -> 0xA0AFFF TSS and IO map for (8192*8)=65536 ports
; (128+8192)*256 = 2129920 = 0x208000
;
; C00000 -> kernel heap
; 0xA0B000 -> kernel heap