diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/kernel.c | 15 | ||||
| -rw-r--r-- | kernel/kernel.h | 6 | ||||
| -rw-r--r-- | kernel/syscalls.c | 2 | ||||
| -rw-r--r-- | kernel/vmem.c | 2 |
4 files changed, 22 insertions, 3 deletions
diff --git a/kernel/kernel.c b/kernel/kernel.c index e7bef1d..e37f76f 100644 --- a/kernel/kernel.c +++ b/kernel/kernel.c @@ -13,6 +13,7 @@ #include "vmem.h" //-- clean below headers --// +#include "compositor.h" #include "sysfs.h" #include "pci.h" #include "e1000.h" @@ -39,6 +40,12 @@ #include "driver/vesa.h" #include "asm_pit.h" +//ugly? +extern uint32_t kernel_end[]; +extern uint32_t kernel_start[]; + +//TODO: we fear overrun of the initial buffer! +// /* F00L 0S Entry point (called directly from asm/multiboot.asm */ void kernel_main(uint32_t eax,uint32_t ebx) { @@ -54,6 +61,11 @@ void kernel_main(uint32_t eax,uint32_t ebx) klog("Version: git-commit: %s",GIT_REVISION); klog("======================================"); + uint32_t *top_kernel_vmem=VMEM_KERNEL+VMEM_KERNEL_PAGES*4096; + klog("The Kernel was loaded at: 0x%08X - 0x%08X",kernel_start,kernel_end); + klog("0x00000000 - 0x%08X will get identity mapped", VMEM_KERNEL_PAGES*4096); + if(kernel_end>=top_kernel_vmem)kpanic("kernel to big. increase VMEM_KERNEL_PAGES"); + // -- DISABLE LEGACY PIC -- // klog("Remapping & Disabling Programmable Interrupt Controller (PIC) ..."); fixme("io_wait & spurious interrupts"); @@ -122,6 +134,9 @@ void kernel_main(uint32_t eax,uint32_t ebx) uint32_t addr= ext2_inode_blockstart( VMEM_EXT2_RAMIMAGE,inode,0); vesa_init(cfg_multiboot,addr); + klog("Compositor init ..."); + compositor_init(cfg_multiboot->framebuffer_width,cfg_multiboot->framebuffer_height,cfg_multiboot->framebuffer_pitch); + // -- STD STREAMS -- // klog("Standard Streams init ..."); fd_init_std_streams(0,cfg_multiboot->framebuffer_type!=2); diff --git a/kernel/kernel.h b/kernel/kernel.h index 5546071..1dcfb60 100644 --- a/kernel/kernel.h +++ b/kernel/kernel.h @@ -22,6 +22,9 @@ REFERENCES #ifndef FOOLOS_CONFIG_H #define FOOLOS_CONFIG_H +#define VESA_MAX_WIDTH 1920 +#define VESA_MAX_HEIGHT 1080 + //#define FOOLOS_UNIT_TESTING // Run Unit Tests //#define FOOLOS_LOG_OFF // Turn off logging (disables serial port alltogether) //#define FOOLOS_COLORLESS // Turn off colors in log @@ -57,11 +60,12 @@ REFERENCES // minimal space between user and kernel pages 1024 pages! #define VMEM_KERNEL 0x00000000 // 8192 pages (32megs) / identity mapped +#define VMEM_KERNEL_PAGES (1024*8) // VMEM_KERNEL END 0x02000000 #define VMEM_USER_ENV 0x07000000 // 1 page / per user process -#define VMEM_USER_PROG_PAGES 256 +#define VMEM_USER_PROG_PAGES 256*16 #define VMEM_USER_PROG 0x08048000 // ? pages / per user process (usual entry: 0x8048080) #define VMEM_USER_STACK_PAGES 4 // 4 pages / per thread diff --git a/kernel/syscalls.c b/kernel/syscalls.c index 01bc7a5..5bdb76e 100644 --- a/kernel/syscalls.c +++ b/kernel/syscalls.c @@ -134,7 +134,7 @@ int syscall_gettimeofday(struct timeval *tv, struct timezone *tz,uint32_t none1, { uint64_t t=timer_get_ms(); tv->tv_sec=t/1000+2*3600; // add gmt+2 - tv->tv_usec=0;//t-tv->tv_sec*1000; + tv->tv_usec=1000*(t%1000); } // tz struct is obsolote diff --git a/kernel/vmem.c b/kernel/vmem.c index 4af596d..1eaf291 100644 --- a/kernel/vmem.c +++ b/kernel/vmem.c @@ -296,7 +296,7 @@ pdirectory* vmem_kernel_dir() pdirectory* dir = vmem_clean_dir(); - vmem_add_identity(dir,0,1024*8,false);//identity map first 32 megs... + vmem_add_identity(dir,VMEM_KERNEL,VMEM_KERNEL_PAGES,false);//identity map first 32 megs... vmem_add_identity(dir,e1000_addr,32,false);//identity map 32 pages for e1000 vmem_add_remap(dir,fb_addr,VMEM_FRAMEBUFFER,VMEM_FRAMEBUFFER_PAGES,true);//32megs should be enough for 4k (think about pitch) |
