From 1530a85d5aefcf6497ff2129023e9a0b002603dd Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Tue, 4 May 2021 15:30:24 +0200 Subject: Solving many issues: Aligning kernel stack, improve syscall mechanism, DISABLING RED-ZONE !!!! --- src/boucane.cc | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) (limited to 'src/boucane.cc') diff --git a/src/boucane.cc b/src/boucane.cc index 78884ac..ee7691d 100644 --- a/src/boucane.cc +++ b/src/boucane.cc @@ -12,6 +12,9 @@ #include "drivers/bmp.hpp" #include "core/scheduler.hpp" +/// @brief Temporary +#define TASK_DELAY 10000000 + u64 kvar_kernel_vma; u64 kvar_stack_pma; u64 kvar_userspace_pma; @@ -58,18 +61,25 @@ void configure_tss(){ void task1(){ while(1){ - asm("mov $0xABC, %rax"); asm("mov $1, %rdi;int $0x30"); + for(u32 delay=0;delay<=TASK_DELAY;delay++){} } } - void task2(){ while(1){ - asm("mov $0xAEBC, %rax"); asm("mov $2, %rdi;int $0x30"); + for(u32 delay=0;delay<=TASK_DELAY;delay++){} + } +} + +void task3(){ + while(1){ + asm("mov $3, %rdi;int $0x30"); + for(u32 delay=0;delay<=TASK_DELAY;delay++){} } } + extern "C" void boucane(u64 mb_info){ // Init linker variables asm volatile ("movq $__kernel_vma, %0":"=m"(kvar_kernel_vma)); @@ -89,7 +99,7 @@ extern "C" void boucane(u64 mb_info){ memtext_init(); idt_enable_interrupt(); apic_enable(); - + // Looking for framebuffer FRAMEBUFFER fb_info; if(mb2_find_framebuffer((u32*)mb_info, &fb_info)){ @@ -109,25 +119,26 @@ extern "C" void boucane(u64 mb_info){ __putchar=vgatext_putchar; } } - + // Booting! printk("Booting Boucane v%d.%d.%d\n",VERSION_MAJOR,VERSION_MINOR, VERSION_PATH); printk("System informations -- "); char bootloader[20]; if(mb2_find_bootloader_name((u32*)mb_info,bootloader)){ - printk("BOOT:%s ", bootloader); } - MEM_INFO mem_infos; if(mb2_find_mem((u32*)mb_info,&mem_infos)){ u64 mem=mem_infos.mem_upper-mem_infos.mem_lower; mem/=1024; printk("RAM:%dMB\n", mem); } - //show_ticks=1; - create_task((void*)task1, 50); - create_task((void*)task2, 50); + + + printk("Launching processes... "); + create_task((void*)task1, 100); + create_task((void*)task2, 100); + create_task((void*)task3, 100); scheduler_start(); while(1); } \ No newline at end of file -- cgit v1.2.3