wash
6c5bf2344f
sched: thread: implement cloning of userspace thread contexts
2026-04-01 18:29:54 +01:00
wash
dd34b1d80f
pmap: add pmap_get to retrieve existing page table entries
2026-04-01 18:24:13 +01:00
wash
876f91d8be
sched: thread: add cpu context pointer usable during interrupts and syscalls
2026-04-01 18:22:23 +01:00
wash
7bcd1577be
pmap: fix PFN() not clearing upper PTE control bits
2026-04-01 18:20:50 +01:00
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