bjorn3
9e37ccaae8
Fix enable_and_halt on arm64
...
I accidentally used nop instead of wfi
2025-09-13 19:07:01 +02:00
bjorn3
83b4538d7c
Merge two asm blocks
...
There is no guarantee they will be atomic otherwise
2025-09-13 18:55:16 +02:00
bjorn3
61db2b2ad5
Use core::hint::spin_loop() where possible
2025-09-13 18:55:16 +02:00
bjorn3
711ea9a4ed
Move system76_ec::init() into serial::init()
2025-09-13 18:55:16 +02:00
bjorn3
5a6117b5ae
Replace the log crate with a custom logging system
...
This avoids the need to explicitly set a logger early during boot, which
reduces the amount of moving parts that could go wrong slightly. And it
cuts the kernel image size by 13kb.
2025-09-13 18:55:16 +02:00
Jeremy Soller
8a2aa411e2
Explicitly scope all locks, fixing multi_core hangs. Allow contexts on any CPU
2025-09-13 10:10:07 -06:00
bjorn3
da6f7adb42
Use HashMap rather than BTreeMap for scheme handles
...
According to the comments this previously wasn't done due to hashbrown
not having a const constructor. While it is true that HashMap::new() is
not const, HashMap::with_hasher() is const. HashMap::new() becoming
const is likely blocked on const traits.
This shrinks the kernel image by about 35kb.
2025-09-13 12:00:37 +02:00
bjorn3
9aef07372e
Make insert_global panic on errors
...
All callers unwrap the result anyway
2025-09-12 19:56:14 +02:00
bjorn3
6ae6f571c7
Use cfg!() rather than #[cfg] for configuring lpss_debug
2025-09-12 19:36:17 +02:00
bjorn3
92e5397efa
Introduce SerialKind::NotPresent
2025-09-12 19:36:17 +02:00
bjorn3
2394db2dc5
Move most of the arch debug::Writer impls into a common location
2025-09-12 19:36:17 +02:00
bjorn3
fbbe24c82b
Use writeln!() rather than print!() + concat!() in println!()
...
This fixes using format arg captures
2025-09-12 19:36:17 +02:00
bjorn3
b3522b19e6
Replace a writeln!() with println!()
2025-09-12 19:36:16 +02:00
bjorn3
a782c1f9e1
Fix warning about unused function
2025-09-12 19:03:39 +02:00
bjorn3
8aa08e1e3d
Unconditionally enable serial_debug on arm64 and riscv64
2025-09-12 18:59:48 +02:00
bjorn3
520453f779
Move x86 serial port assignment to the init function
2025-09-12 18:46:11 +02:00
bjorn3
31cbb3b361
Remove duplicate serial port initialization on x86
2025-09-12 18:41:42 +02:00
bjorn3
7a4dd1a1a9
Use SerialKind on x86
2025-09-12 18:40:21 +02:00
bjorn3
f0eea47896
Fix compilation with lpss_debug feature enabled
2025-09-12 18:33:16 +02:00
bjorn3
eb06f5676f
Unify SerialKind between arm64 and riscv64
2025-09-12 18:19:15 +02:00
bjorn3
6ca9a9a806
Move uart_pl011.rs to src/devices
2025-09-12 18:02:30 +02:00
bjorn3
f9a4178898
Always enable graphical_debug
...
We already gracefully handle a missing framebuffer.
2025-09-11 21:41:30 +02:00
bjorn3
9a2203076a
Merge aarch64 and x86/x86_64 debugger implementations
...
And make the debugger partially work on riscv64.
2025-09-11 20:02:56 +02:00
bjorn3
e131bf219d
Merge x86 and x86_64 debugger implementations
2025-09-11 20:02:56 +02:00
bjorn3
d1668e232a
Begin deduplicating debugger code between architectures
2025-09-11 20:02:56 +02:00
bjorn3
40605e643e
Move stac/clac for SMAP in debugger to just around the stack read loop
...
This fixes a crash when returning from the debugger on x86_64.
2025-09-11 20:02:56 +02:00
bjorn3
26dd87b1ff
Fix debugger feature on arm64
...
And fix unsafe_op_in_unsafe_fn warnings
2025-09-11 20:02:56 +02:00
bjorn3
38188b0640
Expand a macro invocation
2025-09-10 18:45:13 +02:00
bjorn3
786c9eabcb
Share print! and println! between architectures
2025-09-10 18:40:30 +02:00
bjorn3
1268472103
Move arch::x86_64::cpuid into arch::x86_shared::cpuid
2025-09-10 18:35:36 +02:00
bjorn3
ad6c6c5e41
Share external interrupt handlers between x86 and x86_64
2025-09-10 18:31:28 +02:00
bjorn3
5e6d681fcb
Share exception interrupt handlers between x86 and x86_64
2025-09-10 18:25:22 +02:00
bjorn3
d6c5d0d268
Move semicolons
2025-09-10 18:25:09 +02:00
bjorn3
35a0f2d440
Remove usage of array_chunks
...
It has been removed in newer rustc versions
2025-09-10 18:00:02 +02:00
bjorn3
a3700fa446
Remove the unsafe block from the inner function in interrupt!()
2025-09-10 18:00:02 +02:00
Elle Rhumsaa
cec902e6be
main: refactor unsafe block for C offsets
...
Uses the `&raw const` syntax to convert the pointer location of static
offsets from C.
2025-09-10 14:55:36 +00:00
bjorn3
fe1c2f460e
Fix a bunch of errors and warnings after moving to the 2024 edition
2025-09-10 16:44:36 +02:00
bjorn3
cea93f7647
cargo fix --edition & rustfmt
...
Or to be precise:
RUST_TARGET_PATH=$(pwd)/targets cargo fix --edition \
--target targets/x86_64-unknown-kernel.json \
--target targets/i686-unknown-kernel.json \
--target targets/aarch64-unknown-kernel.json \
--target targets/riscv64-unknown-kernel.json \
-Zbuild-std=core,alloc --allow-dirty --bin kernel
cargo fmt
2025-09-10 16:44:36 +02:00
bjorn3
ff48830c0b
Update rmm submodule
2025-09-10 16:44:33 +02:00
4lDO2
dd366f01c4
Make ForceKilled meaningful, += Dead && SIGKILL.
2025-09-10 13:22:29 +02:00
Paul Sajna
172a0ffd02
remove dtb unwraps
2025-09-07 22:53:39 -07:00
Jeremy Soller
53c3342e9f
snps,dw-apb-uart is usually 32-bit mmio
2025-09-07 20:41:28 -06:00
Jeremy Soller
f1492729d2
riscv64: support snps,dw-apb-uart serial
2025-09-07 20:36:05 -06:00
bjorn3
5658fc258b
Disable debugger feature by default
...
It currently doesn't compile on aarch64
2025-09-07 13:35:22 +02:00
bjorn3
c404598296
Use cfg!() rather than #[cfg] for the cfg in map_memory
2025-09-07 13:26:04 +02:00
bjorn3
e42fc3811f
Fix compiling with profiling feature enabled
2025-09-07 13:20:19 +02:00
bjorn3
b7566e66bd
Fix 32bit x86
2025-09-07 13:00:40 +02:00
bjorn3
48f3592bf3
Mostly use cfg!() rather than #[cfg] for controlling syscall_debug
...
This only adds 40 bytes overhead per cpu core in the PerCpuBlock struct.
2025-09-07 12:38:57 +02:00
bjorn3
fefede0d67
Use cfg!() rather than #[cfg] for controlling self_modifying
2025-09-07 12:30:33 +02:00
bjorn3
b5822ac118
Mostly use cfg!() rather than #[cfg] for controlling sys_stat
...
This only adds 48 bytes overhead per cpu core in the PerCpuBlock struct.
Also fixes compilation with sys_stat enabled on x86_64.
2025-09-07 12:27:04 +02:00