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 9c80c36..07150ab 100644 --- a/src/Makefile +++ b/src/Makefile @@ -24,29 +24,7 @@ # depend kernel tools kernel: - @echo - @echo "***************************************************************" - @echo "Kernel Build For ${_ARCH} Started On `LC_ALL=C date`" - @echo "***************************************************************" - @echo - @echo "***************************************************************" - @echo "Step 1: Clean Kernel" - @echo "***************************************************************" - #cd ${KERNEL_SRC}; ${KMAKE} ${CLEANDIR} - @echo - @echo "***************************************************************" - @echo "Step 2: Build Kernel Objects" - @echo "***************************************************************" - cd ${KERNEL_SRC}; ${KMAKE} all - @echo - @echo "***************************************************************" - @echo "Step 3: Link Kernel Objects" - @echo "***************************************************************" - cd ${KERNEL_SRC}; ${KMAKE} all - @echo - @echo "***************************************************************" - @echo "Kernel Build For ${_ARCH} Completed On `LC_ALL=C date`" - @echo "***************************************************************" + @cd sys;make world: @echo @@ -92,6 +70,7 @@ @echo "Step 2: Copy Libraries" @echo "***************************************************************" cp -pr build/lib/* ${ROOT}/lib/ + cp -pr build/libexec/* ${ROOT}/libexec/ sync @echo @echo "***************************************************************" @@ -105,10 +84,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/bin/Makefile b/src/bin/Makefile index 37c4f62..a123b29 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -1,7 +1,7 @@ # $Id: Makefile 121 2016-01-14 03:18:20Z reddawg $ # The System Makefile (C) 2002 The UbixOS Project -all: init-bin login-bin shell-bin clock-bin cp-bin fdisk-bin format-bin disklabel-bin ubistry-bin ld-bin ttyd-bin stat-bin #rtld-elf-bin +all: init-bin login-bin shell-bin clock-bin cp-bin fdisk-bin format-bin disklabel-bin ubistry-bin ld-bin ttyd-bin stat-bin ls-bin #rtld-elf-bin # MrOlsen (2016-01-11) ERROR: weird it didnt like -elf rtld-elf-bin # MrOlsen (2016-01-11) NOTE: edit-bin cat-bin # test-bin pwd-bin cat-bin de-bin ls-bin goofball-bin mount-bin diff --git a/src/bin/clock/main.c b/src/bin/clock/main.c index 81ce9e0..397c3a4 100644 --- a/src/bin/clock/main.c +++ b/src/bin/clock/main.c @@ -92,9 +92,6 @@ sec = sysTime; printf("[%s][%02d/%02d/%i, %02d:%02d.%02d]\n",argv[0],month,day,year,hour,min,sec); - for (i = 0x0;i < argc;i++) { - printf("argv[%i](0x%X:%s),__progrname(%s), argc: %i\n",i,argv[i],argv[i],__progname,argc); - } return(0); } diff --git a/src/bin/ld/Makefile b/src/bin/ld/Makefile index c9a6ba4..db85020 100644 --- a/src/bin/ld/Makefile +++ b/src/bin/ld/Makefile @@ -19,7 +19,7 @@ # Link The Binary $(OUTPUT) : $(OBJS) - $(CC) -m32 -nostdlib -shared -Wl,-soname,$(OUTPUT) -Wl,-m,elf_i386_fbsd -e _ld -o ../../build/bin/$(OUTPUT) $(OBJS) $(LIBRARIES) $(SUBS) + $(CC) -m32 -nostdlib -shared -Wl,-soname,$(OUTPUT) -Wl,-m,elf_i386_fbsd -e _ld -o ../../build/libexec/$(OUTPUT) $(OBJS) $(LIBRARIES) $(SUBS) # strip $(OUTPUT) # Compile the source files diff --git a/src/bin/ls/Makefile b/src/bin/ls/Makefile index fe8e375..55ec9fd 100644 --- a/src/bin/ls/Makefile +++ b/src/bin/ls/Makefile @@ -17,12 +17,12 @@ #Objects OBJS = main.o -LIBRARIES = ../../lib/libc_old/libc_old.so +LIBRARIES = ../../build/lib/libc_old.so # Link The Binary $(BINARY) : $(OBJS) $(CC) $(CFLAGS) -o ../../build/bin/$@ $(STARTUP) $(LIBRARIES) $(OBJS) - strip $(BINARY) + #strip $(BINARY) # Compile the source files .cpp.o: diff --git a/src/bin/ls/main.c b/src/bin/ls/main.c index 3f38528..1574b9f 100644 --- a/src/bin/ls/main.c +++ b/src/bin/ls/main.c @@ -23,6 +23,7 @@ #include #include +#include #include @@ -34,14 +35,14 @@ //UbixFS Directory Entry struct directoryEntry { - u_int32_t startCluster; //Starting Cluster Of File - u_int32_t size; //Size Of File - u_int32_t creationDate; //Date Created - u_int32_t lastModified; //Date Last Modified - u_int32_t uid; //UID Of Owner - u_int32_t gid; //GID Of Owner - u_int16_t attributes; //Files Attributes - u_int16_t permissions; //Files Permissions + uint32_t startCluster; //Starting Cluster Of File + uint32_t size; //Size Of File + uint32_t creationDate; //Date Created + uint32_t lastModified; //Date Last Modified + uint32_t uid; //UID Of Owner + uint32_t gid; //GID Of Owner + uint16_t attributes; //Files Attributes + uint16_t permissions; //Files Permissions char fileName[256]; //File Name }; @@ -62,6 +63,7 @@ if (argv == 0x0) { getcwd(pwd,256); +printf("PWD1: %s\n", pwd); if ((fd = fopen(pwd,"rb")) == 0x0) { printf("Error: Reading Directory\n"); exit(1); @@ -69,12 +71,15 @@ } else if (argv[1] == 0x0) { getcwd(pwd,256); +printf("PWD2: %s\n", pwd); if ((fd = fopen(pwd,"rb")) == 0x0) { printf("Error: Reading Directory\n"); exit(1); } } else { + getcwd(pwd,256); +printf("PWD3: %s\n", pwd); fd = fopen(argv[1],"rb"); if (fd->fd == 0x0) { printf("Error: Reading Directory\n"); @@ -85,6 +90,7 @@ fread(dirEntry,fd->size,1,fd); pwd[0] = '/'; for (i=0;i<(fd->size/sizeof(struct directoryEntry));i++) { +printf("[fN: %s]", dirEntry[i].fileName); if ((dirEntry[i].fileName[0] > 0) && (dirEntry[i].fileName[0] != '/')) { for (x=0;x<12;x++) { permsData[x] = '-'; diff --git a/src/bin/shell/exec.c b/src/bin/shell/exec.c index c9406c8..6a2ee04 100644 --- a/src/bin/shell/exec.c +++ b/src/bin/shell/exec.c @@ -37,11 +37,13 @@ //printf("Executing App\n"); cPid = fork(); +printf("Forked: [%i]\n", cPid); if (!cPid) { sprintf(file, "%s%s", cwd, data->argv[1]); // if (boo == 0) - execve(file,data->argv, 0x0); + //execve(file,data->argv, 0x0); + execve(file,0x0, 0x0); /* else execn(file,&data->argv); diff --git a/src/bin/shell/main.c b/src/bin/shell/main.c index 737d3b4..36d564e 100644 --- a/src/bin/shell/main.c +++ b/src/bin/shell/main.c @@ -65,11 +65,9 @@ if ( inBuf->args->arg != 0x0 ) { - execProgram( inBuf ); - /* +// execProgram( inBuf ); if (!commands(inBuf)) execProgram(inBuf); - */ } freeArgs( inBuf ); diff --git a/src/build/libexec/.gitignore b/src/build/libexec/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/src/build/libexec/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/src/lib/libc_old/stdlib/exit.c b/src/lib/libc_old/stdlib/exit.c index 4b8fe26..c79b14e 100644 --- a/src/lib/libc_old/stdlib/exit.c +++ b/src/lib/libc_old/stdlib/exit.c @@ -26,6 +26,6 @@ void exit(int status) { asm( "int %0\n" - : : "i" (0x80),"a" (2),"b" (status) + : : "i" (0x80),"a" (1),"b" (status) ); } 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 54da3b9..156aa8d 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); } /***************************************************************************************** @@ -265,7 +267,7 @@ } _current->oInfo.vmStart = 0x80000000; - _current->td.vm_daddr = (char *) (programHeader[i].phVaddr & 0xFFFFF000); + _current->td.vm_daddr = (u_long) (programHeader[i].phVaddr & 0xFFFFF000); /* Now Load Section To Memory */ fseek( tmpFd, programHeader[i].phOffset, 0 ); fread( (void *) programHeader[i].phVaddr, programHeader[i].phFilesz, 1, tmpFd ); @@ -281,7 +283,7 @@ /* Set Virtual Memory Start */ _current->oInfo.vmStart = 0x80000000; - _current->td.vm_daddr = (char *) (programHeader[i].phVaddr & 0xFFFFF000); + _current->td.vm_daddr = (u_long) (programHeader[i].phVaddr & 0xFFFFF000); /* Set Up Stack Space */ //MrOlsen (2016-01-14) FIX: is the stack start supposed to be addressable xhcnage x= 1 to x=0 @@ -378,6 +380,7 @@ int i = 0x0; int x = 0x0; int argc = 0x0; + u_int32_t cr3 = 0x0; unsigned int *tmp = 0x0; //u_int32_t memAddr = 0x0; @@ -406,6 +409,8 @@ Elf_Auxargs *auxargs = 0x0; + asm("movl %%cr3, %0;" : "=r" (cr3)); + fd = fopen( file, "r" ); /* If the file doesn't exist fail */ @@ -422,6 +427,11 @@ /* Set Threads FD to open FD */ _current->imageFd = fd; + //! Clean the virtual of COW pages left over from the fork + //vmm_cleanVirtualSpace( (u_int32_t) _current->td.vm_daddr + (_current->td.vm_dsize << PAGE_SHIFT) ); + //MrOlsen 2017-12-15 - FIX! - This should be done before it was causing a lot of problems why did I free space after loading binary???? + vmm_cleanVirtualSpace( (u_int32_t) 0x8048000 ); + /* Load ELF Header */ if ( (binaryHeader = (elfHeader *) kmalloc( sizeof(elfHeader) )) == 0x0 ) K_PANIC( "MALLOC FAILED" ); @@ -487,8 +497,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 ); @@ -562,6 +576,8 @@ tmp = (void *) elfDynamicS[i].dynPtr; if ( tmp == 0x0 ) kpanic( "tmp: NULL\n" ); + else + kprintf("[0x%X]", tmp); tmp[2] = (uInt32) ldAddr; tmp[1] = (uInt32) fd; break; @@ -610,13 +626,10 @@ memcpy( iFrameNew, iFrame, sizeof(struct i386_frame) ); */ - //! Clean the virtual of COW pages left over from the fork - vmm_cleanVirtualSpace( (u_int32_t) _current->td.vm_daddr + (_current->td.vm_dsize << PAGE_SHIFT) ); - //! Adjust iframe // iFrame = (struct i386_frame *) (_current->tss.esp0 - sizeof(struct i386_frame)); - kprintf( "EBP-1(%i): EBP: [0x%X], EIP: [0x%X], ESP: [0x%X]\n", _current->id, iFrame->ebp, iFrame->eip, iFrame->user_esp ); + //kprintf( "EBP-1(%i): EBP: [0x%X], EIP: [0x%X], ESP: [0x%X]\n", _current->id, iFrame->ebp, iFrame->eip, iFrame->user_esp ); iFrame->ebp = STACK_ADDR; iFrame->eip = binaryHeader->eEntry; @@ -624,12 +637,13 @@ tmp = (void *) iFrame->user_esp; //MrOlsen 2017-11-14 iFrame->user_ebp; - kprintf( "STACK: 0x%X, ESP0: 0x%X\n", iFrame->user_esp, _current->tss.esp0 ); + //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 ); + //kprintf( "xSTACK: 0x%X, ESP0: 0x%X\n", iFrame->user_esp, _current->tss.esp0 ); if ( argc == 1 ) { *tmp-- = 0x0; @@ -641,8 +655,9 @@ } } - *tmp-- = 0x0; /* ARGV Terminator */ - *tmp-- = 0x0; /* ENV Terminator */ + *tmp-- = 0x0; // ARGV Terminator + *tmp-- = 0x0; // ENV Terminator +*/ /* * App Entry Stack @@ -670,7 +685,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 +694,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 +706,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 +721,19 @@ ubixGDT[10].descriptor.baseMed = ((STACK_ADDR >> 16) & 0xFF); ubixGDT[10].descriptor.baseHigh = (STACK_ADDR >> 24); + */ + +/* asm( "sti\n" "ljmp $0x20,$0\n" ); - */ - return (-1); +*/ + tmp = (char *)iFrame->eip; + + //kprintf("N:[0x%X]\n", tmp[0]); + //kprintf( "EBP-4(%i): [0x%X], EBP: [0x%X], EIP: [0x%X], ESP: [0x%X], CR3: [0x%X-0x%X]\n", _current->id, _current->oInfo.vmStart, iFrame->ebp, iFrame->eip, iFrame->user_esp, cr3, kernelPageDirectory ); + return (0x0); } /*! @@ -799,7 +823,7 @@ } else { _current->td.vm_dsize = seg_size >> PAGE_SHIFT; - _current->td.vm_daddr = (char *) seg_addr; + _current->td.vm_daddr = (u_long) seg_addr; } _current->oInfo.vmStart = ((programHeader[i].phVaddr & 0xFFFFF000) + 0xA900000); @@ -831,10 +855,10 @@ kprintf( "[0x%X][0x%X]\n", eip, addr ); _current->td.vm_dsize = seg_size >> PAGE_SHIFT; - _current->td.vm_daddr = (char *) seg_addr; + _current->td.vm_daddr = (u_long) seg_addr; //! copy in arg strings - argv = ap; + argv = (char **)ap; if ( argv[1] != 0x0 ) { argc = (int) argv[0]; diff --git a/src/sys/i386/syscall.c b/src/sys/i386/syscall.c index 61abbbd..5ffa196 100644 --- a/src/sys/i386/syscall.c +++ b/src/sys/i386/syscall.c @@ -123,8 +123,8 @@ ************************************************************************/ int sysGetFreePage( struct thread *td, u_int32_t *count) { - kprintf("sysGetFreePage - Count: %i\n", *count); - return(vmmGetFreeVirtualPage(_current->id, *count, VM_THRD)); + //MrOlsen 2017-12-15 kprintf("sysGetFreePage - Count: %i\n", *count); + return((int) vmmGetFreeVirtualPage(_current->id, *count, VM_THRD)); //return(vmmGetFreeVirtualPage(_current->id, *count, VM_TASK)); } @@ -159,6 +159,7 @@ int sys_getcwd(struct thread *td, struct sys_getcwd_args *args) { if ( args->buf ) sprintf( args->buf, "%s", _current->oInfo.cwd ); +kprintf("[CWD: %s]", _current->oInfo.cwd); return (0); } 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/ld.c b/src/sys/kernel/ld.c index d3df83b..a320370 100644 --- a/src/sys/kernel/ld.c +++ b/src/sys/kernel/ld.c @@ -55,7 +55,7 @@ elfPltInfo *elfRel = 0x0; /* Open our dynamic linker */ - ldFd = fopen("sys:/lib/ld.so","rb"); + ldFd = fopen("sys:/libexec/ld.so","rb"); if (ldFd == 0x0) { kprintf("Can not open ld.so\n"); 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/copyvirtualspace.c b/src/sys/vmm/copyvirtualspace.c index 52d79ab..b216fa2 100644 --- a/src/sys/vmm/copyvirtualspace.c +++ b/src/sys/vmm/copyvirtualspace.c @@ -197,7 +197,7 @@ newPageDirectory[PD_INDEX( PD_BASE_ADDR )] = (u_int32_t)( vmm_getPhysicalAddr( (uInt32) newPageTable ) | PAGE_DEFAULT ); newPageTable[0] = (u_int32_t)( (u_int32_t)( newPageDirectoryAddress ) | PAGE_DEFAULT ); - kprintf( "PD3: %i - 0x%X - 0x%X\n", PD_INDEX( PD_BASE_ADDR ), newPageDirectoryAddress, newPageTable[0] ); + //MrOlsen (2017-12-15) - kprintf( "PD3: %i - 0x%X - 0x%X\n", PD_INDEX( PD_BASE_ADDR ), newPageDirectoryAddress, newPageTable[0] ); vmmUnmapPage( (uInt32) newPageTable, 1 ); diff --git a/src/sys/vmm/createvirtualspace.c b/src/sys/vmm/createvirtualspace.c index dfbb960..faef67b 100644 --- a/src/sys/vmm/createvirtualspace.c +++ b/src/sys/vmm/createvirtualspace.c @@ -116,7 +116,7 @@ newPageDirectory[PD_INDEX( PD_BASE_ADDR )] = (u_int32_t)( vmm_getPhysicalAddr( (uInt32) newPageTable ) | PAGE_DEFAULT ); newPageTable[0] = (u_int32_t)( (u_int32_t)( newPageDirectoryAddress ) | PAGE_DEFAULT ); - kprintf( "PD3: %i - 0x%X - 0x%X\n", PD_INDEX( PD_BASE_ADDR ), newPageDirectoryAddress, newPageTable[0] ); + //MrOlsen 2017-12-15 kprintf( "PD3: %i - 0x%X - 0x%X\n", PD_INDEX( PD_BASE_ADDR ), newPageDirectoryAddress, newPageTable[0] ); vmmUnmapPage( (uInt32) newPageTable, 1 ); diff --git a/src/sys/vmm/getfreevirtualpage.c b/src/sys/vmm/getfreevirtualpage.c index 6e0c959..d43f887 100644 --- a/src/sys/vmm/getfreevirtualpage.c +++ b/src/sys/vmm/getfreevirtualpage.c @@ -137,7 +137,7 @@ if ( type == VM_THRD ) { _current->td.vm_dsize += btoc( count * 0x1000 ); - kprintf( "vm_dsize: [0x%X]][0x%X]\n", ctob( _current->td.vm_dsize ), _current->td.vm_dsize ); + //kprintf( "vm_dsize: [0x%X]][0x%X]\n", ctob( _current->td.vm_dsize ), _current->td.vm_dsize ); } else if ( type == VM_TASK ) _current->oInfo.vmStart += count * 0x1000; @@ -146,7 +146,7 @@ * MMAP Return */ - kprintf( "mmap: [0x%x]\n", start_page ); + //kprintf( "mmap: [0x%x]\n", start_page ); /* If No Free Page Was Found Return NULL */ spinUnlock( &fvpSpinLock ); return (start_page); 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..f2872f6 100644 --- a/src/sys/vmm/paging.c +++ b/src/sys/vmm/paging.c @@ -636,16 +636,16 @@ for ( y = 0; y < 1024; y++ ) { if ( (pageTableSrc[y] & PAGE_PRESENT) == PAGE_PRESENT ) { if ( (pageTableSrc[y] & PAGE_COW) == PAGE_COW ) { - kprintf( "COW: 0x%X", (x * 0x400000) + (y * 0x1000) ); + //kprintf( "COW: 0x%X", (x * 0x400000) + (y * 0x1000) ); 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; } }