]> git.ameliathe1st.gay Git - voyage-au-centre-des-fichiers.git/log
voyage-au-centre-des-fichiers.git
2 years agoAdded actual string formatting to the printing.
Amelia Coutard [Sat, 15 Oct 2022 10:01:17 +0000 (12:01 +0200)]
Added actual string formatting to the printing.

2 years agoAdded start symbol, to start transitioning the module to elf64
Amelia Coutard [Fri, 14 Oct 2022 14:17:48 +0000 (16:17 +0200)]
Added start symbol, to start transitioning the module to elf64

2 years agoFixed bug about dependencies in the kernel's module.mk
Amelia Coutard [Fri, 14 Oct 2022 07:07:03 +0000 (09:07 +0200)]
Fixed bug about dependencies in the kernel's module.mk

2 years agoAdded the userspace module to the repo
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.

2 years agoAdded CC0 licence (for Makefiles), and renamed COPYING accordingly
Amelia Coutard [Thu, 13 Oct 2022 23:18:08 +0000 (01:18 +0200)]
Added CC0 licence (for Makefiles), and renamed COPYING accordingly

2 years agoRestructured build system, to allow for easier adding of separate programs later
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

2 years agoMade ftl_to_userspace jump to a loaded module at linear address 0x1000, instead of...
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

2 years agoMade the physical pages returned by the allocator null, to avoid any unexpected bugs...
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

2 years agoChanged the page tables to use bitfields
Amelia Coutard [Thu, 13 Oct 2022 09:26:43 +0000 (11:26 +0200)]
Changed the page tables to use bitfields

2 years agoRemoved docs.txt. Will remake later
Amelia Coutard [Tue, 11 Oct 2022 21:39:27 +0000 (23:39 +0200)]
Removed docs.txt. Will remake later

2 years agoImplemented a very simple way of jumping to userspace
Amelia Coutard [Tue, 11 Oct 2022 11:55:06 +0000 (13:55 +0200)]
Implemented a very simple way of jumping to userspace

2 years agoMoved the GDT to the higher half (added a second lgdt after jump to 64 bits), to...
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

2 years agoFixed TSS setup.
Amelia Coutard [Mon, 10 Oct 2022 20:56:19 +0000 (22:56 +0200)]
Fixed TSS setup.

2 years agoAdded -no-reboot to qemu options
Amelia Coutard [Mon, 10 Oct 2022 14:10:46 +0000 (16:10 +0200)]
Added -no-reboot to qemu options

2 years agoChanged the order of the info in the GDT, to make it possible to use syscall/sysret
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

2 years agoChanged the printing code a bit, to allow for a format argument when printing (unused...
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)

2 years agoChanged the algorithm that makes the free RAM available, to make it cleaner and more...
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

2 years agoMade printing clearer
Amelia Coutard [Sat, 8 Oct 2022 14:10:58 +0000 (16:10 +0200)]
Made printing clearer

2 years agoFixed priority of operations in address rounding
Amelia Coutard [Sat, 8 Oct 2022 14:07:58 +0000 (16:07 +0200)]
Fixed priority of operations in address rounding

2 years agoUpdated stdlib includes.
Amelia Coutard [Fri, 7 Oct 2022 11:53:30 +0000 (13:53 +0200)]
Updated stdlib includes.

2 years agoRemoved doxygen
Amelia Coutard [Fri, 7 Oct 2022 09:10:26 +0000 (11:10 +0200)]
Removed doxygen

2 years agoRemoved println and replaced its usages by corresponding print calls
Amelia Coutard [Sun, 12 Jun 2022 11:15:02 +0000 (13:15 +0200)]
Removed println and replaced its usages by corresponding print calls

2 years agoMade print_mapping show only the lower half of memory
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.

2 years agoAdded handlers for each one of the exceptions, instead of having generic ones, put...
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

2 years agoAdded a way to print the entire virtual memory map. Also added missing consts in...
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

2 years agoMoved the page allocator to be a global in paging.cpp and paging.hpp
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

2 years agoDifferentiated the interrupts between those that have error codes and those that...
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

2 years agoChanged the interrupt code: now only enables the first 32 vectors, and enable_interru...
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

2 years agoChanged the Makefile to use mcmodel=kernel libgcc, and not mcmodel=large libgcc
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

2 years agoAdded Doxygen comments to all of the phys_ptr class
Amelia Coutard [Sat, 4 Jun 2022 14:23:47 +0000 (16:23 +0200)]
Added Doxygen comments to all of the phys_ptr class

