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