+init970:
+ li r20,0 ; Clear this
+ mtspr hior,r20 ; Make sure that 0 is interrupt prefix
+ bf firstBoot,init970nb ; No init for wakeup or second processor....
+
+
+ mfspr r11,hid0 ; Get original hid0
+ std r11,pfHID0(r30) ; Save original
+ mfspr r11,hid1 ; Get original hid1
+ std r11,pfHID1(r30) ; Save original
+ mfspr r11,hid4 ; Get original hid4
+ std r11,pfHID4(r30) ; Save original
+ mfspr r11,hid5 ; Get original hid5
+ std r11,pfHID5(r30) ; Save original
+
+;
+; We can not query or change the L2 size. We will just
+; phoney up a L2CR to make sysctl "happy" and set the
+; L2 size to 512K.
+;
+
+ lis r0,0x8000 ; Synthesize a "valid" but non-existant L2CR
+ stw r0,pfl2crOriginal(r30) ; Set a dummy L2CR
+ stw r0,pfl2cr(r30) ; Set a dummy L2CR
+ lis r0,8 ; Get 512K
+ stw r0,pfl2Size(r30) ; Set the L2 size
+
+ blr
+
+;
+; Start up code for second processor or wake up from sleep
+;
+
+init970nb: ld r11,pfHID0(r30) ; Get it
+ isync
+ mtspr hid0,r11 ; Stuff it
+ mfspr r11,hid0 ; Get it
+ mfspr r11,hid0 ; Get it
+ mfspr r11,hid0 ; Get it
+ mfspr r11,hid0 ; Get it
+ mfspr r11,hid0 ; Get it
+ mfspr r11,hid0 ; Get it
+ isync
+
+ ld r11,pfHID1(r30) ; Get it
+ isync
+ mtspr hid1,r11 ; Stick it
+ mtspr hid1,r11 ; Stick it again
+ isync
+
+ ld r11,pfHID4(r30) ; Get it
+ sync
+ mtspr hid4,r11 ; Stick it
+ isync
+
+ ld r11,pfHID5(r30) ; Get it
+ mtspr hid5,r11 ; Set it
+ isync
+ blr ; Leave...
+
+
+; Unsupported Processors
+initUnsupported:
+ mtlr r2 ; Restore the return address
+ blr ; Return to the booter
+
+