1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
//! Memory-mapped registers.
//!
//! # Mappings and Tokens
//!
//! Most register should be already mapped by platform crates.
//!
//! ```
//! # #![feature(proc_macro)]
//! # use std as core;
//! use core::mem::size_of_val;
//! use drone_core::reg::{tokens, mappings};
//! use drone_core::reg::prelude::*;
//!
//! mappings! {
//! /// SysTick timer.
//! STK; // block name
//!
//! /// SysTick control and status register.
//! CTRL { // register name
//! 0xE000_E010 // memory address
//! 0x20 // bit size
//! 0x0000_0000 // reset value
//! RReg WReg; // list of marker traits for the register
//!
//! /// Counter enable.
//! ENABLE { // field name
//! 0 // offset
//! 1 // width
//! RRegField WRegField // list of marker traits for the field
//! }
//! }
//! }
//!
//! tokens! {
//! /// Register tokens.
//! RegIndex;
//!
//! STK {
//! /// SysTick control and status register.
//! CTRL;
//! }
//! }
//!
//! fn main() {
//! let regs = unsafe { RegIndex::new() };
//! assert_eq!(size_of_val(®s.stk_ctrl.enable), 0);
//! assert_eq!(size_of_val(®s.stk_ctrl), 0);
//! assert_eq!(size_of_val(®s), 0);
//! }
//! ```
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use ;
/// Forkable token.