@@ -157,3 +157,153 @@ pub mod pmpcfg3 {
157157    set_pmp ! ( ) ; 
158158    clear_pmp ! ( ) ; 
159159} 
160+ 
161+ /// Physical memory protection configuration 
162+ /// pmpcfg4 struct contains pmp16cfg - pmp19cfg for RV32, or pmp16cfg - pmp23cfg for RV64 
163+ pub  mod  pmpcfg4 { 
164+     use  super :: { Permission ,  Pmpcsr ,  Range } ; 
165+ 
166+     read_csr_as ! ( Pmpcsr ,  0x3A4 ) ; 
167+     write_csr_as_usize ! ( 0x3A4 ) ; 
168+ 
169+     set_pmp ! ( ) ; 
170+     clear_pmp ! ( ) ; 
171+ } 
172+ 
173+ /// Physical memory protection configuration 
174+ /// pmpcfg5 struct contains pmp20cfg - pmp23cfg for RV32 only 
175+ #[ cfg( riscv32) ]  
176+ pub  mod  pmpcfg5 { 
177+     use  super :: { Permission ,  Pmpcsr ,  Range } ; 
178+ 
179+     read_csr_as ! ( Pmpcsr ,  0x3A5 ) ; 
180+     write_csr_as_usize_rv32 ! ( 0x3A5 ) ; 
181+ 
182+     set_pmp ! ( ) ; 
183+     clear_pmp ! ( ) ; 
184+ } 
185+ 
186+ /// Physical memory protection configuration 
187+ /// pmpcfg6 struct contains pmp24cfg - pmp27cfg for RV32, or pmp24cfg - pmp31cfg for RV64 
188+ pub  mod  pmpcfg6 { 
189+     use  super :: { Permission ,  Pmpcsr ,  Range } ; 
190+ 
191+     read_csr_as ! ( Pmpcsr ,  0x3A6 ) ; 
192+     write_csr_as_usize ! ( 0x3A6 ) ; 
193+ 
194+     set_pmp ! ( ) ; 
195+     clear_pmp ! ( ) ; 
196+ } 
197+ 
198+ /// Physical memory protection configuration 
199+ /// pmpcfg7 struct contains pmp28cfg - pmp31cfg for RV32 only 
200+ #[ cfg( riscv32) ]  
201+ pub  mod  pmpcfg7 { 
202+     use  super :: { Permission ,  Pmpcsr ,  Range } ; 
203+ 
204+     read_csr_as ! ( Pmpcsr ,  0x3A7 ) ; 
205+     write_csr_as_usize_rv32 ! ( 0x3A7 ) ; 
206+ 
207+     set_pmp ! ( ) ; 
208+     clear_pmp ! ( ) ; 
209+ } 
210+ 
211+ /// Physical memory protection configuration 
212+ /// pmpcfg8 struct contains pmp32cfg - pmp35cfg for RV32, or pmp32cfg - pmp39cfg for RV64 
213+ pub  mod  pmpcfg8 { 
214+     use  super :: { Permission ,  Pmpcsr ,  Range } ; 
215+ 
216+     read_csr_as ! ( Pmpcsr ,  0x3A8 ) ; 
217+     write_csr_as_usize ! ( 0x3A8 ) ; 
218+ 
219+     set_pmp ! ( ) ; 
220+     clear_pmp ! ( ) ; 
221+ } 
222+ 
223+ /// Physical memory protection configuration 
224+ /// pmpcfg9 struct contains pmp36cfg - pmp39cfg for RV32 only 
225+ #[ cfg( riscv32) ]  
226+ pub  mod  pmpcfg9 { 
227+     use  super :: { Permission ,  Pmpcsr ,  Range } ; 
228+ 
229+     read_csr_as ! ( Pmpcsr ,  0x3A9 ) ; 
230+     write_csr_as_usize_rv32 ! ( 0x3A9 ) ; 
231+ 
232+     set_pmp ! ( ) ; 
233+     clear_pmp ! ( ) ; 
234+ } 
235+ 
236+ /// Physical memory protection configuration 
237+ /// pmpcfg10 struct contains pmp40cfg - pmp43cfg for RV32, or pmp40cfg - pmp47cfg for RV64 
238+ pub  mod  pmpcfg10 { 
239+     use  super :: { Permission ,  Pmpcsr ,  Range } ; 
240+ 
241+     read_csr_as ! ( Pmpcsr ,  0x3AA ) ; 
242+     write_csr_as_usize ! ( 0x3AA ) ; 
243+ 
244+     set_pmp ! ( ) ; 
245+     clear_pmp ! ( ) ; 
246+ } 
247+ 
248+ /// Physical memory protection configuration 
249+ /// pmpcfg11 struct contains pmp44cfg - pmp47cfg for RV32 only 
250+ #[ cfg( riscv32) ]  
251+ pub  mod  pmpcfg11 { 
252+     use  super :: { Permission ,  Pmpcsr ,  Range } ; 
253+ 
254+     read_csr_as ! ( Pmpcsr ,  0x3AB ) ; 
255+     write_csr_as_usize_rv32 ! ( 0x3AB ) ; 
256+ 
257+     set_pmp ! ( ) ; 
258+     clear_pmp ! ( ) ; 
259+ } 
260+ 
261+ /// Physical memory protection configuration 
262+ /// pmpcfg12 struct contains pmp48cfg - pmp51cfg for RV32, or pmp48cfg - pmp55cfg for RV64 
263+ pub  mod  pmpcfg12 { 
264+     use  super :: { Permission ,  Pmpcsr ,  Range } ; 
265+ 
266+     read_csr_as ! ( Pmpcsr ,  0x3AC ) ; 
267+     write_csr_as_usize ! ( 0x3AC ) ; 
268+ 
269+     set_pmp ! ( ) ; 
270+     clear_pmp ! ( ) ; 
271+ } 
272+ 
273+ /// Physical memory protection configuration 
274+ /// pmpcfg13 struct contains pmp52cfg - pmp55cfg for RV32 only 
275+ #[ cfg( riscv32) ]  
276+ pub  mod  pmpcfg13 { 
277+     use  super :: { Permission ,  Pmpcsr ,  Range } ; 
278+ 
279+     read_csr_as ! ( Pmpcsr ,  0x3AD ) ; 
280+     write_csr_as_usize_rv32 ! ( 0x3AD ) ; 
281+ 
282+     set_pmp ! ( ) ; 
283+     clear_pmp ! ( ) ; 
284+ } 
285+ 
286+ /// Physical memory protection configuration 
287+ /// pmpcfg14 struct contains pmp56cfg - pmp59cfg for RV32, or pmp56cfg - pmp63cfg for RV64 
288+ pub  mod  pmpcfg14 { 
289+     use  super :: { Permission ,  Pmpcsr ,  Range } ; 
290+ 
291+     read_csr_as ! ( Pmpcsr ,  0x3AE ) ; 
292+     write_csr_as_usize ! ( 0x3AE ) ; 
293+ 
294+     set_pmp ! ( ) ; 
295+     clear_pmp ! ( ) ; 
296+ } 
297+ 
298+ /// Physical memory protection configuration 
299+ /// pmpcfg15 struct contains pmp60cfg - pmp63cfg for RV32 only 
300+ #[ cfg( riscv32) ]  
301+ pub  mod  pmpcfg15 { 
302+     use  super :: { Permission ,  Pmpcsr ,  Range } ; 
303+ 
304+     read_csr_as ! ( Pmpcsr ,  0x3AF ) ; 
305+     write_csr_as_usize_rv32 ! ( 0x3AF ) ; 
306+ 
307+     set_pmp ! ( ) ; 
308+     clear_pmp ! ( ) ; 
309+ } 
0 commit comments