32
32
decl %ecx
33
33
jnz 100b
34
34
102:
35
- .section .fixup,"ax"
36
- 103: addl %ecx ,%edx /* ecx is zerorest also */
37
- jmp .Lcopy_user_handle_tail
38
- .previous
39
35
40
- _ASM_EXTABLE_CPY(100b, 103b )
41
- _ASM_EXTABLE_CPY(101b, 103b )
42
- .endm
36
+ _ASM_EXTABLE_CPY(100b, .Lcopy_user_handle_align )
37
+ _ASM_EXTABLE_CPY(101b, .Lcopy_user_handle_align )
38
+ .endm
43
39
44
40
/*
45
41
* copy_user_generic_unrolled - memory copy with exception handling.
@@ -107,15 +103,13 @@ SYM_FUNC_START(copy_user_generic_unrolled)
107
103
ASM_CLAC
108
104
RET
109
105
110
- .section .fixup,"ax"
111
106
30: shll $6 ,%ecx
112
107
addl %ecx ,%edx
113
108
jmp 60f
114
109
40: leal (%rdx ,%rcx ,8 ),%edx
115
110
jmp 60f
116
111
50: movl %ecx ,%edx
117
112
60: jmp .Lcopy_user_handle_tail /* ecx is zerorest also */
118
- .previous
119
113
120
114
_ASM_EXTABLE_CPY(1b, 30b)
121
115
_ASM_EXTABLE_CPY(2b, 30b)
@@ -166,20 +160,16 @@ SYM_FUNC_START(copy_user_generic_string)
166
160
movl %edx ,%ecx
167
161
shrl $3 ,%ecx
168
162
andl $7 ,%edx
169
- 1: rep
170
- movsq
163
+ 1: rep movsq
171
164
2: movl %edx ,%ecx
172
- 3: rep
173
- movsb
165
+ 3: rep movsb
174
166
xorl %eax ,%eax
175
167
ASM_CLAC
176
168
RET
177
169
178
- .section .fixup,"ax"
179
170
11: leal (%rdx ,%rcx ,8 ),%ecx
180
171
12: movl %ecx ,%edx /* ecx is zerorest also */
181
172
jmp .Lcopy_user_handle_tail
182
- .previous
183
173
184
174
_ASM_EXTABLE_CPY(1b, 11b)
185
175
_ASM_EXTABLE_CPY(3b, 12b)
@@ -203,16 +193,13 @@ SYM_FUNC_START(copy_user_enhanced_fast_string)
203
193
cmpl $64 ,%edx
204
194
jb .L_copy_short_string /* less then 64 bytes, avoid the costly 'rep' */
205
195
movl %edx ,%ecx
206
- 1: rep
207
- movsb
196
+ 1: rep movsb
208
197
xorl %eax ,%eax
209
198
ASM_CLAC
210
199
RET
211
200
212
- .section .fixup,"ax"
213
201
12: movl %ecx ,%edx /* ecx is zerorest also */
214
202
jmp .Lcopy_user_handle_tail
215
- .previous
216
203
217
204
_ASM_EXTABLE_CPY(1b, 12b)
218
205
SYM_FUNC_END(copy_user_enhanced_fast_string)
@@ -240,6 +227,11 @@ SYM_CODE_START_LOCAL(.Lcopy_user_handle_tail)
240
227
RET
241
228
242
229
_ASM_EXTABLE_CPY(1b, 2b)
230
+
231
+ .Lcopy_user_handle_align:
232
+ addl %ecx ,%edx /* ecx is zerorest also */
233
+ jmp .Lcopy_user_handle_tail
234
+
243
235
SYM_CODE_END(.Lcopy_user_handle_tail)
244
236
245
237
/*
@@ -350,7 +342,6 @@ SYM_FUNC_START(__copy_user_nocache)
350
342
sfence
351
343
RET
352
344
353
- .section .fixup,"ax"
354
345
.L_fixup_4x8b_copy:
355
346
shll $6 ,%ecx
356
347
addl %ecx ,%edx
@@ -366,7 +357,6 @@ SYM_FUNC_START(__copy_user_nocache)
366
357
.L_fixup_handle_tail:
367
358
sfence
368
359
jmp .Lcopy_user_handle_tail
369
- .previous
370
360
371
361
_ASM_EXTABLE_CPY(1b, .L_fixup_4x8b_copy)
372
362
_ASM_EXTABLE_CPY(2b, .L_fixup_4x8b_copy)
0 commit comments