/* Turn off data relocation. */
mfmsr r3 /* Save MSR in r7 */
rlwinm r3,r3,0,28,26/* Turn off DR bit */
sync
mtmsr r3
isync
BEGIN_FTR_SECTION /* Flush any pending L2 data prefetches to work around HW bug */
sync
lis r3,0xfff0
lwz r0,0(r3) /* perform cache-inhibited load to ROM */
sync /* (caches are disabled at this point) */
END_FTR_SECTION_IFSET(CPU_FTR_SPEC7450)
/* This loop puts us back to sleep in case we have a spurrious *wakeupsothatthehostbridgeproperlystaysasleep.The *CPUwillbeturnedoff,eitherafteraknowntime(about1 *second)onwallstreet&lombard,orassoonastheCPUenters *SLEEPmodeoncore99
*/
mfmsr r2
oris r2,r2,MSR_POW@h 1: sync
mtmsr r2
isync
b 1b
_ASM_NOKPROBE_SYMBOL(low_cpu_offline_self) /* *Hereistheresumecode.
*/
/* *Core99machinesresumehere *r4hasthephysicaladdressofSL_PC(sp)(unused)
*/
_GLOBAL(core99_wake_up) /* Make sure HID0 no longer contains any sleep bit and that data cache *isdisabled
*/
mfspr r3,SPRN_HID0
rlwinm r3,r3,0,11,7/* clear SLEEP, NAP, DOZE bits */
rlwinm 3,r3,0,18,15/* clear DCE, ICE */
mtspr SPRN_HID0,r3
sync
isync
/* Restore the kernel's segment registers before *wedoanyr1memoryaccessaswearenotsurethey *areinasanestateabovethefirst256Mbregion
*/
bl load_segment_registers
sync
isync
subi r1,r1,SL_PC
/* Restore various CPU config stuffs */
bl __restore_cpu_setup
/* Make sure all FPRs have been initialized */
bl reloc_offset
bl __init_fpu_registers
/* Invalidate & enable L1 cache, we don't care about *whatevertheROMmayhavetriedtowritetomemory
*/
bl __inval_enable_L1
/* Restore the BATs, and SDR1. Then we can turn on the MMU. */
lwz r4,SL_SDR1(r1)
mtsdr1 r4
lwz r4,SL_SPRG0(r1)
mtsprg 0,r4
lwz r4,SL_SPRG0+4(r1)
mtsprg 1,r4
lwz r4,SL_SPRG0+8(r1)
mtsprg 2,r4
lwz r4,SL_SPRG0+12(r1)
mtsprg 3,r4
/* Restore the callee-saved registers and return */
lwz r0,SL_CR(r1)
mtcr r0
lwz r2,SL_R2(r1)
lmw r12,SL_R12(r1)
/* restore the MSR and SP and turn on the MMU and return */
lwz r3,SL_MSR(r1)
lwz r4,SL_LR(r1)
lwz r1,SL_SP(r1)
mtsrr0 r4
mtsrr1 r3
sync
isync
rfi
_ASM_NOKPROBE_SYMBOL(grackle_wake_up)
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.