Commit Graph

118 Commits

Author SHA1 Message Date
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
76919abb10 x86_64: smp: initialise APs in parallel
bring_all_ap_online() now initialises all APs in parallel, and waits
for them all to come online (i.e. reach the end of ap_trampoline_exit,
making them ready to start scheduling threads) before returning.
2023-05-05 15:25:55 +01:00
2ca1bd0b06 x86_64: acpi: only mask pit irq line during bsp init 2023-05-05 15:20:20 +01:00
3f91c96050 x86_64: smp: flag cpu as online during bootstrap 2023-05-04 21:41:39 +01:00
5611fce641 x86_64: smp: query CPU ID using CPUID during bootstrap 2023-05-04 21:04:17 +01:00
cd257e41cf x86_64: smp: reset __this_ap_ok to 0 before starting AP 2023-05-03 20:20:22 +01:00
4bcd00fc3c x86_64: smp: set AP idle thread ID to CPU ID 2023-05-03 20:19:56 +01:00
d0371d9204 x86_64: create idle thread and initialise runqueue during AP bootstrap 2023-05-03 19:27:39 +01:00
ad58693dfb x86_64: panic: fix printk formatting specifiers for cpu registers 2023-05-03 19:26:19 +01:00
a52571eb19 kernel: add panic() function that accepts a cpu_context 2023-05-03 19:26:09 +01:00
390fe86657 x86_64: enable NX protection during AP bootstrap 2023-05-03 19:20:07 +01:00
4677c881e1 x86_64: acpi: bring up other APs in long mode 2023-05-01 18:13:44 +01:00
654e54653c x86_64: pmap: implement pmap_add() 2023-05-01 18:12:07 +01:00
8a0291c9b3 sched: add timer tasks and schedule_timeout() 2023-04-30 21:09:36 +01:00
085c3d2a89 sched: add kernel-mode context switching 2023-04-30 14:27:57 +01:00
2cb2d9100a x86_64: define struct offsets for access from assembly 2023-04-30 14:26:37 +01:00
f349e4963c x86_64: charge clock cycles to threads when handling IRQs
Clock cycles that are used to handle the IRQ itself are *not*
charged to the thread.
2023-04-28 21:06:59 +01:00
72d8facd47 kernel: add standard clock system 2023-04-28 20:51:51 +01:00
995e364b21 x86_64: acpi: fix bad local APIC register offset 2023-04-28 20:49:46 +01:00
e7fe5a8f8e kernel: add function to query CPU clock cycle count 2023-04-22 21:07:34 +01:00