]>
git.ameliathe1st.gay Git - voyage-au-centre-des-fichiers.git/log
Amelia Coutard [Mon, 13 Mar 2023 22:45:46 +0000 (23:45 +0100)]
Made the stack pages load lazily
Amelia Coutard [Mon, 13 Mar 2023 22:45:16 +0000 (23:45 +0100)]
Changed the handlers a bit, to make the code a bit simpler and clearer
Amelia Coutard [Mon, 13 Mar 2023 22:44:24 +0000 (23:44 +0100)]
Changed compile options a bit
Amelia Coutard [Mon, 13 Mar 2023 22:43:45 +0000 (23:43 +0100)]
Changed the instruction that jumps to ring 3 from sysretq to iretq
Amelia Coutard [Mon, 13 Mar 2023 14:22:22 +0000 (15:22 +0100)]
Wrote a new spec for the syscalls
Amelia Coutard [Mon, 13 Mar 2023 14:14:51 +0000 (15:14 +0100)]
Moved the loading of the elf program before the aquisition of most physical memory, in order to allow for freeing the corresponding multiboot module more easily
Amelia Coutard [Mon, 13 Mar 2023 13:48:40 +0000 (14:48 +0100)]
Changed basically nothing
Amelia Coutard [Sat, 11 Mar 2023 01:11:37 +0000 (02:11 +0100)]
Fixed mmap_print syscall, to work with the new processes data structures
Amelia Coutard [Sat, 11 Mar 2023 01:09:12 +0000 (02:09 +0100)]
Added automatic page mapping on some page faults. Also fixed a critical bug in the implementation of interrupt handlers with a error code
Amelia Coutard [Fri, 10 Mar 2023 17:06:39 +0000 (18:06 +0100)]
Moved elf loading to elf64.?pp, added the start of the needed architecture for multiple processes and IPC
Amelia Coutard [Fri, 10 Mar 2023 17:04:18 +0000 (18:04 +0100)]
Avoided future, and probably current, problems by enabling -fno-strict-aliasing
Amelia Coutard [Mon, 6 Mar 2023 19:14:57 +0000 (20:14 +0100)]
Added syscall to show userspace vmemory, to make debugging the kernel easier
Amelia Coutard [Mon, 6 Mar 2023 16:09:48 +0000 (17:09 +0100)]
Removed global bit on the low-memory mapping of the kernel: it was a mistake
Amelia Coutard [Sun, 5 Mar 2023 23:45:34 +0000 (00:45 +0100)]
Added the global bit to all pages in the higher half
Amelia Coutard [Sun, 5 Mar 2023 23:40:35 +0000 (00:40 +0100)]
Edited os::paging::setup_pages a bit. Notably, the global bit is now set for all hhigher-half memory
Amelia Coutard [Sun, 5 Mar 2023 22:43:58 +0000 (23:43 +0100)]
Edited comments a tiny bit
Amelia Coutard [Sun, 5 Mar 2023 18:57:14 +0000 (19:57 +0100)]
Used different comment symbol for .S files copyright & licence notices
Amelia Coutard [Sun, 5 Mar 2023 18:56:36 +0000 (19:56 +0100)]
Enable global bit for paging
Amelia Coutard [Sun, 5 Mar 2023 17:58:08 +0000 (18:58 +0100)]
Moved most asm simple utils to utils.?pp. Also fixed invlpg usage
Amelia Coutard [Sun, 5 Mar 2023 03:00:02 +0000 (04:00 +0100)]
Moved the code to initialise an empty page in the PML4T to paging.cpp
Amelia Coutard [Sun, 5 Mar 2023 02:58:32 +0000 (03:58 +0100)]
Merged stuff because I be silly
Amelia Coutard [Sun, 5 Mar 2023 02:54:37 +0000 (03:54 +0100)]
Added IPC design to doc.txt
Amelia Coutard [Sat, 4 Mar 2023 02:12:34 +0000 (03:12 +0100)]
Added basic API for IPC in doc.txt. Not implemented yet
Amelia Coutard [Wed, 1 Mar 2023 14:19:32 +0000 (15:19 +0100)]
Added support for haing multiple different syscalls (via a call jump table)
Amelia Coutard [Wed, 1 Mar 2023 13:57:54 +0000 (14:57 +0100)]
Fixed elf page-alignment necessity. Now only requires no page overlap
Amelia Coutard [Wed, 1 Mar 2023 13:09:38 +0000 (14:09 +0100)]
Removed assert that had become useless.
Amelia Coutard [Wed, 1 Mar 2023 01:17:23 +0000 (02:17 +0100)]
Added naming information to doc.txt
Amelia Coutard [Wed, 1 Mar 2023 01:12:19 +0000 (02:12 +0100)]
Fixed naming (amycros still present in some places). Also fixed .gitignore for naming and test_module (special case no longer needed)
Amelia Coutard [Tue, 28 Feb 2023 22:24:56 +0000 (23:24 +0100)]
Added a doc.txt file to specify the kernel documentation, and added a corresponding assert in the code
Currently, the documentation specifies how virtual memory is used.
The added assert ensures that any loaded elf program's segments are within the specified bounds.
Amelia Coutard [Tue, 28 Feb 2023 21:21:28 +0000 (22:21 +0100)]
Added missing copyright & licence disclaimers, and fixed the existing ones
Amelia Coutard [Tue, 28 Feb 2023 20:52:59 +0000 (21:52 +0100)]
Removed the linker script from the test module: it was unneeded
Amelia Coutard [Tue, 28 Feb 2023 01:35:20 +0000 (02:35 +0100)]
Fixed namespace-ending comments where that was needed
Amelia Coutard [Tue, 28 Feb 2023 01:34:35 +0000 (02:34 +0100)]
Removed some logging
Amelia Coutard [Mon, 27 Feb 2023 16:55:49 +0000 (17:55 +0100)]
Fixed bug in page counting for elf file loading. Added support for writeable segments of elf files (RO is still RO)
Amelia Coutard [Mon, 27 Feb 2023 12:32:10 +0000 (13:32 +0100)]
Added missing stack to ftl_to_userspace
Amelia Coutard [Mon, 27 Feb 2023 11:47:20 +0000 (12:47 +0100)]
Implemented an elf64 loader for test_module
Amelia Coutard [Mon, 27 Feb 2023 00:39:56 +0000 (01:39 +0100)]
Edited Makefile a bit to make it cleaner
Amelia Coutard [Sun, 26 Feb 2023 22:58:04 +0000 (23:58 +0100)]
Revamped build system, and rewrote test module to be simpler and more correct (though still not actually just producing an elf. Coming soon)
Amelia Coutard [Sun, 26 Feb 2023 14:28:37 +0000 (15:28 +0100)]
Moved .section .text where it makes sense
Amelia Coutard [Sat, 25 Feb 2023 15:08:23 +0000 (16:08 +0100)]
Moved some source files to a `lib` directory.
Amelia Coutard [Sat, 25 Feb 2023 13:15:03 +0000 (14:15 +0100)]
Added missing stuff to the .gitignore
Amelia Coutard [Sat, 25 Feb 2023 13:14:15 +0000 (14:14 +0100)]
Changed the text printed by the userspace a bit
Amelia Coutard [Sat, 25 Feb 2023 13:13:37 +0000 (14:13 +0100)]
Updated gcc version in the Makefile hack
Amelia Coutard [Sat, 25 Feb 2023 13:12:49 +0000 (14:12 +0100)]
Changed the logged text a bit
Amelia Coutard [Sun, 16 Oct 2022 00:12:37 +0000 (02:12 +0200)]
Made it so arg_n have to all be specified or all missing, no weird combining of the two. Also added convertion to a common type, to instanciate less occurences of print_nth_helper::operator%
Amelia Coutard [Sun, 16 Oct 2022 00:09:51 +0000 (02:09 +0200)]
Fixed error in rule for creating isodir/boot/test-module
Amelia Coutard [Sat, 15 Oct 2022 10:01:17 +0000 (12:01 +0200)]
Added actual string formatting to the printing.
Amelia Coutard [Fri, 14 Oct 2022 14:17:48 +0000 (16:17 +0200)]
Added start symbol, to start transitioning the module to elf64
Amelia Coutard [Fri, 14 Oct 2022 07:07:03 +0000 (09:07 +0200)]
Fixed bug about dependencies in the kernel's module.mk
Amelia Coutard [Thu, 13 Oct 2022 23:38:56 +0000 (01:38 +0200)]
Added the userspace module to the repo
It's not made to last, so don't worry about the lack of cleanness. I'll
implement elf64 soon-ish.
Amelia Coutard [Thu, 13 Oct 2022 23:18:08 +0000 (01:18 +0200)]
Added CC0 licence (for Makefiles), and renamed COPYING accordingly
Amelia Coutard [Thu, 13 Oct 2022 23:17:24 +0000 (01:17 +0200)]
Restructured build system, to allow for easier adding of separate programs later
Amelia Coutard [Thu, 13 Oct 2022 14:47:08 +0000 (16:47 +0200)]
Made ftl_to_userspace jump to a loaded module at linear address 0x1000, instead of a function in the higher-half
Amelia Coutard [Thu, 13 Oct 2022 14:45:51 +0000 (16:45 +0200)]
Made the physical pages returned by the allocator null, to avoid any unexpected bugs. Might change later
Amelia Coutard [Thu, 13 Oct 2022 09:26:43 +0000 (11:26 +0200)]
Changed the page tables to use bitfields
Amelia Coutard [Tue, 11 Oct 2022 21:39:27 +0000 (23:39 +0200)]
Removed docs.txt. Will remake later
Amelia Coutard [Tue, 11 Oct 2022 11:55:06 +0000 (13:55 +0200)]
Implemented a very simple way of jumping to userspace
Amelia Coutard [Tue, 11 Oct 2022 06:38:45 +0000 (08:38 +0200)]
Moved the GDT to the higher half (added a second lgdt after jump to 64 bits), to allow for unmapping the whole lower half
Amelia Coutard [Mon, 10 Oct 2022 20:56:19 +0000 (22:56 +0200)]
Fixed TSS setup.
Amelia Coutard [Mon, 10 Oct 2022 14:10:46 +0000 (16:10 +0200)]
Added -no-reboot to qemu options
Amelia Coutard [Sun, 9 Oct 2022 18:30:21 +0000 (20:30 +0200)]
Changed the order of the info in the GDT, to make it possible to use syscall/sysret
Amelia Coutard [Sun, 9 Oct 2022 01:06:30 +0000 (03:06 +0200)]
Changed the printing code a bit, to allow for a format argument when printing (unused for now)
Amelia Coutard [Sat, 8 Oct 2022 18:27:23 +0000 (20:27 +0200)]
Changed the algorithm that makes the free RAM available, to make it cleaner and more effective
Amelia Coutard [Sat, 8 Oct 2022 14:10:58 +0000 (16:10 +0200)]
Made printing clearer
Amelia Coutard [Sat, 8 Oct 2022 14:07:58 +0000 (16:07 +0200)]
Fixed priority of operations in address rounding
Amelia Coutard [Fri, 7 Oct 2022 11:53:30 +0000 (13:53 +0200)]
Updated stdlib includes.
Amelia Coutard [Fri, 7 Oct 2022 09:10:26 +0000 (11:10 +0200)]
Removed doxygen
Amelia Coutard [Sun, 12 Jun 2022 11:15:02 +0000 (13:15 +0200)]
Removed println and replaced its usages by corresponding print calls
Amelia Coutard [Sun, 12 Jun 2022 11:06:50 +0000 (13:06 +0200)]
Made print_mapping show only the lower half of memory
The whole physical memory map is in the higher half and is absolutely
huge, so it's best to not show it by default.
Amelia Coutard [Sun, 12 Jun 2022 11:00:07 +0000 (13:00 +0200)]
Added handlers for each one of the exceptions, instead of having generic ones, put them in the IDT accordingly
Amelia Coutard [Sun, 12 Jun 2022 02:08:31 +0000 (04:08 +0200)]
Added a way to print the entire virtual memory map. Also added missing consts in paging_entry
Amelia Coutard [Sat, 11 Jun 2022 23:17:49 +0000 (01:17 +0200)]
Moved the page allocator to be a global in paging.cpp and paging.hpp
Amelia Coutard [Tue, 7 Jun 2022 01:19:34 +0000 (03:19 +0200)]
Differentiated the interrupts between those that have error codes and those that don't
Amelia Coutard [Sun, 5 Jun 2022 17:30:22 +0000 (19:30 +0200)]
Changed the interrupt code: now only enables the first 32 vectors, and enable_interrupts now takes the ISRs as arguments instead of hardcoding them
Amelia Coutard [Sat, 4 Jun 2022 18:06:33 +0000 (20:06 +0200)]
Changed the Makefile to use mcmodel=kernel libgcc, and not mcmodel=large libgcc
Amelia Coutard [Sat, 4 Jun 2022 14:23:47 +0000 (16:23 +0200)]
Added Doxygen comments to all of the phys_ptr class
Amelia Coutard [Sat, 4 Jun 2022 14:22:21 +0000 (16:22 +0200)]
Added the generated doxygen folder to .gitignore
Amelia Coutard [Sat, 4 Jun 2022 14:21:17 +0000 (16:21 +0200)]
Fixed the Doxyfile to include private members.
Amelia Coutard [Sat, 4 Jun 2022 00:23:38 +0000 (02:23 +0200)]
Updated Makefile to gcc 11.2
Amelia Coutard [Sat, 4 Jun 2022 00:17:51 +0000 (02:17 +0200)]
Removed the equivalent of -Werror from the Doxyfile
Amelia Coutard [Wed, 1 Jun 2022 01:24:20 +0000 (03:24 +0200)]
Changed assert to disable interrupts on assertion failure, before looping hlt
Amelia Coutard [Fri, 27 May 2022 00:58:55 +0000 (02:58 +0200)]
Removed the fact that the first address for userspace program text is 0x0000000000000000 (moved it to 0x0000000000001000), to avoid UB in userspace programs
Amelia Coutard [Fri, 27 May 2022 00:57:59 +0000 (02:57 +0200)]
Generalized a bit the functions for printing to the serial port
Amelia Coutard [Fri, 27 May 2022 00:28:19 +0000 (02:28 +0200)]
Added a bit of stuff to docs.txt, and removed information that had nothing to do there
Amelia Coutard [Fri, 27 May 2022 00:20:44 +0000 (02:20 +0200)]
Changed the name of the doxygen output folder from docs to doxyfile
Amelia Coutard [Thu, 26 May 2022 18:21:29 +0000 (20:21 +0200)]
Changed nullptr to be ~0 instead of 0 for phys_ptr<T> and fixed a missing line in page_allocator
The goal is to allow usage of physical address 0. Removed the changing
of address <0x1000 to 0x1000 in the initial memory detection phase.
Amelia Coutard [Thu, 26 May 2022 17:48:56 +0000 (19:48 +0200)]
Changed a return statement so that the count returned by the allocator is always the requested count, even if no allocation was performed (in which case, addr == nullptr)
Amelia Coutard [Thu, 26 May 2022 17:47:22 +0000 (19:47 +0200)]
Removed indentation of empty line
Amelia Coutard [Thu, 26 May 2022 02:37:26 +0000 (04:37 +0200)]
Removed the framebuffer code: I will not be using it until it is reimplemented in userspace
Amelia Coutard [Thu, 26 May 2022 02:32:16 +0000 (04:32 +0200)]
Added a Doxyfile and updated the Makefile accordingly.
Amelia Coutard [Sat, 14 May 2022 22:43:03 +0000 (00:43 +0200)]
Removed useless padding: didn't know that structs were padded to their alignment automatically
Amelia Coutard [Fri, 13 May 2022 01:35:25 +0000 (03:35 +0200)]
Added specification of user program memory map
Amelia Coutard [Fri, 13 May 2022 01:23:13 +0000 (03:23 +0200)]
Enabled basic interrupts and setup LAPIC, (though no IOAPIC yet)
Amelia Coutard [Fri, 13 May 2022 01:20:57 +0000 (03:20 +0200)]
Used assert instead of if ! { halt() }, for consistency
Amelia Coutard [Thu, 12 May 2022 15:12:47 +0000 (17:12 +0200)]
Added missing include (to use outb and inb)
Amelia Coutard [Thu, 12 May 2022 14:58:53 +0000 (16:58 +0200)]
Fixed the IO map "in" the TSS
Amelia Coutard [Thu, 12 May 2022 12:23:23 +0000 (14:23 +0200)]
Restructured code a bit, to move all snippets of asm to utils.{c,h}pp
Amelia Coutard [Thu, 12 May 2022 12:17:50 +0000 (14:17 +0200)]
Added missing volatile specifier to inline asm containing cli and hlt.
Amelia Coutard [Thu, 12 May 2022 12:00:36 +0000 (14:00 +0200)]
Removed a useless include
Amelia Coutard [Thu, 12 May 2022 11:20:38 +0000 (13:20 +0200)]
Refactored phys_ptr and fixed little errors