- cmpwi cr1,r9,0 // is commpage allocated yet?
- sub r9,r9,r0 // r9 <- commpage address, biased by user va
- beq-- cr1,3f // skip if not allocated
- stfd f1,_COMM_PAGE_TIMEBASE(r9) // turn off the timestamp (atomically)
+ cmpwi cr1,r9,0 // is 32-bit commpage allocated yet?
+ cmpwi cr6,r10,0 // is 64-bit commpage allocated yet?
+ sub r9,r9,r0 // r9 <- 32-bit commpage address, biased by user va
+ sub r10,r10,r0 // r10<- 64-bit commpage address
+ beq-- cr1,3f // skip if 32-bit commpage not allocated (64-bit won't be either)
+ bne++ cr6,1f // skip if 64-bit commpage is allocated
+ mr r10,r9 // if no 64-bit commpage, point to 32-bit version with r10 too
+1:
+ stfd f1,_COMM_PAGE_TIMEBASE(r9) // turn off the 32-bit-commpage timestamp (atomically)
+ stfd f1,_COMM_PAGE_TIMEBASE(r10) // and the 64-bit one too