diff options
| author | Miguel <m.i@gmx.at> | 2018-09-12 16:04:15 +0200 |
|---|---|---|
| committer | Miguel <m.i@gmx.at> | 2018-09-12 16:04:15 +0200 |
| commit | bcd07d2b3161364fbffa42d0d9752a1f6581b713 (patch) | |
| tree | 47b8ef39c5c3962cd849493737adb3a8c5b095c3 /kernel | |
| parent | c72944b5646863ffaaaff94dc03b939a08566203 (diff) | |
added support for .S
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/exceptions.c | 2 | ||||
| -rw-r--r-- | kernel/kernel.h | 9 | ||||
| -rw-r--r-- | kernel/vmem.c | 10 |
3 files changed, 10 insertions, 11 deletions
diff --git a/kernel/exceptions.c b/kernel/exceptions.c index f56536b..bcb5c40 100644 --- a/kernel/exceptions.c +++ b/kernel/exceptions.c @@ -1,5 +1,6 @@ #include "kernel.h" #include "exceptions.h" +#include "scheduler.h" #include "log.h" #include "asm_x86.h" @@ -39,6 +40,7 @@ void exception_handle(uint32_t esp, uint32_t irq) uint32_t error_code=0; klog("EXCEPTION: apicID: 0x%08X",apic_id()); + klog("EXCEPTION: task: %d",task_get_current_pid()); klog("EXCEPTION: vector nr.: %d",irq); switch(irq){ //this interrupts push also an error_code diff --git a/kernel/kernel.h b/kernel/kernel.h index 1da1209..df8432a 100644 --- a/kernel/kernel.h +++ b/kernel/kernel.h @@ -54,18 +54,15 @@ REFERENCES #define VMEM_USER_ENV 0x07000000 // ? pages / per user process #define VMEM_USER_PROG 0x08048000 // ? pages / per user process (usual entry: 0x8048080) -#define VMEM_USER_STACK_PAGES 0xF0000000 // 4 pages / per thread -#define VMEM_USER_STACK_BOT 0xEFFFC000 // 4 pages / per thread +#define VMEM_USER_STACK_PAGES 4 // 4 pages / per thread #define VMEM_USER_STACK_TOP 0xF0000000 // 4 pages / per thread #define VMEM_LAPIC 0xF0005000 // 1 pages / identity mapped #define VMEM_IOAPIC 0xF0006000 // 1 pages / identity mapped #define VMEM_CPU_PRIVATE 0xF000A000 // 4 pages / per cpu -#define VMEM_CPU_STACK_PAGES 0xF0000000 // 4 pages / per thread -#define VMEM_CPU_STACK_BOT 0xF0050000 // 4 pages / per cpu -#define VMEM_CPU_STACK_TOP 0xF0054000 // 4 pages / per cpu - +#define VMEM_CPU_STACK_PAGES 4 // 4 pages / per thread +#define VMEM_CPU_STACK_TOP 0xF4000000 // 4 pages / per cpu #define VMEM_COPY_PAGE 0xF5000000 // 1 page / temporery map-in tables for copying #define VMEM_FRAMEBUFFER 0xF6000000 // 8192 pages (32megs) / identity mapped diff --git a/kernel/vmem.c b/kernel/vmem.c index 10c2401..ffa9099 100644 --- a/kernel/vmem.c +++ b/kernel/vmem.c @@ -303,10 +303,10 @@ pdirectory* vmem_kernel_dir() vmem_add_remap(dir,mod_start,VMEM_EXT2_RAMIMAGE,1024*8,false);//32megs for ramimage: TODO: check if enough? vmem_add_alloc(dir,VMEM_CPU_PRIVATE,4,false); - vmem_add_alloc(dir,VMEM_CPU_STACK_BOT,4,false); + vmem_add_alloc(dir,VMEM_CPU_STACK_TOP-4096*VMEM_CPU_STACK_PAGES,VMEM_CPU_STACK_PAGES,false); - vmem_add_alloc(dir,VMEM_USER_PROG,1024*2,true); - vmem_add_alloc(dir,VMEM_USER_STACK_TOP-4096*10,10,true); + vmem_add_alloc(dir,VMEM_USER_PROG,1024*4,true); + vmem_add_alloc(dir,VMEM_USER_STACK_TOP-4096*VMEM_USER_STACK_PAGES,VMEM_USER_STACK_PAGES,true); return dir; } @@ -321,8 +321,8 @@ pdirectory* vmem_new_space_dir(pdirectory *copy_dir,bool stack_only) if(!pt_entry_is_user(src_pt))dir->m_entries [i]=src_pt; } - vmem_add_alloc(dir,VMEM_USER_PROG,1024*2,true); - vmem_add_alloc(dir,VMEM_USER_STACK_TOP-4096*4,4,true); + vmem_add_alloc(dir,VMEM_USER_PROG,1024*4,true); + vmem_add_alloc(dir,VMEM_USER_STACK_TOP-4096*VMEM_USER_STACK_PAGES,VMEM_USER_STACK_PAGES,true); x86_cli(); // plese dear timer, do not schedule us away pdirectory* orig=x86_get_page_directory(); |
