Switch to tock-registers: Sources for tutorial 15

pull/116/head
Andre Richter 3 years ago committed by Andre Richter
parent 04e0f5bae0
commit 69eac31e05

@ -4,11 +4,11 @@ version = 3
[[package]]
name = "cortex-a"
version = "5.1.6"
version = "6.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ecefc30975eb87afc5a810d4b2305c0ec29e607ea97e51b2ecd80766e9268d28"
checksum = "d25a057b35117d030453cd322f7adbdd331e886bc5bde46cdae656952c4feba6"
dependencies = [
"register",
"tock-registers",
]
[[package]]
@ -17,9 +17,9 @@ version = "0.15.0"
dependencies = [
"cortex-a",
"qemu-exit",
"register",
"test-macros",
"test-types",
"tock-registers",
]
[[package]]
@ -33,9 +33,9 @@ dependencies = [
[[package]]
name = "qemu-exit"
version = "1.0.2"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "702abe3c3255be20a4d67bda326c4117081a49a57afaf752de4845091bc6b476"
checksum = "e179da212ad772061d4120ad2a86a019f929362a477582d8c8014dbf7509cd83"
[[package]]
name = "quote"
@ -46,15 +46,6 @@ dependencies = [
"proc-macro2",
]
[[package]]
name = "register"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f4a247de29ab7cc8f5006cfe775c4a81c704f9914c5e2a79696862e643135433"
dependencies = [
"tock-registers",
]
[[package]]
name = "syn"
version = "1.0.68"
@ -82,9 +73,9 @@ version = "0.1.0"
[[package]]
name = "tock-registers"
version = "0.6.0"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f521a79accce68c417c9c77ce22108056b626126da1932f7e2e9b5bbffee0cea"
checksum = "4ee8fba06c1f4d0b396ef61a54530bb6b28f0dc61c38bc8bc5a5a48161e6282e"
[[package]]
name = "unicode-xid"

@ -9,8 +9,8 @@ lto = true
[features]
default = []
bsp_rpi3 = ["register"]
bsp_rpi4 = ["register"]
bsp_rpi3 = ["tock-registers"]
bsp_rpi4 = ["tock-registers"]
test_build = ["qemu-exit"]
##--------------------------------------------------------------------------------------------------
@ -21,12 +21,12 @@ test_build = ["qemu-exit"]
test-types = { path = "test-types" }
# Optional dependencies
register = { version = "1.x.x", features = ["no_std_unit_tests"], optional = true }
qemu-exit = { version = "1.x.x", optional = true }
tock-registers = { version = "0.7.x", default-features = false, features = ["register_types"], optional = true }
qemu-exit = { version = "2.x.x", optional = true }
# Platform specific dependencies
[target.'cfg(target_arch = "aarch64")'.dependencies]
cortex-a = { version = "5.x.x" }
cortex-a = { version = "6.x.x" }
##--------------------------------------------------------------------------------------------------
## Testing

@ -13,7 +13,8 @@
use crate::{cpu, memory, memory::Address};
use core::intrinsics::unlikely;
use cortex_a::{asm, regs::*};
use cortex_a::{asm, registers::*};
use tock_registers::interfaces::Writeable;
// Assembly counterpart to this file.
global_asm!(include_str!("boot.s"));

@ -11,7 +11,8 @@
//!
//! crate::cpu::smp::arch_smp
use cortex_a::regs::*;
use cortex_a::registers::*;
use tock_registers::interfaces::Readable;
//--------------------------------------------------------------------------------------------------
// Public Code

@ -17,8 +17,11 @@ use crate::{
memory::Address,
};
use core::{cell::UnsafeCell, fmt};
use cortex_a::{barrier, regs::*};
use register::InMemoryRegister;
use cortex_a::{asm::barrier, registers::*};
use tock_registers::{
interfaces::{Readable, Writeable},
registers::InMemoryRegister,
};
// Assembly counterpart to this file.
global_asm!(include_str!("exception.s"));

@ -11,7 +11,8 @@
//!
//! crate::exception::asynchronous::arch_asynchronous
use cortex_a::regs::*;
use cortex_a::registers::*;
use tock_registers::interfaces::{Readable, Writeable};
//--------------------------------------------------------------------------------------------------
// Private Definitions
@ -22,7 +23,7 @@ mod daif_bits {
}
trait DaifField {
fn daif_field() -> register::Field<u64, DAIF::Register>;
fn daif_field() -> tock_registers::fields::Field<u64, DAIF::Register>;
}
struct Debug;
@ -35,25 +36,25 @@ struct FIQ;
//--------------------------------------------------------------------------------------------------
impl DaifField for Debug {
fn daif_field() -> register::Field<u64, DAIF::Register> {
fn daif_field() -> tock_registers::fields::Field<u64, DAIF::Register> {
DAIF::D
}
}
impl DaifField for SError {
fn daif_field() -> register::Field<u64, DAIF::Register> {
fn daif_field() -> tock_registers::fields::Field<u64, DAIF::Register> {
DAIF::A
}
}
impl DaifField for IRQ {
fn daif_field() -> register::Field<u64, DAIF::Register> {
fn daif_field() -> tock_registers::fields::Field<u64, DAIF::Register> {
DAIF::I
}
}
impl DaifField for FIQ {
fn daif_field() -> register::Field<u64, DAIF::Register> {
fn daif_field() -> tock_registers::fields::Field<u64, DAIF::Register> {
DAIF::F
}
}

@ -18,7 +18,8 @@ use crate::{
memory::{mmu::TranslationGranule, Address, Physical, Virtual},
};
use core::intrinsics::unlikely;
use cortex_a::{barrier, regs::*};
use cortex_a::{asm::barrier, registers::*};
use tock_registers::interfaces::{ReadWriteable, Readable, Writeable};
//--------------------------------------------------------------------------------------------------
// Private Definitions

@ -24,7 +24,11 @@ use crate::{
},
};
use core::convert::{self, TryInto};
use register::{register_bitfields, InMemoryRegister};
use tock_registers::{
interfaces::{Readable, Writeable},
register_bitfields,
registers::InMemoryRegister,
};
//--------------------------------------------------------------------------------------------------
// Private Definitions
@ -180,7 +184,7 @@ impl TableDescriptor {
/// Convert the kernel's generic memory attributes to HW-specific attributes of the MMU.
impl convert::From<AttributeFields>
for register::FieldValue<u64, STAGE1_PAGE_DESCRIPTOR::Register>
for tock_registers::fields::FieldValue<u64, STAGE1_PAGE_DESCRIPTOR::Register>
{
fn from(attribute_fields: AttributeFields) -> Self {
// Memory attributes.
@ -399,7 +403,7 @@ impl<const NUM_TABLES: usize> memory::mmu::translation_table::interface::Transla
return Err("Virtual page is already mapped");
}
*page_descriptor = PageDescriptor::from_output_addr(phys_page.as_ptr(), &attr);
*page_descriptor = PageDescriptor::from_output_addr(phys_page.as_ptr(), attr);
}
Ok(())

@ -13,7 +13,8 @@
use crate::{time, warn};
use core::time::Duration;
use cortex_a::{barrier, regs::*};
use cortex_a::{asm::barrier, registers::*};
use tock_registers::interfaces::{ReadWriteable, Readable, Writeable};
//--------------------------------------------------------------------------------------------------
// Private Definitions

@ -7,7 +7,11 @@
use crate::{
bsp::device_driver::common::MMIODerefWrapper, exception, synchronization::InitStateLock,
};
use register::{mmio::*, register_bitfields, register_structs};
use tock_registers::{
interfaces::{Readable, Writeable},
register_bitfields, register_structs,
registers::ReadWrite,
};
//--------------------------------------------------------------------------------------------------
// Private Definitions

@ -12,7 +12,11 @@ use crate::{
state, synchronization,
synchronization::{IRQSafeNullLock, InitStateLock},
};
use register::{mmio::*, register_bitfields, register_structs};
use tock_registers::{
interfaces::{Readable, Writeable},
register_bitfields, register_structs,
registers::{ReadOnly, ReadWrite},
};
//--------------------------------------------------------------------------------------------------
// Private Definitions

@ -9,7 +9,11 @@ use crate::{
synchronization::IRQSafeNullLock,
};
use core::sync::atomic::{AtomicUsize, Ordering};
use register::{mmio::*, register_bitfields, register_structs};
use tock_registers::{
interfaces::{ReadWriteable, Writeable},
register_bitfields, register_structs,
registers::ReadWrite,
};
//--------------------------------------------------------------------------------------------------
// Private Definitions

@ -10,7 +10,11 @@ use crate::{
driver, exception, memory, synchronization,
synchronization::{IRQSafeNullLock, InitStateLock},
};
use register::{mmio::*, register_structs};
use tock_registers::{
interfaces::{Readable, Writeable},
register_structs,
registers::{ReadOnly, WriteOnly},
};
//--------------------------------------------------------------------------------------------------
// Private Definitions

@ -17,7 +17,11 @@ use core::{
fmt,
sync::atomic::{AtomicUsize, Ordering},
};
use register::{mmio::*, register_bitfields, register_structs};
use tock_registers::{
interfaces::{Readable, Writeable},
register_bitfields, register_structs,
registers::{ReadOnly, ReadWrite, WriteOnly},
};
//--------------------------------------------------------------------------------------------------
// Private Definitions
@ -84,6 +88,7 @@ register_bitfields! {
LCR_H [
/// Word length. These bits indicate the number of data bits transmitted or received in a
/// frame.
#[allow(clippy::enum_variant_names)]
WLEN OFFSET(5) NUMBITS(2) [
FiveBit = 0b00,
SixBit = 0b01,

@ -110,8 +110,8 @@
#![allow(incomplete_features)]
#![feature(asm)]
#![feature(const_evaluatable_checked)]
#![feature(const_fn)]
#![feature(const_fn_fn_ptr_basics)]
#![feature(const_fn_trait_bound)]
#![feature(const_generics)]
#![feature(const_panic)]
#![feature(core_intrinsics)]

Loading…
Cancel
Save