2 years agoAdded the generated doxygen folder to .gitignore
Amelia Coutard [Sat, 4 Jun 2022 14:22:21 +0000 (16:22 +0200)]
Added the generated doxygen folder to .gitignore

2 years agoFixed the Doxyfile to include private members.
Amelia Coutard [Sat, 4 Jun 2022 14:21:17 +0000 (16:21 +0200)]
Fixed the Doxyfile to include private members.

2 years agoUpdated Makefile to gcc 11.2
Amelia Coutard [Sat, 4 Jun 2022 00:23:38 +0000 (02:23 +0200)]
Updated Makefile to gcc 11.2

2 years agoRemoved the equivalent of -Werror from the Doxyfile
Amelia Coutard [Sat, 4 Jun 2022 00:17:51 +0000 (02:17 +0200)]
Removed the equivalent of -Werror from the Doxyfile

2 years agoChanged assert to disable interrupts on assertion failure, before looping hlt
Amelia Coutard [Wed, 1 Jun 2022 01:24:20 +0000 (03:24 +0200)]
Changed assert to disable interrupts on assertion failure, before looping hlt

2 years agoRemoved the fact that the first address for userspace program text is 0x0000000000000...
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

2 years agoGeneralized a bit the functions for printing to the serial port
Amelia Coutard [Fri, 27 May 2022 00:57:59 +0000 (02:57 +0200)]
Generalized a bit the functions for printing to the serial port

2 years agoAdded a bit of stuff to docs.txt, and removed information that had nothing to do...
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

2 years agoChanged the name of the doxygen output folder from docs to doxyfile
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

2 years agoChanged nullptr to be ~0 instead of 0 for phys_ptr<T> and fixed a missing line in...
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.

2 years agoChanged a return statement so that the count returned by the allocator is always...
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)

2 years agoRemoved indentation of empty line
Amelia Coutard [Thu, 26 May 2022 17:47:22 +0000 (19:47 +0200)]
Removed indentation of empty line

2 years agoRemoved the framebuffer code: I will not be using it until it is reimplemented in...
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

2 years agoAdded a Doxyfile and updated the Makefile accordingly.
Amelia Coutard [Thu, 26 May 2022 02:32:16 +0000 (04:32 +0200)]
Added a Doxyfile and updated the Makefile accordingly.

2 years agoRemoved useless padding: didn't know that structs were padded to their alignment...
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

2 years agoAdded specification of user program memory map
Amelia Coutard [Fri, 13 May 2022 01:35:25 +0000 (03:35 +0200)]
Added specification of user program memory map

2 years agoEnabled basic interrupts and setup LAPIC, (though no IOAPIC yet)
Amelia Coutard [Fri, 13 May 2022 01:23:13 +0000 (03:23 +0200)]
Enabled basic interrupts and setup LAPIC, (though no IOAPIC yet)

2 years agoUsed assert instead of if ! { halt() }, for consistency
Amelia Coutard [Fri, 13 May 2022 01:20:57 +0000 (03:20 +0200)]
Used assert instead of if ! { halt() }, for consistency

2 years agoAdded missing include (to use outb and inb)
Amelia Coutard [Thu, 12 May 2022 15:12:47 +0000 (17:12 +0200)]
Added missing include (to use outb and inb)

2 years agoFixed the IO map "in" the TSS
Amelia Coutard [Thu, 12 May 2022 14:58:53 +0000 (16:58 +0200)]
Fixed the IO map "in" the TSS

2 years agoRestructured code a bit, to move all snippets of asm to utils.{c,h}pp
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

2 years agoAdded missing volatile specifier to inline asm containing cli and hlt.
Amelia Coutard [Thu, 12 May 2022 12:17:50 +0000 (14:17 +0200)]
Added missing volatile specifier to inline asm containing cli and hlt.

2 years agoRemoved a useless include
Amelia Coutard [Thu, 12 May 2022 12:00:36 +0000 (14:00 +0200)]
Removed a useless include

2 years agoRefactored phys_ptr and fixed little errors
Amelia Coutard [Thu, 12 May 2022 11:20:38 +0000 (13:20 +0200)]
Refactored phys_ptr and fixed little errors

2 years agoRemoved constexpr for the *, -> and [] operators, and get_virt_addr, of phys_ptr...
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

2 years agoMoved phys_ptr to a separate file
Amelia Coutard [Thu, 12 May 2022 10:58:44 +0000 (12:58 +0200)]
Moved phys_ptr to a separate file

