diff options
| -rw-r--r-- | arch/microblaze/lib/uaccess_old.S | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/arch/microblaze/lib/uaccess_old.S b/arch/microblaze/lib/uaccess_old.S index bacfedc3c7dd..6dfd4a087263 100644 --- a/arch/microblaze/lib/uaccess_old.S +++ b/arch/microblaze/lib/uaccess_old.S | |||
| @@ -121,32 +121,31 @@ __copy_tofrom_user: | |||
| 121 | */ | 121 | */ |
| 122 | beqid r7, 0f /* zero size is not likely */ | 122 | beqid r7, 0f /* zero size is not likely */ |
| 123 | andi r3, r7, 0x3 /* filter add count */ | 123 | andi r3, r7, 0x3 /* filter add count */ |
| 124 | bneid r3, 4f /* if is odd value then byte copying */ | 124 | bneid r3, bu /* if is odd value then byte copying */ |
| 125 | or r3, r5, r6 /* find if is any to/from unaligned */ | 125 | or r3, r5, r6 /* find if is any to/from unaligned */ |
| 126 | andi r3, r3, 0x3 /* mask unaligned */ | 126 | andi r3, r3, 0x3 /* mask unaligned */ |
| 127 | bneid r3, 1f /* it is unaligned -> then jump */ | 127 | bneid r3, bu1 /* it is unaligned -> then jump */ |
| 128 | or r3, r0, r0 | 128 | or r3, r0, r0 |
| 129 | 129 | ||
| 130 | /* at least one 4 byte copy */ | 130 | w1: lw r4, r6, r3 /* at least one 4 byte copy */ |
| 131 | 5: lw r4, r6, r3 | 131 | w2: sw r4, r5, r3 |
| 132 | 6: sw r4, r5, r3 | ||
| 133 | addik r7, r7, -4 | 132 | addik r7, r7, -4 |
| 134 | bneid r7, 5b | 133 | bneid r7, w1 |
| 135 | addik r3, r3, 4 | 134 | addik r3, r3, 4 |
| 136 | addik r3, r7, 0 | 135 | addik r3, r7, 0 |
| 137 | rtsd r15, 8 | 136 | rtsd r15, 8 |
| 138 | nop | 137 | nop |
| 139 | 138 | ||
| 140 | .section __ex_table,"a" | 139 | .section __ex_table,"a" |
| 141 | .word 5b, 0f; | 140 | .word w1, 0f; |
| 142 | .word 6b, 0f; | 141 | .word w2, 0f; |
| 143 | .text | 142 | .text |
| 144 | 143 | ||
| 145 | 4: or r3, r0, r0 | 144 | bu: or r3, r0, r0 |
| 146 | 1: lbu r4,r6,r3 | 145 | bu1: lbu r4,r6,r3 |
| 147 | 2: sb r4,r5,r3 | 146 | bu2: sb r4,r5,r3 |
| 148 | addik r7,r7,-1 | 147 | addik r7,r7,-1 |
| 149 | bneid r7,1b | 148 | bneid r7,bu1 |
| 150 | addik r3,r3,1 /* delay slot */ | 149 | addik r3,r3,1 /* delay slot */ |
| 151 | 0: | 150 | 0: |
| 152 | addik r3,r7,0 | 151 | addik r3,r7,0 |
| @@ -155,6 +154,6 @@ __copy_tofrom_user: | |||
| 155 | .size __copy_tofrom_user, . - __copy_tofrom_user | 154 | .size __copy_tofrom_user, . - __copy_tofrom_user |
| 156 | 155 | ||
| 157 | .section __ex_table,"a" | 156 | .section __ex_table,"a" |
| 158 | .word 1b, 0b; | 157 | .word bu1, 0b; |
| 159 | .word 2b, 0b; | 158 | .word bu2, 0b; |
| 160 | .text | 159 | .text |
