@@ -517,6 +517,10 @@ pub fn gen_register(r: &Register, d: &Defaults) -> Vec<Tokens> {
517
517
Access :: ReadOnly => {
518
518
items. push ( quote ! {
519
519
impl #name {
520
+ pub fn read_bits( & self ) -> #bits_ty {
521
+ self . register. read( )
522
+ }
523
+
520
524
pub fn read( & self ) -> #name_r {
521
525
#name_r { bits: self . register. read( ) }
522
526
}
@@ -526,6 +530,22 @@ pub fn gen_register(r: &Register, d: &Defaults) -> Vec<Tokens> {
526
530
Access :: ReadWrite => {
527
531
items. push ( quote ! {
528
532
impl #name {
533
+ pub fn read_bits( & self ) -> #bits_ty {
534
+ self . register. read( )
535
+ }
536
+
537
+ pub unsafe fn modify_bits<F >( & mut self , f: F )
538
+ where F : FnOnce ( & mut #bits_ty)
539
+ {
540
+ let mut bits = self . register. read( ) ;
541
+ f( & mut bits) ;
542
+ self . register. write( bits) ;
543
+ }
544
+
545
+ pub unsafe fn write_bits( & mut self , bits: #bits_ty) {
546
+ self . register. write( bits) ;
547
+ }
548
+
529
549
pub fn modify<F >( & mut self , f: F )
530
550
where for <' w> F : FnOnce ( & #name_r, & ' w mut #name_w) -> & ' w mut #name_w,
531
551
{
@@ -554,6 +574,10 @@ pub fn gen_register(r: &Register, d: &Defaults) -> Vec<Tokens> {
554
574
Access :: WriteOnly => {
555
575
items. push ( quote ! {
556
576
impl #name {
577
+ pub unsafe fn write_bits( & mut self , bits: #bits_ty) {
578
+ self . register. write( bits) ;
579
+ }
580
+
557
581
pub fn write<F >( & self , f: F )
558
582
where F : FnOnce ( & mut #name_w) -> & mut #name_w,
559
583
{
0 commit comments