- bf firstBoot,nofeatcpy ; Skip feature propagate if not first time boot...
-
- li r2,NCPUS ; Get number of CPUs
- lis r23,hi16(EXT(per_proc_info)) ; Set base per_proc
- ori r23,r23,lo16(EXT(per_proc_info)) ; Set base per_proc
- addi r6,r23,ppSize ; Point to the next one
-
-cpyFCpu: addic. r2,r2,-1 ; Count down
- la r8,pfAvailable(r23) ; Point to features of boot processor
- la r7,pfAvailable(r6) ; Point to features of our processor
- li r9,pfSize/4 ; Get size of a features area
- ble-- nofeatcpy ; Copied all we need
-
-cpyFeat: subi r9,r9,1 ; Count word
- lwz r0,0(r8) ; Get boot cpu features
- stw r0,0(r7) ; Copy to ours
- mr. r9,r9 ; Finished?
- addi r7,r7,4 ; Next out
- addi r8,r8,4 ; Next in
- bgt cpyFeat ; Copy all boot cpu features to us...
-
- lwz r17,pfAvailable(r6) ; Get our newly initialized features
- addi r6,r6,ppSize ; Point to the next one
- b cpyFCpu ; Do the next per_proc...
-
-
-nofeatcpy: rlwinm. r0,r17,0,pf64Bitb,pf64Bitb ; Is this a 64-bit machine?