Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 168 → Rev 167

/kernel/trunk/proc32.inc
File deleted
/kernel/trunk/drivers/proc32.inc
File deleted
/kernel/trunk/drivers/main.inc
File deleted
/kernel/trunk/drivers/unisound.asm
File deleted
/kernel/trunk/drivers/mixer.asm
File deleted
/kernel/trunk/drivers/infinity.asm
File deleted
/kernel/trunk/drivers/sis.asm
File deleted
/kernel/trunk/drivers/codec.inc
File deleted
/kernel/trunk/core/memory.inc
4,7 → 4,7
align 4
proc mem_test
mov eax, cr0
or eax, (CR0_CD+CR0_NW);disable caching
or eax, 0x60000000 ;disable caching
mov cr0, eax
wbinvd ;invalidate cache
 
17,7 → 17,7
xchg ebx, dword [edi]
je @b
 
and eax, not (CR0_CD+CR0_NW)
and eax, 0x21
mov cr0, eax
mov eax, edi
ret
40,10 → 40,7
jnc @F
or eax, PG_GLOBAL
or ebx, CR4_PGE
 
@@:
mov cr4, ebx
 
mov dword [sys_pgdir], eax
add eax, 0x00400000
mov dword [sys_pgdir+4], eax
55,6 → 52,8
mov dword [sys_pgdir+0x600], sys_master_tab+PG_SW
mov dword [sys_master_tab+0x600], sys_master_tab+PG_SW
 
mov cr4, ebx
 
mov ecx, [pg_data.kernel_tables]
sub ecx, 4
mov eax, tmp_page_tab+PG_SW
1103,15 → 1102,6
stdcall srv_handlerEx, ebx
mov [esp+36], eax
ret
@@:
cmp eax, 18
ja @f
mov ecx, [CURRENT_TASK]
shl ecx, 8
mov eax, [ecx+PROC_BASE+APPDATA.sse_handler]
mov [ecx+PROC_BASE+APPDATA.sse_handler], ebx
mov [esp+36], eax
ret
 
@@:
.fail:
/kernel/trunk/core/except.inc
5,13 → 5,13
reg_eflags equ ebp+12
reg_esp equ ebp+16
reg_ss equ ebp+20
;fpu_ctrl equ ebp-28
fpu_ctrl equ ebp-28
 
align 4
except_16:
push ebp
mov ebp, esp
; sub esp, 28
sub esp, 28
 
push eax
push ebx
41,54 → 41,12
iretd
 
.default:
pop edx
pop ecx
pop ebx
pop eax
leave
 
save_ring3_context ;debugger support
fnstenv [fpu_ctrl]
fnclex
or word [fpu_ctrl], 0111111b
fldenv [fpu_ctrl]
 
mov bl, 16
jmp exc_c
 
; fnstenv [fpu_ctrl]
; fnclex
; or word [fpu_ctrl], 0111111b
; fldenv [fpu_ctrl]
 
; pop edx
; pop ecx
; pop ebx
; pop eax
 
; leave
; iretd
 
align 16
except_19:
push ebp
mov ebp, esp
 
push eax
push ebx
push ecx
push edx
 
mov ebx, [ss:CURRENT_TASK]
shl ebx, 8
 
mov eax, [ss:ebx+PROC_BASE+APPDATA.sse_handler]
test eax, eax
jz .default
 
mov ecx, [reg_eip]
mov edx, [reg_esp]
sub edx, 4
mov [ss:edx+new_app_base], ecx
mov [reg_esp], edx
mov dword [reg_eip], eax
 
pop edx
pop ecx
pop ebx
97,21 → 55,10
leave
iretd
 
.default:
pop edx
pop ecx
pop ebx
pop eax
leave
 
save_ring3_context ;debugger support
 
mov bl, 19
jmp exc_c
 
restore reg_eip
restore reg_cs
restore reg_eflags
restore reg_esp
restore reg_ss
;restore fpu_ctrl
restore fpu_ctrl
/kernel/trunk/core/sys32.inc
172,8 → 172,8
dd e8,e9,e10,e11
dd e12,e13,page_fault_handler,e15
 
