+// *****************************
+// * B Z E R O _ P H Y S _ N C *
+// *****************************
+//
+// void bzero_phys_nc(addr64_t phys_addr, uint32_t length);
+//
+// Takes a phys addr in (r3,r4), and length in r5. NO CACHING
+
+ .align 5
+LEXT(bzero_phys_nc)
+ mflr r12 // save return address
+ rlwinm r3,r3,0,1,0 // coallesce long-long in (r3,r4) into reg64_t in r3
+ rlwimi r3,r4,0,0,31
+ mr r4,r5 // put length where bzero() expects it
+ bl EXT(ml_set_physical_get_ffs) // turn DR off, SF on, features in cr6, old MSR in r11
+ bl EXT(bzero_nc) // use normal bzero() routine
+ mtlr r12 // restore return
+ b EXT(ml_restore) // restore MSR, turning DR on and SF off
+