]>
git.ameliathe1st.gay Git - voyage-au-centre-des-fichiers.git/log
summary |
shortlog | log |
commit |
commitdiff |
tree
first ⋅ prev ⋅ next
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
Amelia Coutard [Thu, 12 May 2022 11:05:17 +0000 (13:05 +0200)]
Removed constexpr for the *, -> and [] operators, and get_virt_addr, of phys_ptr: it made no sense for those to be constexpr
Amelia Coutard [Thu, 12 May 2022 10:58:44 +0000 (12:58 +0200)]
Moved phys_ptr to a separate file
Amelia Coutard [Thu, 12 May 2022 10:33:10 +0000 (12:33 +0200)]
Refactored boot.s a bit
Amelia Coutard [Mon, 9 May 2022 09:29:54 +0000 (11:29 +0200)]
Added operator- to phys_ptr<T>s, which allowed for simplifying a bit of the code
Amelia Coutard [Sun, 8 May 2022 22:48:36 +0000 (00:48 +0200)]
Changed the rounding of usable RAM addresses and the freeing of the multiboot2 info struct to avoid accidentally marking unusable RAM as usable
Amelia Coutard [Sun, 8 May 2022 21:12:23 +0000 (23:12 +0200)]
Changed kernel_phys_start to not include the bootstrap code, so as to recover its memory as available
Amelia Coutard [Sun, 8 May 2022 19:45:23 +0000 (21:45 +0200)]
Moved the past_the_end page of the page allocator to the c++ code, and made it and the page allocator globals
Amelia Coutard [Sun, 8 May 2022 18:44:09 +0000 (20:44 +0200)]
Removed useless concept and replaced its one use with its definition
Amelia Coutard [Sun, 8 May 2022 18:41:23 +0000 (20:41 +0200)]
Added support for global constructors and destructors
Amelia Coutard [Sun, 8 May 2022 18:38:53 +0000 (20:38 +0200)]
Maybe fixed a bug. Avoided a potential one, anyways
Amelia Coutard [Sat, 7 May 2022 22:37:30 +0000 (00:37 +0200)]
Added actual detection of RAM, to be able to use all of the computer's memory
Amelia Coutard [Sat, 7 May 2022 15:29:38 +0000 (17:29 +0200)]
Added a special case for deallocating a 0-sized block, and remove the unimplemented `mark_as_used`
Amelia Coutard [Sat, 7 May 2022 14:45:14 +0000 (16:45 +0200)]
Added missing inline specifiers to all function in multiboot2.hpp
Amelia Coutard [Sat, 7 May 2022 14:34:57 +0000 (16:34 +0200)]
Removed the RAM testing: it was useless
Amelia Coutard [Fri, 6 May 2022 23:01:21 +0000 (01:01 +0200)]
Changed "multiboot" to "multiboot2" in check for magic number in kernel.cpp
Only makes the error message more exact, no change in code behaviour.
Amelia Coutard [Fri, 6 May 2022 23:00:41 +0000 (01:00 +0200)]
Made os::assert print "Error: " before the error message, updated calls accordingly
Amelia Coutard [Fri, 6 May 2022 22:57:12 +0000 (00:57 +0200)]
Changed the physical page allocator completely, to make the code simpler
Amelia Coutard [Fri, 6 May 2022 22:33:12 +0000 (00:33 +0200)]
Changed the code to use the definitions in <cstdint> and <cstddef> instead of the c equivalents
Amelia Coutard [Fri, 6 May 2022 18:48:46 +0000 (20:48 +0200)]
Added missing operators to phys_ptr.
Amelia Coutard [Fri, 6 May 2022 18:39:56 +0000 (20:39 +0200)]
Added the system includes, to be able to use some of the standard headers (the freestanding ones) until I make my os specific toolchain (in a long time, probably)
Amelia Coutard [Thu, 5 May 2022 23:25:12 +0000 (01:25 +0200)]
Changed os::halt to use inline asm instead of an asm routine, and moved the cli instructions around
Amelia Coutard [Thu, 5 May 2022 18:06:46 +0000 (20:06 +0200)]
Added a basic framebuffer
Amelia Coutard [Thu, 5 May 2022 17:17:47 +0000 (19:17 +0200)]
Added serial logging and a simple physical page allocator
Amelia Coutard [Thu, 5 May 2022 17:11:06 +0000 (19:11 +0200)]
Moved the kernel to 1MiB (to avoid problems with low memory-mapped IO).
Also had to change the low mapping to 2GiB instead of 2MiB, because the stack finished after 2MiB.
Amelia Coutard [Thu, 5 May 2022 12:11:05 +0000 (14:11 +0200)]
Updated Makefile qemu command (added stdio serial)
Amelia Coutard [Wed, 4 May 2022 11:15:28 +0000 (13:15 +0200)]
Added a map to 64TiB of physical memory in the first 64TiB (half) of the higher half of memory
Amelia Coutard [Wed, 4 May 2022 11:12:16 +0000 (13:12 +0200)]
Updated Makefile
Made qemu allow 1GiB pages, and changed the compile args to use c++20.
Amelia Coutard [Thu, 28 Apr 2022 13:31:07 +0000 (15:31 +0200)]
Added missing #pragma once in multiboot2.hpp
Amelia Coutard [Wed, 27 Apr 2022 22:30:35 +0000 (00:30 +0200)]
Made a proper GDT.
Amelia Coutard [Wed, 27 Apr 2022 20:58:16 +0000 (22:58 +0200)]
Changed g++ mcmodel to kernel.
Amelia Coutard [Wed, 27 Apr 2022 20:50:15 +0000 (22:50 +0200)]
Put the kernel in the upper half.
Amelia Coutard [Wed, 27 Apr 2022 20:33:52 +0000 (22:33 +0200)]
Initial Commit