Commit Graph

61 Commits

Author SHA1 Message Date
Berkus Decker 2b6f1bedf4 [temp] allow dead_code while this code is experimental and unused 2021-07-11 21:21:48 +03:00
Berkus Decker c1e0a8f3dd [sq] make error enum public 2021-07-11 21:21:48 +03:00
Berkus Decker b787a2224d [sq] fix iterator checks 2021-07-11 21:21:48 +03:00
Berkus Decker bf291b917f Switch to usize for alignment checks 2021-07-11 21:21:48 +03:00
Berkus Decker cc163e6d61 [sq] add missing documentation 2021-07-11 21:21:48 +03:00
Berkus Decker e33f99786b [sq] use static_assertions 2021-07-11 21:21:48 +03:00
Berkus Decker 81974b40c7 [wip] reshuffle stuff around - to be finalized 2021-07-11 21:20:10 +03:00
Berkus Decker 6c77d0930c [sq] add missing Clone derives 2021-07-11 20:54:36 +03:00
Berkus Decker 15323fe7f3 Make features printing compile 2021-07-11 20:54:36 +03:00
Berkus Decker 55e1761492 [wip] directory levels traversal 2021-07-11 20:54:36 +03:00
Berkus Decker 3c6fcfcf10 [wip] memory map initialization 2021-07-11 20:54:36 +03:00
Berkus Decker 07d7f9cd9e Update todos 2021-07-11 20:54:36 +03:00
Berkus Decker 083711b61e [wip] Improve virt_page impl and add tests 2021-07-11 20:54:36 +03:00
Berkus Decker f26fa39265 [fixme] move those out 2021-07-11 20:54:36 +03:00
Berkus Decker d278383184 Move PageSize to a mod and implement it for phys frames and virt pages 2021-07-11 20:54:36 +03:00
Berkus Decker 1eed756d04 sq we use snafu already 2021-07-11 20:54:36 +03:00
Berkus Decker 633dbd191f Implement comparison for invalid virt address error
Similar to PhysAddrNotValid.
2021-07-11 20:54:36 +03:00
Berkus Decker e215f9d62c [wip] add to-kernel-space/from-kernel-space address conversion 2021-07-11 20:54:36 +03:00
Berkus Decker de91603059 [wip] necessary modifications 2021-07-11 20:54:36 +03:00
Berkus Decker 825806fdd7 Start moving code to a new mmu2 module 2021-07-11 20:54:36 +03:00
Berkus Decker 9b5d7b14d3 Document TODO steps 2021-07-11 20:52:12 +03:00
Berkus Decker bd4015679c drop obsolete stuff 2021-07-11 20:52:12 +03:00
Berkus Decker da52104b53 sq extract features 2021-07-11 20:52:12 +03:00
Berkus Decker 851e691534 [wip] extract virt_page code 2021-07-11 20:52:12 +03:00
Berkus Decker 35097458b2 [wip] extract phys_frame code 2021-07-11 20:52:12 +03:00
Berkus Decker fa10d649e4 [wip] extract mmu features printer 2021-07-11 20:52:12 +03:00
Berkus Decker 3c3ce334ca [wip] mmu experiments 2021-07-11 20:52:12 +03:00
Berkus Decker e4b12e2c45 Update to latest versions of dependencies 2021-07-10 03:27:47 +03:00
Berkus Decker 82d44a9c62 Add ASID type 2021-01-27 20:10:32 +02:00
Berkus Decker 856c4a9e68 Fix PhysAddr test 2021-01-27 19:55:52 +02:00
Berkus Decker 6281204062 Split addr module 2021-01-27 19:55:52 +02:00
Berkus Decker d3f561d214 Implement shifts for PhysAddr 2021-01-27 19:55:52 +02:00
Berkus Decker 601cf7a784 Add documentation target
Type `just doc` to see documentation in browser.

Improve doc comments in code to support
rustdoc links format.
2021-01-27 19:22:48 +02:00
Berkus Decker b4205f5ce6 Revert “Adjust for nightly rustfmt bug”
367ad5bbb2

https://github.com/rust-lang/rustfmt/issues/4528
is now fixed.
2020-11-20 03:09:43 +02:00
Berkus Decker d85d824bfd Switch on MMU immediately to avoid unaligned access
Since enabling armv6 unaligned access bit U in CP15 C1
requires AArch32 assembly and I don't want to introduce
yet another boot stub, I'll just initialize MMU right away
- this causes CPU to treat SCTLR_EL1.A differently and not
cause any alignment faults.

In the future, a small AArch32 boot stub that uses
now commented out fn enable_armv6_unaligned_access()
should be used to set U=1 and A=0 for full unaligned
access even when MMU is off. See ARM documentation
linked from that fn.
2020-11-20 03:09:43 +02:00
Berkus Decker 1de52fa109 Disable stack align checks
As with data align checks lets not fault on this yet.
2020-11-20 03:09:00 +02:00
Berkus Decker 696307f30c Improve traps printing 2020-11-20 03:08:40 +02:00
Berkus Decker 4cb6f29e0d Clean up boot-order
Extract shared code, fix comments.
2020-11-20 03:08:40 +02:00
Berkus Decker 367ad5bbb2 Adjust for nightly rustfmt bug
See https://github.com/rust-lang/rustfmt/issues/4528
for the bug description, namely rustfmt removes
this comment completely if it's left in the
extern block.
2020-11-17 22:56:56 +02:00
Berkus Decker 09003a7da2 Traps: print more detailed exception report 2020-11-14 17:33:43 +02:00
Berkus Decker 373f4753dc Disable alignment checks right on boot
Specifically, before we print any numbers - rust
core fmt_u64 uses a little optimisation that
ldrh/strh to unaligned addresses.
2020-11-14 17:33:43 +02:00
Berkus Decker 482c62d341 Change mmu detail printer formatting
Print mmu features before and after init.
2020-11-14 17:33:43 +02:00
Berkus Decker df0510266e Fix formatting 2020-11-14 17:33:43 +02:00
Berkus Decker 50d9caa5f6 Set stack pointer immediately upon boot 2020-11-14 17:33:43 +02:00
Berkus Decker 20c7c8bd7e Refactor non-DRY boot code 2020-11-14 17:33:43 +02:00
Berkus Decker 3415ccd68c Add JTAG helpers 2020-11-03 14:03:22 +02:00
Berkus Decker ab696eca8e Implement Error type for traps module
Recommended by the clippy lint
https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err

Using snafu because it already has a no_std feature
unlike thiserror.
2020-10-28 21:38:53 +02:00
Berkus Decker ea75413df0 Add looping/delay helpers 2020-10-27 11:34:36 +02:00
Berkus Decker 6c5d7a13fc Add more information to READMEs
https://scarfolk.blogspot.com/
2020-10-21 05:52:08 +03:00
Berkus Decker 4672ddace6 Add mm module and move memory alignment functions there 2020-10-20 05:40:26 +03:00