Commit Graph

167 Commits

Author SHA1 Message Date
wash 512356ac2d sched: enforce ref-counting on current task/thread pointers 2026-04-01 18:17:05 +01:00
wash 15c2207ab9 x86_64: pmap: enable kernel-mode write-protection 2026-04-01 18:06:50 +01:00
wash 8b41f5e681 kernel: remove unused functionality 2026-03-29 14:54:07 +01:00
wash 7d25f1c31a x86_64: suppress serial port input logging 2026-03-29 11:32:03 +01:00
wash d6c84565af x86_64: cmake: ensure the kernel is built as a static binary 2026-03-21 10:26:12 +00:00
wash 24f9ef85bf sched: implement user-configurable fs and gs segment base addresses 2026-03-18 21:07:05 +00:00
wash c0e212ac98 x86_64: panic: fix incorrect kernel stack traversal 2026-03-18 20:54:49 +00:00
wash 42a293e753 x86_64: pmap: implement pmap_destroy() 2026-03-18 20:53:24 +00:00
wash 399742cabf x86_64: pmap: implement pmap_remove 2026-03-15 14:38:32 +00:00
wash cef4af53c9 x86_64: add pre-processor token to control hardware rng 2026-03-15 14:38:11 +00:00
wash 0af35c70ef vm: implement demand-paging via userspace services with vm-controller 2026-03-14 22:39:14 +00:00
wash a50826eb15 x86_64: implement stack traces for user-mode stacks 2026-03-14 22:28:24 +00:00
wash 115a2e7415 x86_64: enable interrupts during pmap_handle_fault
interrupts will need to be enable to allow for requesting missing pages from userspace
services.
2026-03-14 22:23:43 +00:00
wash 72145257de x86_64: generate a seed for the RNG with RDRAND when available 2026-03-14 22:18:47 +00:00
wash c628390f4a vm: replace vm-region with address-space
address-space is a non-recursive data structure, which contains a flat list of vm_areas representing
mapped vm-objects.

userspace programs can no longer create sub-address-spaces. instead, they can reserve portions of
the address space, and use that reserved space to create mappings.
2026-03-13 19:44:50 +00:00
wash 7d4cede788 misc: adjust formatting 2026-03-12 20:34:31 +00:00
wash 3f21e888d6 sched: split sched.h into separate header files 2026-03-12 20:30:36 +00:00
wash dbe117135b x86_64: implement proper user/kernel %gs base switching
the %gs base address is now always set to the current cpu block while
in kernel-mode, and is switched back to the userspace %gs base
when returning to user-mode.
2026-02-23 18:26:21 +00:00
wash 273557fa9f x86_64: lock task address space while performing a demand page-map 2026-02-23 18:25:49 +00:00
wash fe107fbad3 kernel: locks: add spin lock/unlock function that don't change interrupt state 2026-02-23 18:24:49 +00:00
wash 6c2ca888ee x86_64: remove kernel image post-build ELF32 patch
this patch must now be done by the wider OS build system, to avoid
interference with any bootloaders that don't support this kind of
patching (e.g GRUB i386-pc)
2026-02-21 23:18:22 +00:00
wash 9b2c2f6b29 x86_64: start the kernel bootstrap heap above 16MiB
this will keep the memory area below 16MiB free for DMA memory allocations.
2026-02-21 11:24:36 +00:00
wash 85006411bd kernel: add header files 2026-02-19 19:13:44 +00:00
wash 291a5f677e sched: implement passing arguments to user-mode threads 2026-02-19 19:05:53 +00:00
wash b188573eea x86_64: pmap: change pmap_remove* pointer args to virt_addr_t 2026-02-19 19:02:28 +00:00
wash c69aed254f x86_64: enable interrupts during syscall execution 2026-02-19 19:00:04 +00:00
wash 44c2904c11 x86_64: re-arrange user and kernel GDT entries for compatibility with syscall instruction 2026-02-19 18:59:37 +00:00
wash f89e3cb12c kernel: adjust formatting 2026-02-19 18:57:53 +00:00
wash 6019c9307d kernel: separate headers into kernel and user headers
all kernel headers have been moved from include/mango to include/kernel
and include definitions that are only relevant to kernel-space.

any definitions that are relevant to both kernel- and user-space
(i.e. type definitions, syscall IDs) have been moved to
include/mango within libmango.
2026-02-19 18:54:48 +00:00
wash 9f7b7bdd2d kernel: refactor syscall dispatch system 2026-02-08 16:17:11 +00:00
wash 1c74291b99 kernel: add a temporary syscall dispatch system 2026-02-08 13:12:24 +00:00
wash 343689764f x86_64: irq: route user-mode page faults to pmap_handle_fault 2026-02-08 13:05:29 +00:00
wash 5f2ad06fb0 x86_64: all intermediate page table entries now have PTE_USR set
this allows user-accessible page mappings to be created. for kernel memory
mappings, PTE_USR will only be cleared on the lowest-level table entry.
2026-02-08 13:03:41 +00:00
wash 67b3be9732 x86_64: add pmap_handle_fault to route user-mode page faults to vm-region to resolve 2026-02-08 13:03:28 +00:00
wash 9e223ca5d0 x86_64: implement syscall instruction init and dispatch 2026-02-08 12:47:28 +00:00
wash 0490541dc9 kernel: adjust formatting 2026-02-08 12:32:48 +00:00
wash 49a75a1bbe pmap: change pmap_add* virtual pointer parameter to virt_addr_t 2026-02-08 12:08:26 +00:00
wash 720ed75770 x86_64: add invalid pmap pointer constant 2026-02-08 11:59:18 +00:00
wash 880930e917 x86_64: implement functions to jump to userspace 2026-02-08 11:58:27 +00:00
wash da611ab070 x86_64: find, record, and reserve the memory location of the bsp 2026-02-08 11:52:33 +00:00
wash 00ea2b1b3b x86_64: adjust formatting 2026-02-08 11:36:16 +00:00
wash 4051265876 x86_64: implement TSS initialisation and user/kernel stack pointer switching 2026-02-08 11:34:49 +00:00
wash 564d4f9ba0 x86_64: rename struct cpu_context; move to machine/cpu.h 2026-02-08 11:32:09 +00:00
wash c04b33647c x86_64: add kernel and user virtual memory boundary definitions 2026-02-08 11:27:37 +00:00
wash af0d97d6f5 misc: changes from a long time ago 2026-02-03 21:28:15 +00:00
wash c7d4463f7e x86_64: remove redundant header files 2025-05-20 23:14:42 +01:00
wash 675a6de47e build: add build script to configure kernel and tools build systems 2025-05-19 22:01:12 +01:00
wash 62ec4c93ab meta: rename 2024-11-02 11:31:51 +00:00
wash 065fdeec65 build: convert build system to CMake 2024-11-02 11:21:22 +00:00
wash d29b955ee8 x86_64: re-enable legacy PIC and PIT initialisation 2024-09-17 17:48:26 +01:00