From 31f7c7180cb491ceb8c7cf68c551afebf1f55063 Mon Sep 17 00:00:00 2001 From: "Sergey Semyonov (Serge)" Date: Tue, 4 Oct 2011 16:03:06 +0000 Subject: [PATCH] acpi: reduce kernel memory usage git-svn-id: svn://kolibrios.org@2259 a494cfbc-eb01-0410-851d-a64ba20cac60 --- kernel/branches/Kolibri-acpi/build.bat | 2 +- kernel/branches/Kolibri-acpi/const.inc | 16 ++++++------ kernel/branches/Kolibri-acpi/core/heap.inc | 12 --------- kernel/branches/Kolibri-acpi/core/malloc.inc | 25 +++++++++++-------- kernel/branches/Kolibri-acpi/core/syscall.inc | 1 - .../branches/Kolibri-acpi/drivers/imports.inc | 3 +++ kernel/branches/Kolibri-acpi/kernel.asm | 18 +++++-------- 7 files changed, 32 insertions(+), 45 deletions(-) diff --git a/kernel/branches/Kolibri-acpi/build.bat b/kernel/branches/Kolibri-acpi/build.bat index ca024c984..d8a8f5bef 100644 --- a/kernel/branches/Kolibri-acpi/build.bat +++ b/kernel/branches/Kolibri-acpi/build.bat @@ -1,7 +1,7 @@ @echo off cls set languages=en ru ge et -set drivers=com_mouse emu10k1x ensoniq fm801 infinity sis sound uart viasound vmode vt823x +set drivers=com_mouse emu10k1x ensoniq fm801 infinity sis sound viasound vt823x set targets=all kernel drivers skins clean call :Check_Target %1 diff --git a/kernel/branches/Kolibri-acpi/const.inc b/kernel/branches/Kolibri-acpi/const.inc index 7f7b446c5..6107a6d51 100644 --- a/kernel/branches/Kolibri-acpi/const.inc +++ b/kernel/branches/Kolibri-acpi/const.inc @@ -293,7 +293,7 @@ IDE_DMA equ 0x284000 BgrAuxTable equ (OS_BASE+0x0298000) ; unused? -SB16Buffer equ (OS_BASE+0x2A0000) +SB16Buffer equ (OS_BASE+0x02A0000) SB16_Status equ (OS_BASE+0x02B0000) BUTTON_INFO equ (OS_BASE+0x02C0000) @@ -306,17 +306,15 @@ eth_data_start equ (OS_BASE+0x0300000) stack_data equ (OS_BASE+0x0304000) stack_data_end equ (OS_BASE+0x031ffff) resendQ equ (OS_BASE+0x0320000) -VMODE_BASE equ (OS_BASE+0x0328000) -skin_data equ (OS_BASE+0x0330000) -draw_data equ (OS_BASE+0x0338000); -BgrDrawMode equ (OS_BASE+0x033BFF4) -BgrDataWidth equ (OS_BASE+0x033BFF8) -BgrDataHeight equ (OS_BASE+0x033BFFC) +skin_data equ (OS_BASE+0x0328000) +draw_data equ (OS_BASE+0x0330000) -BOOT_VAR equ (OS_BASE+0x0340000) +BgrDrawMode equ (OS_BASE+0x0333FF4) +BgrDataWidth equ (OS_BASE+0x0333FF8) +BgrDataHeight equ (OS_BASE+0x0333FFC) -sys_pgmap equ (OS_BASE+0x0350000) +sys_pgmap equ (OS_BASE+0x0334000) UPPER_KERNEL_PAGES equ (OS_BASE+0x0400000) diff --git a/kernel/branches/Kolibri-acpi/core/heap.inc b/kernel/branches/Kolibri-acpi/core/heap.inc index a1a6d41fd..afd170677 100644 --- a/kernel/branches/Kolibri-acpi/core/heap.inc +++ b/kernel/branches/Kolibri-acpi/core/heap.inc @@ -1472,15 +1472,3 @@ proc shmem_close stdcall, name:dword .fail: ret endp - -align 4 -sys_perf: - test ecx, ecx - jz .fail - - mov edi, ecx - mov esi, mem_hash_cnt - mov ecx, 64 - rep movsd -.fail: - ret diff --git a/kernel/branches/Kolibri-acpi/core/malloc.inc b/kernel/branches/Kolibri-acpi/core/malloc.inc index 27c44e186..0e06cc647 100644 --- a/kernel/branches/Kolibri-acpi/core/malloc.inc +++ b/kernel/branches/Kolibri-acpi/core/malloc.inc @@ -202,6 +202,9 @@ malloc: ; eax= mem align 4 free: + test eax, eax + jz .exit + push edi mov edi, eax add edi, -8 @@ -296,7 +299,9 @@ free: pop esi .fail: pop edi +.exit: ret + @@: ; nsize = next->head & ~INUSE_BITS; @@ -596,21 +601,21 @@ unlink_large_chunk: btr [mst.treemap], ecx pop edi ret - + .l3: cmp [edi+16], edx jne @F mov [edi+16], eax jmp .l4 - + @@: mov [edi+20], eax - + .l4: test eax, eax je .done - + .l5: mov [eax+24], edi mov ecx, [edx+16] @@ -619,7 +624,7 @@ unlink_large_chunk: mov [eax+16], ecx mov [ecx+24], eax - + .l6: mov edx, [edx+20] test edx, edx @@ -627,7 +632,7 @@ unlink_large_chunk: mov [eax+20], edx mov [edx+24], eax - + .done: pop edi ret @@ -649,10 +654,10 @@ malloc_small: mov edi, [ecx+4] and edi, -4 sub edi, esi - + .loop: mov ebx, ecx - + .loop_1: ; while ((t = leftmost_child(t)) != 0) @@ -662,10 +667,10 @@ malloc_small: jz @F mov ecx, eax jmp .l1 - + @@: mov ecx, [ecx+20] - + .l1: test ecx, ecx jz .unlink diff --git a/kernel/branches/Kolibri-acpi/core/syscall.inc b/kernel/branches/Kolibri-acpi/core/syscall.inc index 45f976a6f..22fe51ee7 100644 --- a/kernel/branches/Kolibri-acpi/core/syscall.inc +++ b/kernel/branches/Kolibri-acpi/core/syscall.inc @@ -194,7 +194,6 @@ iglobal dd syscall_window_settings ; 71-Window settings dd sys_sendwindowmsg ; 72-Send window message dd blit_32 ; 73-blitter; - dd sys_perf ; 74 for debug purposes only times 255 - ( ($-servetable2) /4 ) dd undefined_syscall dd sys_end ; -1-end application diff --git a/kernel/branches/Kolibri-acpi/drivers/imports.inc b/kernel/branches/Kolibri-acpi/drivers/imports.inc index cb703a092..07fa0da78 100644 --- a/kernel/branches/Kolibri-acpi/drivers/imports.inc +++ b/kernel/branches/Kolibri-acpi/drivers/imports.inc @@ -58,6 +58,9 @@ kernel_export \ Kmalloc,\ Kfree,\ CreateRingBuffer,\ +\ + DiskAdd, \ + DiskMediaChanged, \ \ GetPid,\ CreateObject,\ diff --git a/kernel/branches/Kolibri-acpi/kernel.asm b/kernel/branches/Kolibri-acpi/kernel.asm index 830b92b63..f25d65c80 100644 --- a/kernel/branches/Kolibri-acpi/kernel.asm +++ b/kernel/branches/Kolibri-acpi/kernel.asm @@ -649,12 +649,6 @@ end if call calculatefatchain -; LOAD VMODE DRIVER - -;!!!!!!!!!!!!!!!!!!!!!!! -include 'vmodeld.inc' -;!!!!!!!!!!!!!!!!!!!!!!! - if 0 mov ax,[OS_BASE+0x10000+bx_from_load] cmp ax,'r1' ; if using not ram disk, then load librares and parameters {SPraid.simba} @@ -867,6 +861,9 @@ end if call set_network_conf no_st_network: + xchg bx, bx + stdcall load_driver, ahci_driver + ; LOAD FIRST APPLICATION cli @@ -1008,6 +1005,8 @@ end if include 'unpacker.inc' include 'fdo.inc' +ahci_driver db 'AHCI',0 + align 4 boot_log: pushad @@ -1604,14 +1603,9 @@ nsyse8: no_set_lba_read: ; cmp eax,12 ; ENABLE PCI ACCESS dec ebx - jnz no_set_pci_access + jnz sys_setup_err mov [pci_access_enabled],ecx ret -no_set_pci_access: - -;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -include 'vmodeint.inc' -;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! sys_setup_err: or [esp+32],dword -1