Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 1344 → Rev 1345

/kernel/trunk/core/dll.inc
333,7 → 333,7
endp
 
; param
; ebx= io_control
; ecx= io_control
;
; retval
; eax= error code
340,10 → 340,10
 
align 4
srv_handlerEx:
cmp ebx, OS_BASE
cmp ecx, OS_BASE
jae .fail
 
mov eax, [ebx+handle]
mov eax, [ecx+handle]
cmp [eax+SRV.magic], ' SRV'
jne .fail
 
350,7 → 350,7
cmp [eax+SRV.size], SRV.sizeof
jne .fail
 
stdcall [eax+SRV.srv_proc], ebx
stdcall [eax+SRV.srv_proc], ecx
ret
.fail:
or eax, -1
/kernel/trunk/core/memory.inc
1133,67 → 1133,68
endg
align 4
f68:
cmp eax,4
cmp ebx,4
jle sys_sheduler
 
cmp eax, 11
cmp ebx, 11
jb .fail
 
cmp eax, 25
cmp ebx, 25
ja .fail
 
jmp dword [f68call+eax*4-11*4]
jmp dword [f68call+ebx*4-11*4]
.11:
call init_heap
mov [esp+36], eax
mov [esp+32], eax
ret
.12:
stdcall user_alloc, ebx
mov [esp+36], eax
stdcall user_alloc, ecx
mov [esp+32], eax
ret
.13:
stdcall user_free, ebx
mov [esp+36], eax
stdcall user_free, ecx
mov [esp+32], eax
ret
.14:
cmp ebx, OS_BASE
cmp ecx, OS_BASE
jae .fail
mov edi,ebx
mov edi,ecx
call get_event_ex
mov [esp+36], eax
mov [esp+32], eax
ret
.16:
test ebx, ebx
test ecx, ecx
jz .fail
cmp ebx, OS_BASE
cmp ecx, OS_BASE
jae .fail
stdcall get_service, ebx
mov [esp+36], eax
stdcall get_service, ecx
mov [esp+32], eax
ret
.17:
call srv_handlerEx ;ebx
mov [esp+36], eax
call srv_handlerEx ;ecx
mov [esp+32], eax
ret
.19:
cmp ebx, OS_BASE
cmp ecx, OS_BASE
jae .fail
stdcall load_library, ebx
mov [esp+36], eax
stdcall load_library, ecx
mov [esp+32], eax
ret
.20:
mov eax, ecx
call user_realloc
mov [esp+36], eax
mov eax, edx
mov ebx, ecx
call user_realloc ;in: eax = pointer, ebx = new size
mov [esp+32], eax
ret
.21:
cmp ebx, OS_BASE
cmp ecx, OS_BASE
jae .fail
 
cmp ecx, OS_BASE
cmp ebx, OS_BASE
jae .fail
 
mov edi, ecx
stdcall load_PE, ebx
mov edi, edx
stdcall load_PE, ecx
mov esi, eax
test eax, eax
jz @F
1208,45 → 1209,45
mov [eax+SRV.entry], esi
 
@@:
mov [esp+36], eax
mov [esp+32], eax
ret
.22:
cmp ebx, OS_BASE
cmp ecx, OS_BASE
jae .fail
 
stdcall shmem_open, ebx, ecx, edx
mov [esp+28], edx
mov [esp+36], eax
stdcall shmem_open, ecx, edx, esi
mov [esp+24], edx
mov [esp+32], eax
ret
 
.23:
cmp ebx, OS_BASE
cmp ecx, OS_BASE
jae .fail
 
stdcall shmem_close, ebx
mov [esp+36], eax
stdcall shmem_close, ecx
mov [esp+32], eax
ret
.24:
mov eax, [current_slot]
xchg ebx, [eax+APPDATA.exc_handler]
xchg ecx, [eax+APPDATA.except_mask]
mov [esp+36], ebx ; reg_eax+8
mov [esp+24], ecx ; reg_ebx+8
xchg ecx, [eax+APPDATA.exc_handler]
xchg edx, [eax+APPDATA.except_mask]
mov [esp+32], ecx ; reg_eax+8
mov [esp+20], edx ; reg_ebx+8
ret
.25:
cmp ebx,32
cmp ecx,32
jae .fail
mov eax, [current_slot]
btr [eax+APPDATA.except_mask],ebx
setc byte[esp+36]
btr [eax+APPDATA.except_mask],ecx
setc byte[esp+32]
jecxz @f
bts [eax+APPDATA.except_mask],ebx
bts [eax+APPDATA.except_mask],ecx
@@:
ret
 
