diff options
| author | Miguel <m.i@gmx.at> | 2018-08-18 20:04:32 +0200 |
|---|---|---|
| committer | Miguel <m.i@gmx.at> | 2018-08-18 20:04:32 +0200 |
| commit | 857d82d45c2bbcaf5234b756736596b1e6a9d28a (patch) | |
| tree | aef00d48c5de7fb7cbbc278cd22a98c6a60e14d8 | |
| parent | 18d1aa2593003680b0d6f59a36e5dad2821134b2 (diff) | |
cleaning up (Also for newlib)
| -rw-r--r-- | README.md | 109 | ||||
| -rw-r--r-- | kernel/syscalls.c | 2 | ||||
| -rw-r--r-- | newlib/crt0.s | 19 | ||||
| -rw-r--r-- | newlib/syscalls.c (renamed from syscalls/syscalls.c) | 0 | ||||
| -rw-r--r-- | screenshots/foolos.png | bin | 8959 -> 0 bytes | |||
| -rw-r--r-- | userspace/crt0.S | 21 |
6 files changed, 67 insertions, 84 deletions
@@ -6,55 +6,36 @@ Disclaimer THIS IS A WORK IN PROGRESS. -This is a simple and useless "operating system", with very basic -features, sorry. It is the fruit of my fundamental explorations of -the x86 architectures and operating system design. +This is a simple and useless "operating system", with a very basic set +of features. It is the fruit of my fundamental explorations of the x86 +architecture and operating system design. -We have (or had) 32-bit protected mode, interrupt handling, -memory management, scheduling, a floppy disk controller, mouse -as well as VESA and a couple of other things. networking is a big goal. - - - -Copyright M.Idziorek 2014-2015,2018 <m.i@gmx.at> unless stated otherwise! - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -Building --------- - -Adapt $SYSROOT in userspace/sys/Makefile +Copyright M.Idziorek 2014-2015,2018 <m.i@gmx.at> unless stated otherwise. -Requirements: - -* OS Specific Toolchain [1] +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - binutils-* - gcc-* +Prequisites +----------- -* Newlib * [2] +GCC CROSS-COMPILER (i686-elf) -* GRUB2 + https://wiki.osdev.org/GCC_Cross-Compiler (18 AUG 2018) + ftp://ftp.fu-berlin.de/unix/languages/gcc/releases/gcc-8.2.0/gcc-8.2.0.tar.gz + https://sunsite.icm.edu.pl/pub/gnu/binutils/binutils-2.31.1.tar.gz -https://wiki.osdev.org/GCC_Cross-Compiler -ftp://ftp.fu-berlin.de/unix/languages/gcc/releases/gcc-8.2.0/gcc-8.2.0.tar.gz -https://sunsite.icm.edu.pl/pub/gnu/binutils/binutils-2.31.1.tar.gz +NEWLIB -https://wiki.osdev.org/Porting_Newlib -ftp://sourceware.org/pub/newlib/newlib-3.0.0.20180802.tar.gz -https://ftp.gnu.org/gnu/autoconf/autoconf-2.68.tar.gz -https://ftp.gnu.org/gnu/automake/automake-1.11.6.tar.gz + https://wiki.osdev.org/Porting_Newlib (18 AUG 2018) + ftp://sourceware.org/pub/newlib/newlib-3.0.0.20180802.tar.gz + https://ftp.gnu.org/gnu/autoconf/autoconf-2.68.tar.gz + https://ftp.gnu.org/gnu/automake/automake-1.11.6.tar.gz -MAKE DIFF OF NEWLIB ! - -DID NO TRY YET -https://www.musl-libc.org/releases/musl-1.1.19.tar.gz Usage ----- @@ -77,6 +58,10 @@ FoolOS is tested/developed on the following emulators/machines Features -------- +We have (or had) 32-bit protected mode, interrupt handling, +memory management, scheduling, a floppy disk controller, mouse + +as well as VESA and a couple of other things. networking is a big goal. Please note that all features are only very rudimentary and buggy. Some might have been disable (temporarily) due to conflicts or regressions. @@ -118,29 +103,29 @@ Todos Issues ------ -* sbrk() -* ESP collisions!? -* TSS-ESP0? -* kbfree() -* pg_directory alloc -* implement posix(?) getdents instead of our own readdir. -* Turning on some gcc optimizations breaks the kernel. (need debug so go for ELF!) -* Assumed support for VESA mode 0x114 with linear addressing. (let the user select) -* fixed size of process images! + sbrk() + ESP collisions!? + TSS-ESP0? + kbfree() + pg_directory alloc + implement posix(?) getdents instead of our own readdir. + Turning on some gcc optimizations breaks the kernel. (need debug so go for ELF!) + Assumed support for VESA mode 0x114 with linear addressing. (let the user select) + fixed size of process images! REFERENCES ========== -* http://www.brokenthorn.com/Resources/OSDev17.html -* http://www.jamesmolloy.co.uk/tutorial_html/9.-Multitasking.html -* http://pdos.csail.mit.edu/6.828/2011/labs/lab6/ -* http://pdos.csail.mit.edu/6.828/2011/xv6.html -* http://www.nongnu.org/ext2-doc/ -* http://www.osdever.net/tutorials/view/multiprocessing-support-for-hobby-oses-explained -* http://forum.osdev.org/viewtopic.php?f=1&t=10944 -* http://wiki.osdev.org/Virtual_8086_Mode -* http://wiki.xomb.org/index.php?title=ACPI_Tables -* http://wiki.osdev.org/Hosted_GCC_Cross-Compiler -* https://sourceware.org/newlib/ -* and many many more... + http://www.brokenthorn.com/Resources/OSDev17.html + http://www.jamesmolloy.co.uk/tutorial_html/9.-Multitasking.html + http://pdos.csail.mit.edu/6.828/2011/labs/lab6/ + http://pdos.csail.mit.edu/6.828/2011/xv6.html + http://www.nongnu.org/ext2-doc/ + http://www.osdever.net/tutorials/view/multiprocessing-support-for-hobby-oses-explained + http://forum.osdev.org/viewtopic.php?f=1&t=10944 + http://wiki.osdev.org/Virtual_8086_Mode + http://wiki.xomb.org/index.php?title=ACPI_Tables + http://wiki.osdev.org/Hosted_GCC_Cross-Compiler + https://sourceware.org/newlib/ + and many many more... diff --git a/kernel/syscalls.c b/kernel/syscalls.c index 0be0602..3f2a811 100644 --- a/kernel/syscalls.c +++ b/kernel/syscalls.c @@ -224,7 +224,7 @@ int syscall_execve(char *name, char **argv, char **env) asm volatile ("push %0" :: "r" (argv1)); asm volatile ("push %0" :: "r" (arg_count)); - asm volatile ("push %0" :: "r" (kballoc(1))); + //asm volatile ("push %0" :: "r" (kballoc(1))); asm volatile ("push %0" :: "r" (env1)); // push addr and return to it diff --git a/newlib/crt0.s b/newlib/crt0.s new file mode 100644 index 0000000..e8f0405 --- /dev/null +++ b/newlib/crt0.s @@ -0,0 +1,19 @@ +.global _start + +_start: + +# environment adress was passed on stack +pop %eax +mov %eax, environ + +# call main (argc and argv are on the stack) +call main + +# push exit code and pass to _exit syscall +push %eax +call _exit + +# this should never be reached! +.wait: + hlt +jmp .wait diff --git a/syscalls/syscalls.c b/newlib/syscalls.c index 3cd1f95..3cd1f95 100644 --- a/syscalls/syscalls.c +++ b/newlib/syscalls.c diff --git a/screenshots/foolos.png b/screenshots/foolos.png Binary files differdeleted file mode 100644 index d07eb1c..0000000 --- a/screenshots/foolos.png +++ /dev/null diff --git a/userspace/crt0.S b/userspace/crt0.S deleted file mode 100644 index 30b56a9..0000000 --- a/userspace/crt0.S +++ /dev/null @@ -1,21 +0,0 @@ -.global _start - -_start: - -pop %eax -mov %eax, environ - -pop %eax -# mov %eax, _impure_ptr # TODO: use this ! - -call main - -push environ -push %eax -call _exit2 - -# this should never be reached anyway! - -.wait: - hlt -jmp .wait |
