Commit Graph

432 Commits

Author SHA1 Message Date
bjorn3 ecbc2b7e8d Directly read the bootstrap entry point from the initfs header 2024-03-11 14:26:08 +01:00
4lDO2 ec58d6c541 Compile on aarch64 as well. 2024-03-05 10:40:54 +01:00
4lDO2 d38d8b66bd Fix i686 compilation. 2024-03-05 10:26:57 +01:00
4lDO2 716f147cd4 Fix synchronization so acid tlb succeeds! 2024-03-04 19:03:01 +01:00
4lDO2 1f8d7bc67c Always check shootdown reqs when locking addrsp. 2024-03-04 19:03:01 +01:00
4lDO2 3a592b9079 Use regular non-NMI IPIs for TLB shootdown. 2024-03-04 19:03:00 +01:00
4lDO2 b5efaceb51 Fix more synchronization. 2024-03-04 19:03:00 +01:00
4lDO2 098cdd6067 Fix flusher, currently only with -smp 1 2024-03-04 19:03:00 +01:00
4lDO2 79381249a2 Implement a TLB shootdown draft. 2024-03-04 19:03:00 +01:00
4lDO2 6bf90f9eee Build the foundation for TLB shootdown. 2024-03-04 19:03:00 +01:00
4lDO2 0c6c857012 Improve LogicalCpu{Id,Set}, make set atomic.
Technically there should be an atomic and nonatomic set type, but perf
should be the same, as the nonatomic one would only be used when setting
the sched_affinity.
2024-03-04 19:02:56 +01:00
bjorn3 449abb8925 Share bootstrap_mem between all archs 2024-02-25 15:53:04 +01:00
bjorn3 e23f0ed66b Share idt.rs between x86 and x86_64 2024-02-25 15:49:29 +01:00
bjorn3 f92b4c9608 Unify cpuid between x86 and x86_64 and don't return an Option
Systems without cpuid support aren't supported anyway.
2024-02-25 15:07:31 +01:00
bjorn3 eecfbb19d2 Share the functions in interrupt/mod.rs between x86 and x86_64 2024-02-25 14:48:28 +01:00
bjorn3 fbe2980b3d Share interrupt/ipi.rs between x86 and x86_64 2024-02-25 14:48:15 +01:00
bjorn3 62614db9ac Share interrupt/trace.rs between x86 and x86_64 2024-02-25 14:48:12 +01:00
bjorn3 c1d0c11a1b Fix typo in irq.rs 2024-02-25 14:31:52 +01:00
bjorn3 3610dd7e03 Remove unused interrupt handler 2024-02-25 14:31:28 +01:00
bjorn3 e9e3b4487d Reduce the difference of idt.rs between x86 and x86_64 2024-02-25 14:31:28 +01:00
Jeremy Soller 39c20720ee Fix compilation on x86_64 2024-02-16 22:05:57 -07:00
Jeremy Soller e4eb4031bd Fix APIC offsets for x86 32-bit 2024-02-16 22:02:47 -07:00
Jeremy Soller 6c6fc18f8e Format 2024-02-16 21:40:42 -07:00
bjorn3 58314e6a47 Share a whole lot more code between x86 and x86_64 2024-01-25 13:34:04 +00:00
bjorn3 785975089b Dedup the last remaining piece of code in the driver module between x86 and x86_64 2024-01-25 13:34:04 +00:00
bjorn3 0d86348e41 Dedup the apic code between x86 and x86_64 2024-01-25 13:34:04 +00:00
bjorn3 86fb4208f2 Dedup some more code between x86 and x86_64 2024-01-25 13:34:04 +00:00
bjorn3 0d092d7921 Dedup code for most x86 and x86_64 device drivers 2024-01-25 13:34:04 +00:00
bjorn3 9404e9f892 Mark the sections used by alternative!() as allocated
This prevents the linker from discarding any function which uses the
alternative!() macro which would result in runtime relocation crashing.
2024-01-25 11:51:34 +01:00
bjorn3 5e71f6f9df Correctly mark unaligned write as such to avoid UB 2024-01-24 19:43:34 +01:00
Jeremy Soller 45f1c4e29e Add rustfmt from relibc and apply it with cargo fmt 2024-01-17 13:52:01 -07:00
4lDO2 529c491fa0 Allow disabling profiling at compile time. 2023-12-17 00:49:28 +01:00
4lDO2 fac0e783ef Refactor profiling code. 2023-12-17 00:49:28 +01:00
4lDO2 99ad6a0a2c Support toggling profiling. 2023-12-17 00:49:28 +01:00
4lDO2 14abf0cbc6 Exclude kmain from profile. 2023-12-17 00:49:27 +01:00
4lDO2 f973bc4128 Profiling 2023-12-17 00:49:24 +01:00
bjorn3 2d065083df Use HashMap instead of BTreeMap where possible
This shrinks the kernel from 905840 bytes to 862408 bytes.
2023-12-13 19:55:20 +01:00
bjorn3 a7165f822f Switch from the memoffset crate to the offset_of feature
The memoffset crate requires const_refs_to_cell to work in const
contexts. This feature has some known issues around it's semantics. The
offset_of feature however is currently on track for stabilization.
2023-12-12 20:21:31 +00:00
bjorn3 6b1c154847 Use kernel_executable_offsets on AArch64 and x86 2023-12-12 15:01:29 +00:00
bjorn3 017702d3d2 Remove a lot of dead code 2023-12-12 15:01:29 +00:00
Jeremy Soller 4e3103a48a x86: fix enter/exit gs and usercopy asm 2023-12-11 15:25:54 -07:00
Ivan Tan 1f1a57e1f7 support userspace program ioremapping device memory 2023-12-11 16:07:53 +00:00
Ivan Tan 9b6197d686 aarch64: code clean up 2023-12-11 16:07:53 +00:00
Ivan Tan a8329956ca support raspi3b+ serial && uart interrupt 2023-12-11 16:07:53 +00:00
Ivan Tan 44b14f994a fix qemu-arm64 run error 2023-12-11 16:07:53 +00:00
Ivan Tan 1c1c541f0e bringup raspi3b+, add device memory, disable uart init 2023-12-11 16:07:53 +00:00
Ivan Tan bfbf435546 draft: aarch64: add irq_bcm2835. Need refactoring 2023-12-11 16:07:53 +00:00
Ivan Tan 9a5b9798ca remove qemu-aarch64-virt hard code 2023-12-11 16:07:53 +00:00
Ivan Tan ed68c98b42 aarch64: add irq-bcm2836 for raspi3b+ && refactor irq module 2023-12-11 16:07:53 +00:00
Ivan Tan b65a7e9103 move gic into irqchip module 2023-12-11 16:07:53 +00:00