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
b6f8c1ccaa
kernel: don't use typedef for enums or non-opaque structs
2023-04-13 11:40:52 +01:00