Commit 8adbb371 authored by Nicolas Pitre's avatar Nicolas Pitre Committed by Russell King

[ARM] 3152/1: make various assembly local labels actually local (the rest)

Patch from Nicolas Pitre

For assembly labels to actually be local they must start with ".L" and
not only "." otherwise they still remain visible in the final link and
clutter kallsyms needlessly, and possibly make for unclear symbolic
backtrace. This patch simply inserts a"L" where appropriate. The code
itself is unchanged.
Signed-off-by: default avatarNicolas Pitre <nico@cam.org>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent a9c4814d
...@@ -26,7 +26,7 @@ td1 .req r4 @ save before use ...@@ -26,7 +26,7 @@ td1 .req r4 @ save before use
td2 .req r5 @ save before use td2 .req r5 @ save before use
td3 .req lr td3 .req lr
.zero: mov r0, sum .Lzero: mov r0, sum
add sp, sp, #4 add sp, sp, #4
ldr pc, [sp], #4 ldr pc, [sp], #4
...@@ -34,8 +34,8 @@ td3 .req lr ...@@ -34,8 +34,8 @@ td3 .req lr
* Handle 0 to 7 bytes, with any alignment of source and * Handle 0 to 7 bytes, with any alignment of source and
* destination pointers. Note that when we get here, C = 0 * destination pointers. Note that when we get here, C = 0
*/ */
.less8: teq len, #0 @ check for zero count .Lless8: teq len, #0 @ check for zero count
beq .zero beq .Lzero
/* we must have at least one byte. */ /* we must have at least one byte. */
tst buf, #1 @ odd address? tst buf, #1 @ odd address?
...@@ -44,12 +44,12 @@ td3 .req lr ...@@ -44,12 +44,12 @@ td3 .req lr
subne len, len, #1 subne len, len, #1
adcnes sum, sum, td0, put_byte_1 adcnes sum, sum, td0, put_byte_1
.less4: tst len, #6 .Lless4: tst len, #6
beq .less8_byte beq .Lless8_byte
/* we are now half-word aligned */ /* we are now half-word aligned */
.less8_wordlp: .Lless8_wordlp:
#if __LINUX_ARM_ARCH__ >= 4 #if __LINUX_ARM_ARCH__ >= 4
ldrh td0, [buf], #2 ldrh td0, [buf], #2
sub len, len, #2 sub len, len, #2
...@@ -65,19 +65,19 @@ td3 .req lr ...@@ -65,19 +65,19 @@ td3 .req lr
#endif #endif
adcs sum, sum, td0 adcs sum, sum, td0
tst len, #6 tst len, #6
bne .less8_wordlp bne .Lless8_wordlp
.less8_byte: tst len, #1 @ odd number of bytes .Lless8_byte: tst len, #1 @ odd number of bytes
ldrneb td0, [buf], #1 @ include last byte ldrneb td0, [buf], #1 @ include last byte
adcnes sum, sum, td0, put_byte_0 @ update checksum adcnes sum, sum, td0, put_byte_0 @ update checksum
.done: adc r0, sum, #0 @ collect up the last carry .Ldone: adc r0, sum, #0 @ collect up the last carry
ldr td0, [sp], #4 ldr td0, [sp], #4
tst td0, #1 @ check buffer alignment tst td0, #1 @ check buffer alignment
movne r0, r0, ror #8 @ rotate checksum by 8 bits movne r0, r0, ror #8 @ rotate checksum by 8 bits
ldr pc, [sp], #4 @ return ldr pc, [sp], #4 @ return
.not_aligned: tst buf, #1 @ odd address .Lnot_aligned: tst buf, #1 @ odd address
ldrneb td0, [buf], #1 @ make even ldrneb td0, [buf], #1 @ make even
subne len, len, #1 subne len, len, #1
adcnes sum, sum, td0, put_byte_1 @ update checksum adcnes sum, sum, td0, put_byte_1 @ update checksum
...@@ -102,14 +102,14 @@ td3 .req lr ...@@ -102,14 +102,14 @@ td3 .req lr
ENTRY(csum_partial) ENTRY(csum_partial)
stmfd sp!, {buf, lr} stmfd sp!, {buf, lr}
cmp len, #8 @ Ensure that we have at least cmp len, #8 @ Ensure that we have at least
blo .less8 @ 8 bytes to copy. blo .Lless8 @ 8 bytes to copy.
tst buf, #1 tst buf, #1
movne sum, sum, ror #8 movne sum, sum, ror #8
adds sum, sum, #0 @ C = 0 adds sum, sum, #0 @ C = 0
tst buf, #3 @ Test destination alignment tst buf, #3 @ Test destination alignment
blne .not_aligned @ aligh destination, return here blne .Lnot_aligned @ align destination, return here
1: bics ip, len, #31 1: bics ip, len, #31
beq 3f beq 3f
...@@ -131,11 +131,11 @@ ENTRY(csum_partial) ...@@ -131,11 +131,11 @@ ENTRY(csum_partial)
ldmfd sp!, {r4 - r5} ldmfd sp!, {r4 - r5}
3: tst len, #0x1c @ should not change C 3: tst len, #0x1c @ should not change C
beq .less4 beq .Lless4
4: ldr td0, [buf], #4 4: ldr td0, [buf], #4
sub len, len, #4 sub len, len, #4
adcs sum, sum, td0 adcs sum, sum, td0
tst len, #0x1c tst len, #0x1c
bne 4b bne 4b
b .less4 b .Lless4
...@@ -22,7 +22,7 @@ dst .req r1 ...@@ -22,7 +22,7 @@ dst .req r1
len .req r2 len .req r2
sum .req r3 sum .req r3
.zero: mov r0, sum .Lzero: mov r0, sum
load_regs ea load_regs ea
/* /*
...@@ -31,8 +31,9 @@ sum .req r3 ...@@ -31,8 +31,9 @@ sum .req r3
* the length. Note that the source pointer hasn't been * the length. Note that the source pointer hasn't been
* aligned yet. * aligned yet.
*/ */
.dst_unaligned: tst dst, #1 .Ldst_unaligned:
beq .dst_16bit tst dst, #1
beq .Ldst_16bit
load1b ip load1b ip
sub len, len, #1 sub len, len, #1
...@@ -41,7 +42,7 @@ sum .req r3 ...@@ -41,7 +42,7 @@ sum .req r3
tst dst, #2 tst dst, #2
moveq pc, lr @ dst is now 32bit aligned moveq pc, lr @ dst is now 32bit aligned
.dst_16bit: load2b r8, ip .Ldst_16bit: load2b r8, ip
sub len, len, #2 sub len, len, #2
adcs sum, sum, r8, put_byte_0 adcs sum, sum, r8, put_byte_0
strb r8, [dst], #1 strb r8, [dst], #1
...@@ -53,12 +54,12 @@ sum .req r3 ...@@ -53,12 +54,12 @@ sum .req r3
* Handle 0 to 7 bytes, with any alignment of source and * Handle 0 to 7 bytes, with any alignment of source and
* destination pointers. Note that when we get here, C = 0 * destination pointers. Note that when we get here, C = 0
*/ */
.less8: teq len, #0 @ check for zero count .Lless8: teq len, #0 @ check for zero count
beq .zero beq .Lzero
/* we must have at least one byte. */ /* we must have at least one byte. */
tst dst, #1 @ dst 16-bit aligned tst dst, #1 @ dst 16-bit aligned
beq .less8_aligned beq .Lless8_aligned
/* Align dst */ /* Align dst */
load1b ip load1b ip
...@@ -66,7 +67,7 @@ sum .req r3 ...@@ -66,7 +67,7 @@ sum .req r3
adcs sum, sum, ip, put_byte_1 @ update checksum adcs sum, sum, ip, put_byte_1 @ update checksum
strb ip, [dst], #1 strb ip, [dst], #1
tst len, #6 tst len, #6
beq .less8_byteonly beq .Lless8_byteonly
1: load2b r8, ip 1: load2b r8, ip
sub len, len, #2 sub len, len, #2
...@@ -74,15 +75,16 @@ sum .req r3 ...@@ -74,15 +75,16 @@ sum .req r3
strb r8, [dst], #1 strb r8, [dst], #1
adcs sum, sum, ip, put_byte_1 adcs sum, sum, ip, put_byte_1
strb ip, [dst], #1 strb ip, [dst], #1
.less8_aligned: tst len, #6 .Lless8_aligned:
tst len, #6
bne 1b bne 1b
.less8_byteonly: .Lless8_byteonly:
tst len, #1 tst len, #1
beq .done beq .Ldone
load1b r8 load1b r8
adcs sum, sum, r8, put_byte_0 @ update checksum adcs sum, sum, r8, put_byte_0 @ update checksum
strb r8, [dst], #1 strb r8, [dst], #1
b .done b .Ldone
FN_ENTRY FN_ENTRY
mov ip, sp mov ip, sp
...@@ -90,11 +92,11 @@ FN_ENTRY ...@@ -90,11 +92,11 @@ FN_ENTRY
sub fp, ip, #4 sub fp, ip, #4
cmp len, #8 @ Ensure that we have at least cmp len, #8 @ Ensure that we have at least
blo .less8 @ 8 bytes to copy. blo .Lless8 @ 8 bytes to copy.
adds sum, sum, #0 @ C = 0 adds sum, sum, #0 @ C = 0
tst dst, #3 @ Test destination alignment tst dst, #3 @ Test destination alignment
blne .dst_unaligned @ align destination, return here blne .Ldst_unaligned @ align destination, return here
/* /*
* Ok, the dst pointer is now 32bit aligned, and we know * Ok, the dst pointer is now 32bit aligned, and we know
...@@ -103,7 +105,7 @@ FN_ENTRY ...@@ -103,7 +105,7 @@ FN_ENTRY
*/ */
tst src, #3 @ Test source alignment tst src, #3 @ Test source alignment
bne .src_not_aligned bne .Lsrc_not_aligned
/* Routine for src & dst aligned */ /* Routine for src & dst aligned */
...@@ -136,17 +138,17 @@ FN_ENTRY ...@@ -136,17 +138,17 @@ FN_ENTRY
adcs sum, sum, r4 adcs sum, sum, r4
4: ands len, len, #3 4: ands len, len, #3
beq .done beq .Ldone
load1l r4 load1l r4
tst len, #2 tst len, #2
mov r5, r4, get_byte_0 mov r5, r4, get_byte_0
beq .exit beq .Lexit
adcs sum, sum, r4, push #16 adcs sum, sum, r4, push #16
strb r5, [dst], #1 strb r5, [dst], #1
mov r5, r4, get_byte_1 mov r5, r4, get_byte_1
strb r5, [dst], #1 strb r5, [dst], #1
mov r5, r4, get_byte_2 mov r5, r4, get_byte_2
.exit: tst len, #1 .Lexit: tst len, #1
strneb r5, [dst], #1 strneb r5, [dst], #1
andne r5, r5, #255 andne r5, r5, #255
adcnes sum, sum, r5, put_byte_0 adcnes sum, sum, r5, put_byte_0
...@@ -157,20 +159,20 @@ FN_ENTRY ...@@ -157,20 +159,20 @@ FN_ENTRY
* the inefficient byte manipulations in the * the inefficient byte manipulations in the
* architecture independent code. * architecture independent code.
*/ */
.done: adc r0, sum, #0 .Ldone: adc r0, sum, #0
ldr sum, [sp, #0] @ dst ldr sum, [sp, #0] @ dst
tst sum, #1 tst sum, #1
movne r0, r0, ror #8 movne r0, r0, ror #8
load_regs ea load_regs ea
.src_not_aligned: .Lsrc_not_aligned:
adc sum, sum, #0 @ include C from dst alignment adc sum, sum, #0 @ include C from dst alignment
and ip, src, #3 and ip, src, #3
bic src, src, #3 bic src, src, #3
load1l r5 load1l r5
cmp ip, #2 cmp ip, #2
beq .src2_aligned beq .Lsrc2_aligned
bhi .src3_aligned bhi .Lsrc3_aligned
mov r4, r5, pull #8 @ C = 0 mov r4, r5, pull #8 @ C = 0
bics ip, len, #15 bics ip, len, #15
beq 2f beq 2f
...@@ -211,18 +213,18 @@ FN_ENTRY ...@@ -211,18 +213,18 @@ FN_ENTRY
adcs sum, sum, r4 adcs sum, sum, r4
mov r4, r5, pull #8 mov r4, r5, pull #8
4: ands len, len, #3 4: ands len, len, #3
beq .done beq .Ldone
mov r5, r4, get_byte_0 mov r5, r4, get_byte_0
tst len, #2 tst len, #2
beq .exit beq .Lexit
adcs sum, sum, r4, push #16 adcs sum, sum, r4, push #16
strb r5, [dst], #1 strb r5, [dst], #1
mov r5, r4, get_byte_1 mov r5, r4, get_byte_1
strb r5, [dst], #1 strb r5, [dst], #1
mov r5, r4, get_byte_2 mov r5, r4, get_byte_2
b .exit b .Lexit
.src2_aligned: mov r4, r5, pull #16 .Lsrc2_aligned: mov r4, r5, pull #16
adds sum, sum, #0 adds sum, sum, #0
bics ip, len, #15 bics ip, len, #15
beq 2f beq 2f
...@@ -263,20 +265,20 @@ FN_ENTRY ...@@ -263,20 +265,20 @@ FN_ENTRY
adcs sum, sum, r4 adcs sum, sum, r4
mov r4, r5, pull #16 mov r4, r5, pull #16
4: ands len, len, #3 4: ands len, len, #3
beq .done beq .Ldone
mov r5, r4, get_byte_0 mov r5, r4, get_byte_0
tst len, #2 tst len, #2
beq .exit beq .Lexit
adcs sum, sum, r4 adcs sum, sum, r4
strb r5, [dst], #1 strb r5, [dst], #1
mov r5, r4, get_byte_1 mov r5, r4, get_byte_1
strb r5, [dst], #1 strb r5, [dst], #1
tst len, #1 tst len, #1
beq .done beq .Ldone
load1b r5 load1b r5
b .exit b .Lexit
.src3_aligned: mov r4, r5, pull #24 .Lsrc3_aligned: mov r4, r5, pull #24
adds sum, sum, #0 adds sum, sum, #0
bics ip, len, #15 bics ip, len, #15
beq 2f beq 2f
...@@ -317,10 +319,10 @@ FN_ENTRY ...@@ -317,10 +319,10 @@ FN_ENTRY
adcs sum, sum, r4 adcs sum, sum, r4
mov r4, r5, pull #24 mov r4, r5, pull #24
4: ands len, len, #3 4: ands len, len, #3
beq .done beq .Ldone
mov r5, r4, get_byte_0 mov r5, r4, get_byte_0
tst len, #2 tst len, #2
beq .exit beq .Lexit
strb r5, [dst], #1 strb r5, [dst], #1
adcs sum, sum, r4 adcs sum, sum, r4
load1l r4 load1l r4
...@@ -328,4 +330,4 @@ FN_ENTRY ...@@ -328,4 +330,4 @@ FN_ENTRY
strb r5, [dst], #1 strb r5, [dst], #1
adcs sum, sum, r4, push #24 adcs sum, sum, r4, push #24
mov r5, r4, get_byte_1 mov r5, r4, get_byte_1
b .exit b .Lexit
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
#include <asm/assembler.h> #include <asm/assembler.h>
.text .text
LC0: .word loops_per_jiffy .LC0: .word loops_per_jiffy
/* /*
* 0 <= r0 <= 2000 * 0 <= r0 <= 2000
...@@ -21,7 +21,7 @@ ENTRY(__udelay) ...@@ -21,7 +21,7 @@ ENTRY(__udelay)
orr r2, r2, #0x00db orr r2, r2, #0x00db
mul r0, r2, r0 mul r0, r2, r0
ENTRY(__const_udelay) @ 0 <= r0 <= 0x01ffffff ENTRY(__const_udelay) @ 0 <= r0 <= 0x01ffffff
ldr r2, LC0 ldr r2, .LC0
ldr r2, [r2] @ max = 0x0fffffff ldr r2, [r2] @ max = 0x0fffffff
mov r0, r0, lsr #11 @ max = 0x00003fff mov r0, r0, lsr #11 @ max = 0x00003fff
mov r2, r2, lsr #11 @ max = 0x0003ffff mov r2, r2, lsr #11 @ max = 0x0003ffff
......
...@@ -27,7 +27,7 @@ ENTRY(_find_first_zero_bit_le) ...@@ -27,7 +27,7 @@ ENTRY(_find_first_zero_bit_le)
mov r2, #0 mov r2, #0
1: ldrb r3, [r0, r2, lsr #3] 1: ldrb r3, [r0, r2, lsr #3]
eors r3, r3, #0xff @ invert bits eors r3, r3, #0xff @ invert bits
bne .found @ any now set - found zero bit bne .L_found @ any now set - found zero bit
add r2, r2, #8 @ next bit pointer add r2, r2, #8 @ next bit pointer
2: cmp r2, r1 @ any more? 2: cmp r2, r1 @ any more?
blo 1b blo 1b
...@@ -46,7 +46,7 @@ ENTRY(_find_next_zero_bit_le) ...@@ -46,7 +46,7 @@ ENTRY(_find_next_zero_bit_le)
ldrb r3, [r0, r2, lsr #3] ldrb r3, [r0, r2, lsr #3]
eor r3, r3, #0xff @ now looking for a 1 bit eor r3, r3, #0xff @ now looking for a 1 bit
movs r3, r3, lsr ip @ shift off unused bits movs r3, r3, lsr ip @ shift off unused bits
bne .found bne .L_found
orr r2, r2, #7 @ if zero, then no bits here orr r2, r2, #7 @ if zero, then no bits here
add r2, r2, #1 @ align bit pointer add r2, r2, #1 @ align bit pointer
b 2b @ loop for next bit b 2b @ loop for next bit
...@@ -61,7 +61,7 @@ ENTRY(_find_first_bit_le) ...@@ -61,7 +61,7 @@ ENTRY(_find_first_bit_le)
mov r2, #0 mov r2, #0
1: ldrb r3, [r0, r2, lsr #3] 1: ldrb r3, [r0, r2, lsr #3]
movs r3, r3 movs r3, r3
bne .found @ any now set - found zero bit bne .L_found @ any now set - found zero bit
add r2, r2, #8 @ next bit pointer add r2, r2, #8 @ next bit pointer
2: cmp r2, r1 @ any more? 2: cmp r2, r1 @ any more?
blo 1b blo 1b
...@@ -79,7 +79,7 @@ ENTRY(_find_next_bit_le) ...@@ -79,7 +79,7 @@ ENTRY(_find_next_bit_le)
beq 1b @ If new byte, goto old routine beq 1b @ If new byte, goto old routine
ldrb r3, [r0, r2, lsr #3] ldrb r3, [r0, r2, lsr #3]
movs r3, r3, lsr ip @ shift off unused bits movs r3, r3, lsr ip @ shift off unused bits
bne .found bne .L_found
orr r2, r2, #7 @ if zero, then no bits here orr r2, r2, #7 @ if zero, then no bits here
add r2, r2, #1 @ align bit pointer add r2, r2, #1 @ align bit pointer
b 2b @ loop for next bit b 2b @ loop for next bit
...@@ -93,7 +93,7 @@ ENTRY(_find_first_zero_bit_be) ...@@ -93,7 +93,7 @@ ENTRY(_find_first_zero_bit_be)
1: eor r3, r2, #0x18 @ big endian byte ordering 1: eor r3, r2, #0x18 @ big endian byte ordering
ldrb r3, [r0, r3, lsr #3] ldrb r3, [r0, r3, lsr #3]
eors r3, r3, #0xff @ invert bits eors r3, r3, #0xff @ invert bits
bne .found @ any now set - found zero bit bne .L_found @ any now set - found zero bit
add r2, r2, #8 @ next bit pointer add r2, r2, #8 @ next bit pointer
2: cmp r2, r1 @ any more? 2: cmp r2, r1 @ any more?
blo 1b blo 1b
...@@ -109,7 +109,7 @@ ENTRY(_find_next_zero_bit_be) ...@@ -109,7 +109,7 @@ ENTRY(_find_next_zero_bit_be)
ldrb r3, [r0, r3, lsr #3] ldrb r3, [r0, r3, lsr #3]
eor r3, r3, #0xff @ now looking for a 1 bit eor r3, r3, #0xff @ now looking for a 1 bit
movs r3, r3, lsr ip @ shift off unused bits movs r3, r3, lsr ip @ shift off unused bits
bne .found bne .L_found
orr r2, r2, #7 @ if zero, then no bits here orr r2, r2, #7 @ if zero, then no bits here
add r2, r2, #1 @ align bit pointer add r2, r2, #1 @ align bit pointer
b 2b @ loop for next bit b 2b @ loop for next bit
...@@ -121,7 +121,7 @@ ENTRY(_find_first_bit_be) ...@@ -121,7 +121,7 @@ ENTRY(_find_first_bit_be)
1: eor r3, r2, #0x18 @ big endian byte ordering 1: eor r3, r2, #0x18 @ big endian byte ordering
ldrb r3, [r0, r3, lsr #3] ldrb r3, [r0, r3, lsr #3]
movs r3, r3 movs r3, r3
bne .found @ any now set - found zero bit bne .L_found @ any now set - found zero bit
add r2, r2, #8 @ next bit pointer add r2, r2, #8 @ next bit pointer
2: cmp r2, r1 @ any more? 2: cmp r2, r1 @ any more?
blo 1b blo 1b
...@@ -136,7 +136,7 @@ ENTRY(_find_next_bit_be) ...@@ -136,7 +136,7 @@ ENTRY(_find_next_bit_be)
eor r3, r2, #0x18 @ big endian byte ordering eor r3, r2, #0x18 @ big endian byte ordering
ldrb r3, [r0, r3, lsr #3] ldrb r3, [r0, r3, lsr #3]
movs r3, r3, lsr ip @ shift off unused bits movs r3, r3, lsr ip @ shift off unused bits
bne .found bne .L_found
orr r2, r2, #7 @ if zero, then no bits here orr r2, r2, #7 @ if zero, then no bits here
add r2, r2, #1 @ align bit pointer add r2, r2, #1 @ align bit pointer
b 2b @ loop for next bit b 2b @ loop for next bit
...@@ -146,7 +146,7 @@ ENTRY(_find_next_bit_be) ...@@ -146,7 +146,7 @@ ENTRY(_find_next_bit_be)
/* /*
* One or more bits in the LSB of r3 are assumed to be set. * One or more bits in the LSB of r3 are assumed to be set.
*/ */
.found: .L_found:
#if __LINUX_ARM_ARCH__ >= 5 #if __LINUX_ARM_ARCH__ >= 5
rsb r1, r3, #0 rsb r1, r3, #0
and r3, r3, r1 and r3, r3, r1
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment