diff options
Diffstat (limited to 'arch/powerpc/boot/util.S')
| -rw-r--r-- | arch/powerpc/boot/util.S | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/powerpc/boot/util.S b/arch/powerpc/boot/util.S index 5143228e3e5f..6636b1d7821b 100644 --- a/arch/powerpc/boot/util.S +++ b/arch/powerpc/boot/util.S | |||
| @@ -71,18 +71,32 @@ udelay: | |||
| 71 | add r4,r4,r5 | 71 | add r4,r4,r5 |
| 72 | addi r4,r4,-1 | 72 | addi r4,r4,-1 |
| 73 | divw r4,r4,r5 /* BUS ticks */ | 73 | divw r4,r4,r5 /* BUS ticks */ |
| 74 | #ifdef CONFIG_8xx | ||
| 75 | 1: mftbu r5 | ||
| 76 | mftb r6 | ||
| 77 | mftbu r7 | ||
| 78 | #else | ||
| 74 | 1: mfspr r5, SPRN_TBRU | 79 | 1: mfspr r5, SPRN_TBRU |
| 75 | mfspr r6, SPRN_TBRL | 80 | mfspr r6, SPRN_TBRL |
| 76 | mfspr r7, SPRN_TBRU | 81 | mfspr r7, SPRN_TBRU |
| 82 | #endif | ||
| 77 | cmpw 0,r5,r7 | 83 | cmpw 0,r5,r7 |
| 78 | bne 1b /* Get [synced] base time */ | 84 | bne 1b /* Get [synced] base time */ |
| 79 | addc r9,r6,r4 /* Compute end time */ | 85 | addc r9,r6,r4 /* Compute end time */ |
| 80 | addze r8,r5 | 86 | addze r8,r5 |
| 87 | #ifdef CONFIG_8xx | ||
| 88 | 2: mftbu r5 | ||
| 89 | #else | ||
| 81 | 2: mfspr r5, SPRN_TBRU | 90 | 2: mfspr r5, SPRN_TBRU |
| 91 | #endif | ||
| 82 | cmpw 0,r5,r8 | 92 | cmpw 0,r5,r8 |
| 83 | blt 2b | 93 | blt 2b |
| 84 | bgt 3f | 94 | bgt 3f |
| 95 | #ifdef CONFIG_8xx | ||
| 96 | mftb r6 | ||
| 97 | #else | ||
| 85 | mfspr r6, SPRN_TBRL | 98 | mfspr r6, SPRN_TBRL |
| 99 | #endif | ||
| 86 | cmpw 0,r6,r9 | 100 | cmpw 0,r6,r9 |
| 87 | blt 2b | 101 | blt 2b |
| 88 | 3: blr | 102 | 3: blr |
