@@ -517,6 +517,10 @@ pub fn gen_register(r: &Register, d: &Defaults) -> Vec<Tokens> {
517517 Access :: ReadOnly => {
518518 items. push ( quote ! {
519519 impl #name {
520+ pub fn read_bits( & self ) -> #bits_ty {
521+ self . register. read( )
522+ }
523+
520524 pub fn read( & self ) -> #name_r {
521525 #name_r { bits: self . register. read( ) }
522526 }
@@ -526,6 +530,22 @@ pub fn gen_register(r: &Register, d: &Defaults) -> Vec<Tokens> {
526530 Access :: ReadWrite => {
527531 items. push ( quote ! {
528532 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+
529549 pub fn modify<F >( & mut self , f: F )
530550 where for <' w> F : FnOnce ( & #name_r, & ' w mut #name_w) -> & ' w mut #name_w,
531551 {
@@ -554,6 +574,10 @@ pub fn gen_register(r: &Register, d: &Defaults) -> Vec<Tokens> {
554574 Access :: WriteOnly => {
555575 items. push ( quote ! {
556576 impl #name {
577+ pub unsafe fn write_bits( & mut self , bits: #bits_ty) {
578+ self . register. write( bits) ;
579+ }
580+
557581 pub fn write<F >( & self , f: F )
558582 where F : FnOnce ( & mut #name_w) -> & mut #name_w,
559583 {
0 commit comments