diff --git a/.gitignore b/.gitignore index e63ddd8..3b37c71 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ /Default/ +t +t.c diff --git a/src/Makefile b/src/Makefile index da8eb8b..08c31e9 100644 --- a/src/Makefile +++ b/src/Makefile @@ -83,10 +83,12 @@ @echo "***************************************************************" clean-kernel: - (cd sys;${KMAKE} clean) + (cd sys;${MAKE} clean) -install: install-world - (cd sys;${KMAKE} install kernel) +install-kernel: + (cd sys;${MAKE} install-kernel) + +install: install-world install-kernel clean: (cd sys;${KMAKE} clean) diff --git a/src/sys/Makefile b/src/sys/Makefile index 23e7f4e..adc55be 100644 --- a/src/sys/Makefile +++ b/src/sys/Makefile @@ -13,7 +13,7 @@ @echo "***************************************************************" @echo "Step 1: Clean Kernel" @echo "***************************************************************" - ${MAKE} clean + #${MAKE} clean @echo @echo "***************************************************************" @echo "Step 2: Build Kernel Objects" @@ -101,7 +101,7 @@ @echo "***************************************************************" @echo "Step 1: Copy Kernel" @echo "***************************************************************" - cp sys/compile/kernel ${ROOT}/boot/kernel/ + cp compile/kernel ${ROOT}/boot/kernel/ sync @echo @echo "***************************************************************" diff --git a/src/sys/Makefile.incl b/src/sys/Makefile.incl index 9d90ab9..2ec2aa3 100644 --- a/src/sys/Makefile.incl +++ b/src/sys/Makefile.incl @@ -12,3 +12,4 @@ INCLUDES = -I${INCLUDE} CFLAGS = ${KFLAGS} -m32 -Wall -nostdlib -nostdinc -fno-builtin -fno-exceptions -ffreestanding -O +ROOT=/ubixos diff --git a/src/sys/i386/fork.c b/src/sys/i386/fork.c index 4f4d4e3..2a8e12b 100644 --- a/src/sys/i386/fork.c +++ b/src/sys/i386/fork.c @@ -101,7 +101,7 @@ sched_yield(); /* Return Id of Proccess */ - kprintf("Returning! [%i]\n", _current->id); + kprintf("Returning! [%i][0x%X]\n", _current->id,newProcess->tss.cr3); return (newProcess->id); } diff --git a/src/sys/i386/i386_exec.c b/src/sys/i386/i386_exec.c index 451182f..c5e3a84 100644 --- a/src/sys/i386/i386_exec.c +++ b/src/sys/i386/i386_exec.c @@ -60,7 +60,9 @@ /* Temp Holder */ int sys_execve( struct thread *td, struct sys_execve_args *args ) { - return (sys_exec( td, args->fname, args->argv, args->envp )); + int ret = sys_exec( td, args->fname, args->argv, args->envp ); + kprintf("RETURNING: [%i]\n", ret); + return (ret); } /***************************************************************************************** @@ -487,8 +489,12 @@ */ for ( x = 0x0; x < (round_page( programHeader[i].phMemsz )); x += 0x1000 ) { /* Make readonly and read/write !!! */ - if ( vmm_remapPage( vmmFindFreePage( _current->id ), ((programHeader[i].phVaddr & 0xFFFFF000) + x), PAGE_DEFAULT ) == 0x0 ) + if ( vmm_remapPage( vmmFindFreePage( _current->id ), ((programHeader[i].phVaddr & 0xFFFFF000) + x), PAGE_DEFAULT ) == 0x0 ) { K_PANIC( "Error: Remap Page Failed" ); + } + else { + kprintf("rP[0x%X]", (programHeader[i].phVaddr & 0xFFFFF000) + x); + } memset( (void *) ((programHeader[i].phVaddr & 0xFFFFF000) + x), 0x0, 0x1000 ); @@ -627,6 +633,7 @@ kprintf( "STACK: 0x%X, ESP0: 0x%X\n", iFrame->user_esp, _current->tss.esp0 ); //! build argc and argv[] +/*MrOlsen Did I Fuck Up Stack? *tmp-- = argc; kprintf( "xSTACK: 0x%X, ESP0: 0x%X\n", iFrame->user_esp, _current->tss.esp0 ); @@ -641,8 +648,9 @@ } } - *tmp-- = 0x0; /* ARGV Terminator */ - *tmp-- = 0x0; /* ENV Terminator */ + *tmp-- = 0x0; // ARGV Terminator + *tmp-- = 0x0; // ENV Terminator +*/ /* * App Entry Stack @@ -670,7 +678,6 @@ //kprintf( "EBP-3(%i): [0x%X], EIP: [0x%X], ESP: [0x%X]\n", _current->id, iFrame->ebp, iFrame->eip, iFrame->user_esp ); //kprintf( "Done EXEC\n" ); - kprintf( "EBP-4(%i): [0x%X], EIP: [0x%X], ESP: [0x%X]\n", _current->id, _current->oInfo.vmStart, iFrame->ebp, iFrame->eip, iFrame->user_esp ); /* asm("cli"); @@ -680,7 +687,8 @@ _current->tss.ebp = iFrameNew->ebp; */ /* Set these up to be ring 3 tasks */ - /* + +/* _current->tss.es = 0x30 + 3; _current->tss.cs = 0x28 + 3; _current->tss.ss = 0x30 + 3; @@ -691,7 +699,9 @@ _current->tss.ldt = 0x18; _current->tss.trace_bitmap = 0x0000; _current->tss.io_map = 0x8000; +*/ + /* kfree (iFrameNew); memAddr = (u_int32_t) & (_current->tss); @@ -704,12 +714,16 @@ ubixGDT[10].descriptor.baseMed = ((STACK_ADDR >> 16) & 0xFF); ubixGDT[10].descriptor.baseHigh = (STACK_ADDR >> 24); + */ + +/* asm( "sti\n" "ljmp $0x20,$0\n" ); - */ - return (-1); +*/ + kprintf( "EBP-4(%i): [0x%X], EBP: [0x%X], EIP: [0x%X], ESP: [0x%X]\n", _current->id, _current->oInfo.vmStart, iFrame->ebp, iFrame->eip, iFrame->user_esp ); + return (0x0); } /*! diff --git a/src/sys/i386/trap.c b/src/sys/i386/trap.c index bca90e1..f3a3913 100644 --- a/src/sys/i386/trap.c +++ b/src/sys/i386/trap.c @@ -54,12 +54,13 @@ cr2 = rcr2(); asm("sti"); /* Turn Back On Ints! */ vmm_pageFault(frame, cr2); + kprintf("Called page Fault\n"); default: break; } kprintf("GOTTA RETURN!\n"); - //while(1); + while(1); } /*** diff --git a/src/sys/kernel/syscall_new.c b/src/sys/kernel/syscall_new.c index b6573ad..4fb1501 100644 --- a/src/sys/kernel/syscall_new.c +++ b/src/sys/kernel/syscall_new.c @@ -86,11 +86,18 @@ else error = (int) systemCalls[code].sc_entry( td, params ); +if ( systemCalls[code].sc_status == SYSCALL_DUMMY ) { + kprintf("RET1"); +return; +} + switch ( error ) { case 0: frame->tf_eax = td->td_retval[0]; frame->tf_edx = td->td_retval[1]; frame->tf_eflags &= ~PSL_C; +if ( systemCalls[code].sc_status == SYSCALL_DUMMY ) + kprintf("RET3"); break; /* case ERESTART: @@ -104,6 +111,10 @@ frame->tf_eflags |= PSL_C; break; +if ( systemCalls[code].sc_status == SYSCALL_DUMMY ) + kprintf("RET2"); +if ( systemCalls[code].sc_status == SYSCALL_DUMMY ) + kprintf("RET2.1"); } } } diff --git a/src/sys/vmm/pagefault.c b/src/sys/vmm/pagefault.c index 2124907..4cd53c3 100644 --- a/src/sys/vmm/pagefault.c +++ b/src/sys/vmm/pagefault.c @@ -61,7 +61,8 @@ u_int32_t eip = frame->tf_eip; u_int32_t memAddr = cr2; -//MrOlsen 2017-12-15 - kprintf("CR2: [0x%X], EIP: 0x%X, ERR: 0x%X\n", cr2, frame->tf_eip, frame->tf_err); +//MrOlsen 2017-12-15 - +kprintf("CR2: [0x%X], EIP: 0x%X, ERR: 0x%X\n", cr2, frame->tf_eip, frame->tf_err); /* Try to aquire lock otherwise spin till we do */ spinLock(&pageFaultSpinLock); @@ -71,7 +72,7 @@ /* UBU - This is a temp panic for 0x0 read write later on I will handle this differently */ if (memAddr == 0x0) { - kprintf("Segfault At Address: [0x%X][0x%X][%i][0x%X]\n", memAddr, esp, _current->id, eip); + kprintf("Segfault At Address: [0x%X], ESP: [0x%X], PID: [%i], EIP: [0x%X]\n", memAddr, esp, _current->id, eip); kpanic("Error We Wrote To 0x0\n"); } @@ -115,6 +116,7 @@ spinUnlock(&pageFaultSpinLock); endTask(_current->id); } else if (memAddr < (_current->td.vm_dsize + _current->td.vm_daddr)) { +kprintf("THIS IS BAD"); pageTable[pageTableIndex] = (uInt32) vmmFindFreePage(_current->id) | PAGE_DEFAULT; } else { spinUnlock(&pageFaultSpinLock); @@ -134,6 +136,7 @@ /* Release the spin lock */ spinUnlock(&pageFaultSpinLock); +kprintf("CR2-RET"); return; } diff --git a/src/sys/vmm/paging.c b/src/sys/vmm/paging.c index 0bfd7eb..258e0a8 100644 --- a/src/sys/vmm/paging.c +++ b/src/sys/vmm/paging.c @@ -640,12 +640,12 @@ pageTableSrc[y] = 0x0; } else if ( (pageTableSrc[y] & PAGE_STACK) == PAGE_STACK ) { - kprintf("Page Stack!: 0x%X", (x * 0x400000) + (y * 0x1000)); + //kprintf("Page Stack!: 0x%X", (x * 0x400000) + (y * 0x1000)); // pageTableSrc[y] = 0x0; //MrOlsen (2016-01-18) NOTE: WHat should I Do Here? kprintf( "STACK: (%i:%i)", x, y ); } else { - kprintf( "Page Regular!: 0x%X", (x * 0x400000) + (y * 0x1000) ); + //MrOlsen 2017-12-15 - kprintf( "Page Regular!: 0x%X", (x * 0x400000) + (y * 0x1000) ); pageTableSrc[y] = 0x0; } }