2 years agoRefactored boot.s a bit
Amelia Coutard [Thu, 12 May 2022 10:33:10 +0000 (12:33 +0200)]
Refactored boot.s a bit

2 years agoAdded operator- to phys_ptr<T>s, which allowed for simplifying a bit of the code
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

2 years agoChanged the rounding of usable RAM addresses and the freeing of the multiboot2 info...
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

2 years agoChanged kernel_phys_start to not include the bootstrap code, so as to recover its...
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

2 years agoMoved the past_the_end page of the page allocator to the c++ code, and made it and...
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

2 years agoRemoved useless concept and replaced its one use with its definition
Amelia Coutard [Sun, 8 May 2022 18:44:09 +0000 (20:44 +0200)]
Removed useless concept and replaced its one use with its definition

2 years agoAdded support for global constructors and destructors
Amelia Coutard [Sun, 8 May 2022 18:41:23 +0000 (20:41 +0200)]
Added support for global constructors and destructors

2 years agoMaybe fixed a bug. Avoided a potential one, anyways
Amelia Coutard [Sun, 8 May 2022 18:38:53 +0000 (20:38 +0200)]
Maybe fixed a bug. Avoided a potential one, anyways

2 years agoAdded actual detection of RAM, to be able to use all of the computer's memory
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

2 years agoAdded a special case for deallocating a 0-sized block, and remove the unimplemented...
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`

2 years agoAdded missing inline specifiers to all function in multiboot2.hpp
Amelia Coutard [Sat, 7 May 2022 14:45:14 +0000 (16:45 +0200)]
Added missing inline specifiers to all function in multiboot2.hpp

2 years agoRemoved the RAM testing: it was useless
Amelia Coutard [Sat, 7 May 2022 14:34:57 +0000 (16:34 +0200)]
Removed the RAM testing: it was useless

2 years agoChanged "multiboot" to "multiboot2" in check for magic number in kernel.cpp
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.

2 years agoMade os::assert print "Error: " before the error message, updated calls accordingly
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

2 years agoChanged the physical page allocator completely, to make the code simpler
Amelia Coutard [Fri, 6 May 2022 22:57:12 +0000 (00:57 +0200)]
Changed the physical page allocator completely, to make the code simpler

2 years agoChanged the code to use the definitions in <cstdint> and <cstddef> instead of the...
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

2 years agoAdded missing operators to phys_ptr.
Amelia Coutard [Fri, 6 May 2022 18:48:46 +0000 (20:48 +0200)]
Added missing operators to phys_ptr.

2 years agoAdded the system includes, to be able to use some of the standard headers (the freest...
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)

2 years agoChanged os::halt to use inline asm instead of an asm routine, and moved the cli instr...
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

2 years agoAdded a basic framebuffer
Amelia Coutard [Thu, 5 May 2022 18:06:46 +0000 (20:06 +0200)]
Added a basic framebuffer

2 years agoAdded serial logging and a simple physical page allocator
Amelia Coutard [Thu, 5 May 2022 17:17:47 +0000 (19:17 +0200)]
Added serial logging and a simple physical page allocator

2 years agoMoved the kernel to 1MiB (to avoid problems with low memory-mapped IO).
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.

2 years agoUpdated Makefile qemu command (added stdio serial)
Amelia Coutard [Thu, 5 May 2022 12:11:05 +0000 (14:11 +0200)]
Updated Makefile qemu command (added stdio serial)

2 years agoAdded a map to 64TiB of physical memory in the first 64TiB (half) of the higher half...
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

2 years agoUpdated Makefile
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.

2 years agoAdded missing #pragma once in multiboot2.hpp
Amelia Coutard [Thu, 28 Apr 2022 13:31:07 +0000 (15:31 +0200)]
Added missing #pragma once in multiboot2.hpp

2 years agoMade a proper GDT.
Amelia Coutard [Wed, 27 Apr 2022 22:30:35 +0000 (00:30 +0200)]
Made a proper GDT.

2 years agoChanged g++ mcmodel to kernel.
Amelia Coutard [Wed, 27 Apr 2022 20:58:16 +0000 (22:58 +0200)]
Changed g++ mcmodel to kernel.

2 years agoPut the kernel in the upper half.
Amelia Coutard [Wed, 27 Apr 2022 20:50:15 +0000 (22:50 +0200)]
Put the kernel in the upper half.

2 years agoInitial Commit
Amelia Coutard [Wed, 27 Apr 2022 20:33:52 +0000 (22:33 +0200)]
Initial Commit