diff options
| -rw-r--r-- | arch/powerpc/lib/memcpy_64.S | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/arch/powerpc/lib/memcpy_64.S b/arch/powerpc/lib/memcpy_64.S index fe2d34e5332d..e178922b2c21 100644 --- a/arch/powerpc/lib/memcpy_64.S +++ b/arch/powerpc/lib/memcpy_64.S | |||
| @@ -53,18 +53,19 @@ END_FTR_SECTION_IFCLR(CPU_FTR_UNALIGNED_LD_STD) | |||
| 53 | 3: std r8,8(r3) | 53 | 3: std r8,8(r3) |
| 54 | beq 3f | 54 | beq 3f |
| 55 | addi r3,r3,16 | 55 | addi r3,r3,16 |
| 56 | ld r9,8(r4) | ||
| 57 | .Ldo_tail: | 56 | .Ldo_tail: |
| 58 | bf cr7*4+1,1f | 57 | bf cr7*4+1,1f |
| 59 | rotldi r9,r9,32 | 58 | lwz r9,8(r4) |
| 59 | addi r4,r4,4 | ||
| 60 | stw r9,0(r3) | 60 | stw r9,0(r3) |
| 61 | addi r3,r3,4 | 61 | addi r3,r3,4 |
| 62 | 1: bf cr7*4+2,2f | 62 | 1: bf cr7*4+2,2f |
| 63 | rotldi r9,r9,16 | 63 | lhz r9,8(r4) |
| 64 | addi r4,r4,2 | ||
| 64 | sth r9,0(r3) | 65 | sth r9,0(r3) |
| 65 | addi r3,r3,2 | 66 | addi r3,r3,2 |
| 66 | 2: bf cr7*4+3,3f | 67 | 2: bf cr7*4+3,3f |
| 67 | rotldi r9,r9,8 | 68 | lbz r9,8(r4) |
| 68 | stb r9,0(r3) | 69 | stb r9,0(r3) |
| 69 | 3: ld r3,48(r1) /* return dest pointer */ | 70 | 3: ld r3,48(r1) /* return dest pointer */ |
| 70 | blr | 71 | blr |
| @@ -133,11 +134,24 @@ END_FTR_SECTION_IFCLR(CPU_FTR_UNALIGNED_LD_STD) | |||
| 133 | cmpwi cr1,r5,8 | 134 | cmpwi cr1,r5,8 |
| 134 | addi r3,r3,32 | 135 | addi r3,r3,32 |
| 135 | sld r9,r9,r10 | 136 | sld r9,r9,r10 |
| 136 | ble cr1,.Ldo_tail | 137 | ble cr1,6f |
| 137 | ld r0,8(r4) | 138 | ld r0,8(r4) |
| 138 | srd r7,r0,r11 | 139 | srd r7,r0,r11 |
| 139 | or r9,r7,r9 | 140 | or r9,r7,r9 |
| 140 | b .Ldo_tail | 141 | 6: |
| 142 | bf cr7*4+1,1f | ||
| 143 | rotldi r9,r9,32 | ||
| 144 | stw r9,0(r3) | ||
| 145 | addi r3,r3,4 | ||
| 146 | 1: bf cr7*4+2,2f | ||
| 147 | rotldi r9,r9,16 | ||
| 148 | sth r9,0(r3) | ||
| 149 | addi r3,r3,2 | ||
| 150 | 2: bf cr7*4+3,3f | ||
| 151 | rotldi r9,r9,8 | ||
| 152 | stb r9,0(r3) | ||
| 153 | 3: ld r3,48(r1) /* return dest pointer */ | ||
| 154 | blr | ||
| 141 | 155 | ||
| 142 | .Ldst_unaligned: | 156 | .Ldst_unaligned: |
| 143 | PPC_MTOCRF 0x01,r6 # put #bytes to 8B bdry into cr7 | 157 | PPC_MTOCRF 0x01,r6 # put #bytes to 8B bdry into cr7 |
