imxrt_ral/blocks/imxrt1011/
romc.rs

1#[doc = "ROMC"]
2#[repr(C)]
3pub struct RegisterBlock {
4    _reserved0: [u8; 0xd4],
5    #[doc = "ROMC Data Registers"]
6    pub ROMPATCHD: [crate::RWRegister<u32>; 8usize],
7    #[doc = "ROMC Control Register"]
8    pub ROMPATCHCNTL: crate::RWRegister<u32>,
9    #[doc = "ROMC Enable Register High"]
10    pub ROMPATCHENH: crate::RORegister<u32>,
11    #[doc = "ROMC Enable Register Low"]
12    pub ROMPATCHENL: crate::RWRegister<u32>,
13    #[doc = "ROMC Address Registers"]
14    pub ROMPATCHA: [crate::RWRegister<u32>; 16usize],
15    _reserved1: [u8; 0xc8],
16    #[doc = "ROMC Status Register"]
17    pub ROMPATCHSR: crate::RWRegister<u32>,
18}
19#[doc = "ROMC Data Registers"]
20pub mod ROMPATCHD {
21    #[doc = "Data Fix Registers - Stores the data used for 1-word data fix operations"]
22    pub mod DATAX {
23        pub const offset: u32 = 0;
24        pub const mask: u32 = 0xffff_ffff << offset;
25        pub mod R {}
26        pub mod W {}
27        pub mod RW {}
28    }
29}
30#[doc = "ROMC Control Register"]
31pub mod ROMPATCHCNTL {
32    #[doc = "Data Fix Enable - Controls the use of the first 8 address comparators for 1-word data fix or for code patch routine"]
33    pub mod DATAFIX {
34        pub const offset: u32 = 0;
35        pub const mask: u32 = 0xff << offset;
36        pub mod R {}
37        pub mod W {}
38        pub mod RW {
39            #[doc = "Address comparator triggers a opcode patch"]
40            pub const DATAFIX_0: u32 = 0;
41            #[doc = "Address comparator triggers a data fix"]
42            pub const DATAFIX_1: u32 = 0x01;
43        }
44    }
45    #[doc = "ROMC Disable -- This bit, when set, disables all ROMC operations"]
46    pub mod DIS {
47        pub const offset: u32 = 29;
48        pub const mask: u32 = 0x01 << offset;
49        pub mod R {}
50        pub mod W {}
51        pub mod RW {
52            #[doc = "Does not affect any ROMC functions (default)"]
53            pub const DIS_0: u32 = 0;
54            #[doc = "Disable all ROMC functions: data fixing, and opcode patching"]
55            pub const DIS_1: u32 = 0x01;
56        }
57    }
58}
59#[doc = "ROMC Enable Register Low"]
60pub mod ROMPATCHENL {
61    #[doc = "Enable Address Comparator - This bit enables the corresponding address comparator to trigger an event"]
62    pub mod ENABLE {
63        pub const offset: u32 = 0;
64        pub const mask: u32 = 0xffff << offset;
65        pub mod R {}
66        pub mod W {}
67        pub mod RW {
68            #[doc = "Address comparator disabled"]
69            pub const ENABLE_0: u32 = 0;
70            #[doc = "Address comparator enabled, ROMC will trigger a opcode patch or data fix event upon matching of the associated address"]
71            pub const ENABLE_1: u32 = 0x01;
72        }
73    }
74}
75#[doc = "ROMC Address Registers"]
76pub mod ROMPATCHA {
77    #[doc = "THUMB Comparator Select - Indicates that this address will trigger a THUMB opcode patch or an Arm opcode patch"]
78    pub mod THUMBX {
79        pub const offset: u32 = 0;
80        pub const mask: u32 = 0x01 << offset;
81        pub mod R {}
82        pub mod W {}
83        pub mod RW {
84            #[doc = "Arm patch"]
85            pub const THUMBX_0: u32 = 0;
86            #[doc = "THUMB patch (ignore if data fix)"]
87            pub const THUMBX_1: u32 = 0x01;
88        }
89    }
90    #[doc = "Address Comparator Registers - Indicates the memory address to be watched"]
91    pub mod ADDRX {
92        pub const offset: u32 = 1;
93        pub const mask: u32 = 0x003f_ffff << offset;
94        pub mod R {}
95        pub mod W {}
96        pub mod RW {}
97    }
98}
99#[doc = "ROMC Status Register"]
100pub mod ROMPATCHSR {
101    #[doc = "ROMC Source Number - Binary encoding of the number of the address comparator which has an address match in the most recent patch event on ROMC AHB"]
102    pub mod SOURCE {
103        pub const offset: u32 = 0;
104        pub const mask: u32 = 0x3f << offset;
105        pub mod R {}
106        pub mod W {}
107        pub mod RW {
108            #[doc = "Address Comparator 0 matched"]
109            pub const SOURCE_0: u32 = 0;
110            #[doc = "Address Comparator 1 matched"]
111            pub const SOURCE_1: u32 = 0x01;
112            #[doc = "Address Comparator 15 matched"]
113            pub const SOURCE_15: u32 = 0x0f;
114        }
115    }
116    #[doc = "ROMC AHB Multiple Address Comparator matches Indicator - Indicates that multiple address comparator matches occurred"]
117    pub mod SW {
118        pub const offset: u32 = 17;
119        pub const mask: u32 = 0x01 << offset;
120        pub mod R {}
121        pub mod W {}
122        pub mod RW {
123            #[doc = "no event or comparator collisions"]
124            pub const SW_0: u32 = 0;
125            #[doc = "a collision has occurred"]
126            pub const SW_1: u32 = 0x01;
127        }
128    }
129}