dd except_16, e17,e18, except_19
times 12 dd unknown_interrupt
dd except_16, e17
times 14 dd unknown_interrupt
 
dd irq0 , irq_serv.irq_1, p_irq2 ,irq_serv.irq_3
dd p_irq4 ,irq_serv.irq_5,p_irq6,irq_serv.irq_7
219,7 → 219,7
jmp exc_c
}
 
exc_wo_code 0, 1, 2, 3, 4, 5, 6, 9, 15, 18
exc_wo_code 0, 1, 2, 3, 4, 5, 6, 9, 15 ; 18, 19
exc_w_code 8, 10, 11, 12, 13, 14, 17
 
exc_c:
/kernel/trunk/const.inc
86,19 → 86,6
CAPS_ALTMOVCR8 equ 74 ;
 
 
CR0_PE equ 0x00000001 ;protected mode
CR0_MP equ 0x00000002 ;monitor fpu
CR0_EM equ 0x00000004 ;fpu emulation
CR0_TS equ 0x00000008 ;task switch
CR0_ET equ 0x00000010 ;extension type hardcoded to 1
CR0_NE equ 0x00000020 ;numeric error
CR0_WP equ 0x00010000 ;write protect
CR0_AM equ 0x00040000 ;alignment check
CR0_NW equ 0x20000000 ;not write-through
CR0_CD equ 0x40000000 ;cache disable
CR0_PG equ 0x80000000 ;paging
 
 
CR4_VME equ 0x0001
CR4_PVI equ 0x0002
CR4_TSD equ 0x0004
111,22 → 98,7
CR4_OSFXSR equ 0x0200
CR4_OSXMMEXPT equ 0x0400
 
SSE_IE equ 0x0001
SSE_DE equ 0x0002
SSE_ZE equ 0x0004
SSE_OE equ 0x0008
SSE_UE equ 0x0010
SSE_PE equ 0x0020
SSE_DAZ equ 0x0040
SSE_IM equ 0x0080
SSE_DM equ 0x0100
SSE_ZM equ 0x0200
SSE_OM equ 0x0400
SSE_UM equ 0x0800
SSE_PM equ 0x1000
SSE_FZ equ 0x8000
 
SSE_INIT equ (SSE_IM+SSE_DM+SSE_ZM+SSE_OM+SSE_UM+SSE_PM)
 
OS_BASE equ 0; 0x80400000
 
/kernel/trunk/kernel.asm
120,7 → 120,7
 
; CR0 Flags - Protected mode and Paging
 
mov ecx, CR0_PE
mov ecx, 0x00000021
 
; Enabling 32 bit protected mode
 
400,7 → 400,7
mov cr3, eax
 
mov eax,cr0
or eax,CR0_PG
or eax,0x80000000
mov cr0,eax
 
call init_kernel_heap
447,48 → 447,25
mov ecx, 16
rep movsb
 
clts
fninit
 
bt [cpu_caps], CAPS_FXSR
jnc .no_FXSR
 
stdcall kernel_alloc, 512*256
mov [fpu_data], eax
 
mov ebx, cr4
mov ecx, cr0
or ebx, CR4_OSFXSR+CR4_OSXMMEXPT
or ebx, CR4_OSFXSR
mov cr4, ebx
 
and ecx, not (CR0_MP+CR0_EM)
or ecx, CR0_NE
mov cr0, ecx
 
mov dword [esp-4], SSE_INIT
ldmxcsr [esp-4]
 
xorps xmm0, xmm0
xorps xmm1, xmm1
xorps xmm2, xmm2
xorps xmm3, xmm3
xorps xmm4, xmm4
xorps xmm5, xmm5
xorps xmm6, xmm6
xorps xmm7, xmm7
 
jmp .set_cr
jmp .clts
.no_FXSR:
stdcall kernel_alloc, 112*256
mov [fpu_data], eax
mov ebx, cr4
mov ecx, cr0
and ebx, not (CR4_OSFXSR+CR4_OSXMMEXPT)
and ecx, not CR0_EM
or ecx, CR0_MP+CR0_NE
mov cr0, ecx
mov cr4, ebx
.set_cr:
.clts:
clts
fninit
 
mov edi, irq_tab
xor eax, eax
mov ecx, 16