Similar to #128, we implement TLS Variant I which is used by some architectures other than x86, namely ARM. The right TLS variant is chosen in the arch part of the twizzler-abi crate. Once we had TLS "working" we found out that the data segment of the init program's ELF executable was partially mapped to a read-only slot. So we ended up setting the offset of where data segment starts for the aarch64-unknown-twizzler triple. After this we are able to get the init program to run, and print "Hello, World 42." It gets to the point where it waits for the device manager which we have yet to implement support for on aarch64.
Summary
implement TLS variant I in the twizzler-abi crate
make sure that TLS initialization is architecture dependent
set the user TLS register (TPIDR_EL0) in the kernel
move the data segment onto the next object slot for aarch64-unknown-twizzler
Similar to #128, we implement TLS Variant I which is used by some architectures other than x86, namely ARM. The right TLS variant is chosen in the
arch
part of thetwizzler-abi
crate. Once we had TLS "working" we found out that the data segment of the init program's ELF executable was partially mapped to a read-only slot. So we ended up setting the offset of where data segment starts for theaarch64-unknown-twizzler
triple. After this we are able to get the init program to run, and print "Hello, World 42." It gets to the point where it waits for the device manager which we have yet to implement support for onaarch64
.Summary
twizzler-abi
crateTPIDR_EL0
) in the kernelaarch64-unknown-twizzler