hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/arch/arm/lib/backtrace-clang.S
....@@ -17,6 +17,7 @@
1717 #define sv_pc r6
1818 #define mask r7
1919 #define sv_lr r8
20
+#define loglvl r9
2021
2122 ENTRY(c_backtrace)
2223
....@@ -99,6 +100,7 @@
99100 @ to ensure 8 byte alignment
100101 movs frame, r0 @ if frame pointer is zero
101102 beq no_frame @ we have no stack frames
103
+ mov loglvl, r2
102104 tst r1, #0x10 @ 26 or 32-bit mode?
103105 moveq mask, #0xfc000003
104106 movne mask, #0 @ mask for 32-bit
....@@ -167,6 +169,7 @@
167169 mov r1, sv_lr
168170 mov r2, frame
169171 bic r1, r1, mask @ mask PC/LR for the mode
172
+ mov r3, loglvl
170173 bl dump_backtrace_entry
171174
172175 /*
....@@ -183,6 +186,7 @@
183186 ldr r0, [frame] @ locals are stored in
184187 @ the preceding frame
185188 subeq r0, r0, #4
189
+ mov r2, loglvl
186190 bleq dump_backtrace_stm @ dump saved registers
187191
188192 /*
....@@ -196,7 +200,8 @@
196200 bhi for_each_frame
197201
198202 1006: adr r0, .Lbad
199
- mov r1, frame
203
+ mov r1, loglvl
204
+ mov r2, frame
200205 bl printk
201206 no_frame: ldmfd sp!, {r4 - r9, fp, pc}
202207 ENDPROC(c_backtrace)
....@@ -209,7 +214,7 @@
209214 .long 1005b, 1006b
210215 .popsection
211216
212
-.Lbad: .asciz "Backtrace aborted due to bad frame pointer <%p>\n"
217
+.Lbad: .asciz "%sBacktrace aborted due to bad frame pointer <%p>\n"
213218 .align
214219 .Lopcode: .word 0xe92d4800 >> 11 @ stmfd sp!, {... fp, lr}
215220 .word 0x0b000000 @ bl if these bits are set