/kernel/trunk/core/dll.inc |
---|
946,11 → 946,13 |
drv_sound db '/rd/1/drivers/unisound.obj', 0 |
drv_infinity db '/rd/1/drivers/infinity.obj', 0 |
drv_ati2d db '/rd/1/drivers/ati2d.obj', 0 |
;drv_ati2d db '/rd/1/drivers/vesa.obj', 0 |
;drv_cursor db '/rd/1/drivers/vesa.obj',0 |
szSound db 'SOUND',0 |
szInfinity db 'INFINITY',0 |
szHMouse db 'ATI2D',0 |
;szHMouse db 'ATI2D',0 |
;szCURSOR db 'VESACURSOR',0 |
szSTART db 'START',0 |
szEXPORTS db 'EXPORTS',0 |
962,10 → 964,12 |
align 4 |
set_hw_cursor dd 0 |
hw_restore dd 0 |
align 16 |
services: |
dd szSound, drv_sound |
dd szInfinity, drv_infinity |
dd szHMouse, drv_ati2d |
; dd szHMouse, drv_ati2d |
; dd szCURSOR, drv_cursor |
dd 0 |
/kernel/trunk/core/exports.inc |
---|
1,5 → 1,28 |
iglobal |
szKernel db 'KERNEL', 0 |
szAttachIntHandler db 'AttachIntHandler',0 |
szSysMsgBoardStr db 'SysMsgBoardStr', 0 |
szPciApi db 'PciApi', 0 |
szPciRead32 db 'PciRead32', 0 |
szPciRead8 db 'PciRead8', 0 |
szPciWrite8 db 'PciWrite8',0 |
szAllocKernelSpace db 'AllocKernelSpace',0 |
szMapPage db 'MapPage',0 |
szRegService db 'RegService',0 |
szKernelAlloc db 'KernelAlloc',0 |
szKernelFree db 'KernelFree',0 |
szGetPgAddr db 'GetPgAddr',0 |
szGetCurrentTask db 'GetCurrentTask',0 |
szGetService db 'GetService',0 |
szServiceHandler db 'ServiceHandler',0 |
szFpuSave db 'FpuSave',0 |
szFpuRestore db 'FpuRestore',0 |
szLoadCursor db 'LoadCursor',0 |
szSetHwCursor db 'SetHwCursor',0 |
szHWRestore db 'HWRestore', 0 |
szLFBAddress db 'LFBAddress',0 |
szLoadFile db 'LoadFile',0 |
align 16 |
kernel_export: |
20,33 → 43,14 |
dd szServiceHandler , srv_handler |
dd szFpuSave , fpu_save |
dd szFpuRestore , fpu_restore |
dd szLoadCursor , load_cursor |
dd szSetHwCursor , set_hw_cursor |
dd szHWRestore , hw_restore |
dd szLoadFile , load_file |
exp_lfb: |
dd szLFBAddress , 0 |
dd 0 |
szKernel db 'KERNEL', 0 |
szAttachIntHandler db 'AttachIntHandler',0 |
szSysMsgBoardStr db 'SysMsgBoardStr', 0 |
szPciApi db 'PciApi', 0 |
szPciRead32 db 'PciRead32', 0 |
szPciRead8 db 'PciRead8', 0 |
szPciWrite8 db 'PciWrite8',0 |
szAllocKernelSpace db 'AllocKernelSpace',0 |
szMapPage db 'MapPage',0 |
szRegService db 'RegService',0 |
szKernelAlloc db 'KernelAlloc',0 |
szKernelFree db 'KernelFree',0 |
szGetPgAddr db 'GetPgAddr',0 |
szGetCurrentTask db 'GetCurrentTask',0 |
szGetService db 'GetService',0 |
szServiceHandler db 'ServiceHandler',0 |
szFpuSave db 'FpuSave',0 |
szFpuRestore db 'FpuRestore',0 |
szSetHwCursor db 'SetHwCursor',0 |
szLFBAddress db 'LFBAddress',0 |
szLoadFile db 'LoadFile',0 |
endg |
/kernel/trunk/core/fpu.inc |
---|
3,8 → 3,8 |
clts |
fninit |
bt [cpu_caps], CAPS_FXSR |
jnc .no_FXSR |
bt [cpu_caps], CAPS_SSE |
jnc .no_SSE |
stdcall kernel_alloc, 512*256 |
mov [fpu_data], eax |
31,7 → 31,7 |
xorps xmm7, xmm7 |
fxsave [eax] |
ret |
.no_FXSR: |
.no_SSE: |
stdcall kernel_alloc, 112*256 |
mov [fpu_data], eax |
mov ecx, cr0 |
50,7 → 50,7 |
mov ebx, [CURRENT_TASK] |
mov [fpu_owner], ebx |
bt [cpu_caps], CAPS_FXSR |
bt [cpu_caps], CAPS_SSE |
jnc .no_SSE |
fxsave [eax] |
66,7 → 66,7 |
mov ebx, [CURRENT_TASK] |
shl ebx, 8 |
mov eax, [ebx+PROC_BASE+0x10] |
bt [cpu_caps], CAPS_FXSR |
bt [cpu_caps], CAPS_SSE |
jnc .no_SSE |
fxrstor [eax] |
91,7 → 91,7 |
shl ebx, 8 |
mov eax, [ebx+PROC_BASE+APPDATA.fpu_state] |
bt [cpu_caps], CAPS_FXSR |
bt [cpu_caps], CAPS_SSE |
jnc .no_SSE |
fxsave [eax] |
/kernel/trunk/core/memory.inc |
---|
1053,7 → 1053,7 |
pop eax |
xor eax, ecx |
mov [cpu_type], CPU_386 |
jz .end_cpu |
jz .end_cpuid |
push ecx |
popfd |
1065,7 → 1065,7 |
pushfd |
pop eax |
xor eax, ecx |
je .end_cpu |
je .end_cpuid |
mov [cpu_id], 1 |
xor eax, eax |
1091,9 → 1091,7 |
shr eax, 8 |
and eax, 0x0f |
mov [cpu_type], eax |
ret |
.end_cpuid: |
mov eax, [cpu_type] |
ret |
1100,14 → 1098,14 |
.check_AMD: |
cmp ebx, dword [AMD_str] |
jne .end_cpu |
jne .unknown |
cmp edx, dword [AMD_str+4] |
jne .end_cpu |
jne .unknown |
cmp ecx, dword [AMD_str+8] |
jne .end_cpu |
jne .unknown |
mov [cpu_AMD], 1 |
cmp eax, 1 |
jl .end_cpuid |
jl .unknown |
mov eax, 1 |
cpuid |
mov [cpu_sign], eax |
1116,10 → 1114,17 |
mov [cpu_caps+4],ecx |
shr eax, 8 |
and eax, 0x0f |
mov [cpu_type], eax |
.end_cpu: |
mov eax, [cpu_type] |
ret |
.unknown: |
mov eax, 1 |
cpuid |
mov [cpu_sign], eax |
mov [cpu_info], ebx |
mov [cpu_caps], edx |
mov [cpu_caps+4],ecx |
shr eax, 8 |
and eax, 0x0f |
ret |
endp |
MEM_WB equ 6 ;write-back memory |
1263,6 → 1268,27 |
cpu_sign rd 1 |
cpu_info rd 1 |
;;;;; cursors data |
align 16 |
cur_saved_data rb 4096 |
cursors rb CURSOR_SIZE*64 |
cursor_map rd 2 |
cursor_start rd 1 |
cursor_end rd 1 |
def_cursor rd 1 |
scr_width rd 1 |
scr_height rd 1 |
cur_def_interl rd 1 |
cur_saved_base rd 1 |
cur_saved_interl rd 1 |
cur_saved_w rd 1 |
cur_saved_h rd 1 |
endg |
uglobal |
/kernel/trunk/core/sys32.inc |
---|
100,7 → 100,7 |
dd except_16, e17,e18, except_19 |
times 12 dd unknown_interrupt |
dd irq0 , irq_serv.irq_1, p_irq2 ,irq_serv.irq_3 |
dd irq0 , irq_serv.irq_1, p_irq2 , p_irq3 ;irq_serv.irq_3 |
dd p_irq4 ,irq_serv.irq_5,p_irq6,irq_serv.irq_7 |
dd irq_serv.irq_8, irq_serv.irq_9, irq_serv.irq_10 |
dd irq_serv.irq_11,p_irq12,irqD ,p_irq14,p_irq15 |
638,7 → 638,7 |
mov [fpu_owner],1 |
mov eax, [256+PROC_BASE+0x10] |
bt [cpu_caps], CAPS_FXSR |
bt [cpu_caps], CAPS_SSE |
jnc .no_SSE |
fxrstor [eax] |
jmp fpu_ok_1 |
/kernel/trunk/core/taskman.inc |
---|
606,7 → 606,7 |
mov edi, [slot] |
mov esi, [fpu_data] |
bt [cpu_caps], CAPS_FXSR |
bt [cpu_caps], CAPS_SSE |
jnc .no_SSE |
shl edi, 8 |
639,8 → 639,11 |
.noinc: |
shl ebx,8 |
mov eax,[app_mem] |
mov [PROC_BASE+0x8c+ebx],eax |
mov [PROC_BASE+APPDATA.mem_size+ebx],eax |
mov ecx, [def_cursor] |
mov [PROC_BASE+APPDATA.cursor+ebx],ecx |
shr ebx,3 |
mov eax, new_app_base |
mov dword [CURRENT_TASK+ebx+0x10],eax |