Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: findbit: add unwinder information

Add unwinder information so oops in the findbit functions can create a
proper backtrace.

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>

+7 -1
+7 -1
arch/arm/lib/findbit.S
··· 12 12 */ 13 13 #include <linux/linkage.h> 14 14 #include <asm/assembler.h> 15 + #include <asm/unwind.h> 15 16 .text 16 17 17 18 #ifdef __ARMEB__ ··· 23 22 24 23 .macro find_first, endian, set, name 25 24 ENTRY(_find_first_\name\()bit_\endian) 25 + UNWIND( .fnstart) 26 26 teq r1, #0 27 27 beq 3f 28 28 mov r2, #0 ··· 43 41 blo 1b 44 42 3: mov r0, r1 @ no more bits 45 43 ret lr 44 + UNWIND( .fnend) 46 45 ENDPROC(_find_first_\name\()bit_\endian) 47 46 .endm 48 47 49 48 .macro find_next, endian, set, name 50 49 ENTRY(_find_next_\name\()bit_\endian) 50 + UNWIND( .fnstart) 51 51 cmp r2, r1 52 52 bhs 3b 53 53 mov ip, r2, lsr #5 @ word index ··· 73 69 orr r2, r2, #31 @ no zero bits 74 70 add r2, r2, #1 @ align bit pointer 75 71 b 2b @ loop for next bit 72 + UNWIND( .fnend) 76 73 ENDPROC(_find_next_\name\()bit_\endian) 77 74 .endm 78 75 ··· 102 97 * One or more bits in the LSB of r3 are assumed to be set. 103 98 */ 104 99 .L_found_swab: 100 + UNWIND( .fnstart) 105 101 rev_l r3, ip 106 102 .L_found: 107 103 #if __LINUX_ARM_ARCH__ >= 7 ··· 136 130 cmp r1, r0 @ Clamp to maxbit 137 131 movlo r0, r1 138 132 ret lr 139 - 133 + UNWIND( .fnend)