Commit Graph

137 Commits

Author SHA1 Message Date
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
9f7b7bdd2d kernel: refactor syscall dispatch system 2026-02-08 16:17:11 +00:00
1c74291b99 kernel: add a temporary syscall dispatch system 2026-02-08 13:12:24 +00:00
343689764f x86_64: irq: route user-mode page faults to pmap_handle_fault 2026-02-08 13:05:29 +00:00
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
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
9e223ca5d0 x86_64: implement syscall instruction init and dispatch 2026-02-08 12:47:28 +00:00
49a75a1bbe pmap: change pmap_add* virtual pointer parameter to virt_addr_t 2026-02-08 12:08:26 +00:00
720ed75770 x86_64: add invalid pmap pointer constant 2026-02-08 11:59:18 +00:00
880930e917 x86_64: implement functions to jump to userspace 2026-02-08 11:58:27 +00:00
da611ab070 x86_64: find, record, and reserve the memory location of the bsp 2026-02-08 11:52:33 +00:00
00ea2b1b3b x86_64: adjust formatting 2026-02-08 11:36:16 +00:00
4051265876 x86_64: implement TSS initialisation and user/kernel stack pointer switching 2026-02-08 11:34:49 +00:00
564d4f9ba0 x86_64: rename struct cpu_context; move to machine/cpu.h 2026-02-08 11:32:09 +00:00
c04b33647c x86_64: add kernel and user virtual memory boundary definitions 2026-02-08 11:27:37 +00:00
af0d97d6f5 misc: changes from a long time ago 2026-02-03 21:28:15 +00:00
c7d4463f7e x86_64: remove redundant header files 2025-05-20 23:14:42 +01:00
675a6de47e build: add build script to configure kernel and tools build systems 2025-05-19 22:01:12 +01:00
62ec4c93ab meta: rename 2024-11-02 11:31:51 +00:00
065fdeec65 build: convert build system to CMake 2024-11-02 11:21:22 +00:00
d29b955ee8 x86_64: re-enable legacy PIC and PIT initialisation 2024-09-17 17:48:26 +01:00
3f992d84fb kernel: remove everything that is related to device/fs management
this is now a microkernel.
2024-09-17 17:47:50 +01:00
9b00f83ff1 build: set default qemu display to SDL 2024-01-07 20:04:55 +00:00
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
8af6670b0d x86_64: move serial port code to serialcon kext 2023-12-29 20:35:26 +00:00
53e756eca0 kernel: add boot argument parsing 2023-12-27 17:34:59 +00:00
9a2ac25343 x86_64: don't call early_vgacon_init() if fbcon kext is not compiled in 2023-07-19 19:02:00 +01:00
8463423c10 kernel: add endian conversion functions 2023-07-08 22:14:31 +01:00
2ea509c4dc build: add test AHCI drives to VM 2023-07-08 15:56:20 +01:00
d96c549f17 vm: allow pages to be mapped as no-cache 2023-07-08 15:53:06 +01:00
abe4af093e tty: implement read/write support 2023-06-11 09:23:57 +01:00
4cd9ebcb4f kexts: add generic vga/fb tty driver 2023-06-10 21:41:46 +01:00
27387aa080 x86_64: move ACPI driver to kext 2023-06-09 19:31:30 +01:00
f83ecca490 dev: boot framebuffer support 2023-06-08 20:46:43 +01:00
b7b0691b8f dev: implement driver objects to organise and identify devices 2023-06-02 19:35:07 +01:00
b3957b311a x86_64: remove printk call from isr/irq handlers 2023-05-10 20:22:51 +01:00
add48f8a83 x86_64: acpi: create acpi bus device 2023-05-08 18:19:12 +01:00
2638b8c27a x86_64: initialise device subsystem during boot 2023-05-08 18:18:59 +01:00
482e65d13d x86_64: irq: add array of asm irq entry points 2023-05-08 08:08:33 +01:00
55c8918d28 x86_64: serial: enable interrupts and announce incoming data 2023-05-07 21:44:03 +01:00
ab4eeb8e16 x86_64: expand IDT to 256 entries 2023-05-07 21:43:04 +01:00
3435c2bffe x86_64: acpi: add dest CPU parameter to io_apic::map_irq() 2023-05-07 21:42:22 +01:00
aaad77aea5 x86_64: zero-init BSP and AP CPU cpu_data before use 2023-05-07 21:40:30 +01:00
9f3c080e41 vm: minimum and maximum zone IDs are now defined in arch/../vm.h 2023-05-07 21:39:31 +01:00
ad2ce0b2ab build: add rule to run kernel under Bochs 2023-05-07 21:36:53 +01:00
96e695704a x86_64: allow serial port baud rate to be configured 2023-05-07 12:22:47 +01:00
d8de0ddfe4 build: add rules to build and run iso images 2023-05-06 22:20:28 +01:00
6239b09e8e x86_64: panic on general protection fault 2023-05-06 22:19:55 +01:00
6cf8f4234a x86_64: print stack trace during panic 2023-05-06 22:18:40 +01:00
a9e95db39b x86_64: write printk messages to COM1 serial port 2023-05-06 21:33:36 +01:00