-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
-
-