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
wash
3f992d84fb
kernel: remove everything that is related to device/fs management
...
this is now a microkernel.
2024-09-17 17:47:50 +01:00
wash
9b00f83ff1
build: set default qemu display to SDL
2024-01-07 20:04:55 +00:00
wash
b0c021d4e9
kernel: add kernel.early-console and kernel.console boot args
...
kernel.early-console is used to specify which output device the
kernel boot log should be written to. the first thing the kernel
does on boot after initialising the bootstrap processor is initialise
the early console, making it useful for debugging problems that
occur early in the boot process. this arg accepts a list of hard-coded
values for output devices, such as tty0 for the display or ttyS0
for the serial port. the exact values supported will depend on the
platform.
once all drivers are loaded, the kernel switches to the device specified
by kernel.console for output. unlike kernel.early-console, this arg
specifies the name of a tty device in /dev/tty. this means that, not
only are more devices supported (any device provided by a tty driver),
but the kernel can also get input from the user using this console too
(not used by the kernel itself, but will be used by the user to interact
with userspace programs, like the shell).
2023-12-30 09:09:18 +00:00
wash
8af6670b0d
x86_64: move serial port code to serialcon kext
2023-12-29 20:35:26 +00:00
wash
53e756eca0
kernel: add boot argument parsing
2023-12-27 17:34:59 +00:00
wash
9a2ac25343
x86_64: don't call early_vgacon_init() if fbcon kext is not compiled in
2023-07-19 19:02:00 +01:00
wash
8463423c10
kernel: add endian conversion functions
2023-07-08 22:14:31 +01:00
wash
2ea509c4dc
build: add test AHCI drives to VM
2023-07-08 15:56:20 +01:00
wash
d96c549f17
vm: allow pages to be mapped as no-cache
2023-07-08 15:53:06 +01:00
wash
abe4af093e
tty: implement read/write support
2023-06-11 09:23:57 +01:00
wash
4cd9ebcb4f
kexts: add generic vga/fb tty driver
2023-06-10 21:41:46 +01:00
wash
27387aa080
x86_64: move ACPI driver to kext
2023-06-09 19:31:30 +01:00
wash
f83ecca490
dev: boot framebuffer support
2023-06-08 20:46:43 +01:00
wash
b7b0691b8f
dev: implement driver objects to organise and identify devices
2023-06-02 19:35:07 +01:00
wash
b3957b311a
x86_64: remove printk call from isr/irq handlers
2023-05-10 20:22:51 +01:00
wash
add48f8a83
x86_64: acpi: create acpi bus device
2023-05-08 18:19:12 +01:00
wash
2638b8c27a
x86_64: initialise device subsystem during boot
2023-05-08 18:18:59 +01:00
wash
482e65d13d
x86_64: irq: add array of asm irq entry points
2023-05-08 08:08:33 +01:00
wash
55c8918d28
x86_64: serial: enable interrupts and announce incoming data
2023-05-07 21:44:03 +01:00