9 Commits (b22b0b179217007b02a437f305c20443e1643f18)

Author SHA1 Message Date
Andre Richter b22b0b1792
Be more consistent in boot.rs GPR choices 2 years ago
Andre Richter f6190f85b7
ASM: Remove use of .equ
The LLVM assembler apparently causes the .equ directive to create symbols
instead of just a local and temporary variable.

Work around this by using const operands with global_asm!.
2 years ago
Andre Richter d901ae6cfe
Update copyright 2 years ago
Andre Richter 7d02537515
Bump toolchain 2 years ago
Andre Richter 8c2cec00be
Assembly: Use local label syntax for named labels
This prevents that they show up in the symbol table.
3 years ago
Andre Richter 7f666000ce
Init DRAM in assembly instead of Rust
See https://github.com/rust-embedded/cortex-m-rt/issues/300
3 years ago
Andre Richter b4ed84dd77
Replace ldr pseudo-instruction with adrp/add 3 years ago
Andre Richter 2432c0d283
Revert to assembly boot code
It is too risky to rely on the compiler to not insert any operations using the
stack.

Having a stack-setting call in Rust using the cortex-a crate as the first action
in a Rust-only _start() function does not work if you're subsequently using the
stack, because the compiler often inserts the operations to make room on the
stack to prepare a function call BEFORE the call to set the stack, which crashes
the boot process.

Hence, keep on using a small piece of assembly boot code throughout.
3 years ago
Andre Richter e7cb61b389
Refactoring
- Don't wildcard-import from arch modules. Make it explicit.
- Put translation table code into its own module.
- Put boot code in boot.rs instead of cpu.rs
- Other minor changes, most memory subsystem.
3 years ago