.fail:
xor eax, eax
mov [esp+36], eax
mov [esp+32], eax
ret
 
align 4
/kernel/trunk/core/syscall.inc
20,7 → 20,6
call dword [servetable+edi*4]
ret
 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;
;; SYSENTER ENTRY ;;
171,7 → 170,7
dd syscall_putimage_palette; 65-PutImagePalette
dd sys_process_def ; 66-Process definitions - keyboard
dd sys_window_move ; 67-Window move or resize
dd f68 ; 68-Some internal services
dd 0 ; 68-Some internal services
dd 0 ; 69-Debug
dd file_system_lfn ; 70-Common file system interface, version 2
; dd 0 ; 71-Window settings
250,7 → 249,7
dd cross_order ; 65-PutImagePalette
dd cross_order ; 66-Process definitions - keyboard
dd cross_order ; 67-Window move or resize
dd cross_order ; 68-Some internal services
dd f68 ; 68-Some internal services
dd sys_debug_services ; 69-Debug
dd cross_order ; 70-Common file system interface, version 2
dd syscall_windowsettings ; 71-Window settings
/kernel/trunk/kernel.asm
3408,31 → 3408,43
endg
sys_sheduler:
;rewritten by <Lrz> 29.12.2009
jmp dword [sheduler+eax*4]
; jmp dword [sheduler+eax*4]
jmp dword [sheduler+ebx*4]
;.shed_counter:
.00:
mov eax,[context_counter]
mov [esp+36],eax
mov [esp+32],eax
ret
 
.02:
;.perf_control:
test ebx,ebx
; test ebx,ebx
; jz modify_pce ;if ecx=0
; dec ebx
; jz is_cache_enabled ;if ecx=1
; dec ebx
; jz cache_enable ;if ecx=2
; ret
;;;;;;;;
test ecx,ecx
jz modify_pce ;if ecx=0
dec ebx
dec ecx
jz is_cache_enabled ;if ecx=1
dec ebx
dec ecx
jz cache_enable ;if ecx=2
ret
 
 
 
.03:
;.rdmsr_instr:
;now counter in ecx
;(edx:eax) esi:edi => edx:esi
mov eax,esi
; mov ecx,edx
mov ecx,edx
rdmsr
mov [esp+36],eax
mov [esp+24],edx ;ret in ebx?
mov [esp+32],eax
mov [esp+20],edx ;ret in ebx?
ret
 
.04:
3442,17 → 3454,17
; Fast Call MSR can't be destroy
; ® MSR_AMD_EFER ¬®¦­® ¨§¬¥­ïâì, â.ª. ¢ í⮬ ॣ¨áâॠ«¨è
; ¢ª«îç îâáï/¢ëª«îç îâáï à áè¨à¥­­ë¥ ¢®§¬®¦­®áâ¨
cmp ecx,MSR_SYSENTER_CS
cmp edx,MSR_SYSENTER_CS
je @f
cmp ecx,MSR_SYSENTER_ESP
cmp edx,MSR_SYSENTER_ESP
je @f
cmp ecx,MSR_SYSENTER_EIP
cmp edx,MSR_SYSENTER_EIP
je @f
cmp ecx,MSR_AMD_STAR
cmp edx,MSR_AMD_STAR
je @f
 
mov eax,esi
; mov ecx,edx
mov ecx,edx
wrmsr
; mov [esp + 32], eax
; mov [esp + 20], edx ;ret in ebx?
3477,9 → 3489,9
mov ebx,eax
and eax,01100000000000000000000000000000b
jz cache_disabled
mov [esp+36],ebx
mov [esp+32],ebx
cache_disabled:
mov dword [esp+36],eax ;0
mov dword [esp+32],eax ;0
ret
 
modify_pce:
3489,7 → 3501,7
; xor eax,ebx ;invert pce
bts eax,8 ;pce=cr4[8]
mov cr4,eax
mov [esp+36],eax
mov [esp+32],eax
ret
;---------------------------------------------------------------------------------------------