Oops in kthread

From: Liu haixiang
Date: Sat May 20 2006 - 08:40:09 EST


Hi All,

Today I debug one kernel thread created by kthread_run. And after
several hours run, there is one Oops coming from kthread. Please see
below mesage:
====================
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pc = 00000000
*pde = 00000000
Oops: 0000 [#1]

Pid : 261, Comm: CallbackManager
PC is at 0x0
PC : 00000000 SP : 869bbf8c SR : 40008100 TEA : c016db88 Tainted: P
R0 : 00000000 R1 : 00000000 R2 : 005770c5 R3 : 40008101
R4 : 8b000006 R5 : 00000003 R6 : 07b1ce60 R7 : 00000079
R8 : c01c0800 R9 : 07b1ce60 R10 : 00000003 R11 : 00000000
R12 : 0000004c R13 : 00000000 R14 : 00000079
MACH: 0000025c MACL: 000001c8 GBR : 00000000 PR : c01b514a

Call trace:
[<8442d184>] kthread+0xe4/0x140
[<c01b4f80>] CallbackManager+0x0/0x2c0 [fdma]
[<8440f4c0>] complete+0x0/0xc0
[<8442d080>] kthread_should_stop+0x0/0x20
[<84403004>] kernel_thread_helper+0x4/0x20

Then I do objdump the kernel/kthread.c. Please see attached dumped
contents. And find the offset 0xe4. The assembly line code is:
e4: 08 20 tst r0,r0

Does anybody can explain to me which C code in kthread create this
Oops?Is there any easy way to translate assembly code to C?

best regards

Liu haixiang
kthread.o: file format elf32-sh-linux

Disassembly of section .text:

00000000 <kthread_should_stop>:
0: f2 01 stc r7_bank,r1
2: 12 62 mov.l @r1,r2
4: 02 d1 mov.l 10 <kthread_should_stop+0x10>,r1 ! 0x4
6: 12 61 mov.l @r1,r1
8: 20 31 cmp/eq r2,r1
a: 0b 00 rts
c: 29 00 movt r0
e: 09 00 nop
10: 04 00 mov.b r0,@(r0,r0)
12: 00 00 .word 0x0000
14: 09 00 nop
16: 09 00 nop
18: 09 00 nop
1a: 09 00 nop
1c: 09 00 nop
1e: 09 00 nop

00000020 <kthread>:
20: 86 2f mov.l r8,@-r15
22: fc e1 mov #-4,r1
24: 96 2f mov.l r9,@-r15
26: a6 2f mov.l r10,@-r15
28: b6 2f mov.l r11,@-r15
2a: 43 6b mov r4,r11
2c: c6 2f mov.l r12,@-r15
2e: d6 2f mov.l r13,@-r15
30: e6 2f mov.l r14,@-r15
32: 22 4f sts.l pr,@-r15
34: f2 09 stc r7_bank,r9
36: f4 7f add #-12,r15
38: 78 9d mov.w 12c <kthread+0x10c>,r13 ! 0x23c
3a: 12 1f mov.l r1,@(8,r15)
3c: 3d d1 mov.l 134 <kthread+0x114>,r1 ! 0x0 <kthread_should_stop>
3e: 92 68 mov.l @r9,r8
40: 83 64 mov r8,r4
42: 0b 41 jsr @r1
44: 83 6a mov r8,r10
46: 3c de mov.l 138 <kthread+0x118>,r14 ! 0x23c
48: dc 3a add r13,r10
4a: eb 52 mov.l @(44,r14),r2
4c: 2b 1a mov.l r2,@(44,r10)
4e: 02 01 stc sr,r1
50: 13 60 mov r1,r0
52: f0 cb or #-16,r0
54: 0e 40 ldc r0,sr
56: 13 60 mov r1,r0
58: f0 c9 and #-16,r0
5a: 68 9c mov.w 12e <kthread+0x10e>,r12 ! 0xf0
5c: f0 c9 and #-16,r0
5e: 22 61 mov.l @r2,r1
60: c0 30 cmp/eq r12,r0
62: 01 71 add #1,r1
64: 06 8d bt.s 74 <kthread+0x54>
66: 12 22 mov.l r1,@r2
68: 62 91 mov.w 130 <kthread+0x110>,r1 ! 0xff0f
6a: 02 02 stc sr,r2
6c: 19 22 and r1,r2
6e: e2 01 stc r6_bank,r1
70: 1b 22 or r1,r2
72: 0e 42 ldc r2,sr
74: 31 d1 mov.l 13c <kthread+0x11c>,r1 ! 0x0 <kthread_should_stop>
76: 0b 41 jsr @r1
78: 83 64 mov r8,r4
7a: 92 61 mov.l @r9,r1
7c: ec 52 mov.l @(48,r14),r2
7e: dc 31 add r13,r1
80: 2c 11 mov.l r2,@(48,r1)
82: ac 52 mov.l @(48,r10),r2
84: 02 01 stc sr,r1
86: 13 60 mov r1,r0
88: f0 cb or #-16,r0
8a: 0e 40 ldc r0,sr
8c: 13 60 mov r1,r0
8e: f0 c9 and #-16,r0
90: 22 61 mov.l @r2,r1
92: f0 c9 and #-16,r0
94: c0 30 cmp/eq r12,r0
96: 01 71 add #1,r1
98: 06 8d bt.s a8 <kthread+0x88>
9a: 12 22 mov.l r1,@r2
9c: 48 91 mov.w 130 <kthread+0x110>,r1 ! 0xff0f
9e: 02 02 stc sr,r2
a0: 19 22 and r1,r2
a2: e2 01 stc r6_bank,r1
a4: 1b 22 or r1,r2
a6: 0e 42 ldc r2,sr
a8: 25 d0 mov.l 140 <kthread+0x120>,r0 ! 0x0 <kthread_should_stop>
aa: ff e1 mov #-1,r1
ac: f3 65 mov r15,r5
ae: 00 e6 mov #0,r6
b0: b2 6c mov.l @r11,r12
b2: 00 e4 mov #0,r4
b4: b1 5a mov.l @(4,r11),r10
b6: 11 1f mov.l r1,@(4,r15)
b8: 0b 40 jsr @r0
ba: 12 2f mov.l r1,@r15
bc: 21 d1 mov.l 144 <kthread+0x124>,r1 ! 0x0 <kthread_should_stop>
be: 22 d8 mov.l 148 <kthread+0x128>,r8 ! 0x0 <kthread_should_stop>
c0: 0b 41 jsr @r1
c2: 92 64 mov.l @r9,r4
c4: 92 62 mov.l @r9,r2
c6: 01 e1 mov #1,r1
c8: 20 d9 mov.l 14c <kthread+0x12c>,r9 ! 0x0 <kthread_should_stop>
ca: b3 64 mov r11,r4
cc: 12 22 mov.l r1,@r2
ce: 0b 49 jsr @r9
d0: 08 74 add #8,r4
d2: 1f d1 mov.l 150 <kthread+0x130>,r1 ! 0x0 <kthread_should_stop>
d4: 0b 41 jsr @r1
d6: 09 00 nop
d8: 0b 48 jsr @r8
da: 09 00 nop
dc: 08 20 tst r0,r0
de: 0f 89 bt 100 <kthread+0xe0>
e0: 0b 48 jsr @r8
e2: 09 00 nop
e4: 08 20 tst r0,r0
e6: 11 8b bf 10c <kthread+0xec>
e8: 00 e0 mov #0,r0
ea: 0c 7f add #12,r15
ec: 26 4f lds.l @r15+,pr
ee: f6 6e mov.l @r15+,r14
f0: f6 6d mov.l @r15+,r13
f2: f6 6c mov.l @r15+,r12
f4: f6 6b mov.l @r15+,r11
f6: f6 6a mov.l @r15+,r10
f8: f6 69 mov.l @r15+,r9
fa: 0b 00 rts
fc: f6 68 mov.l @r15+,r8
fe: 09 00 nop
100: 0b 4c jsr @r12
102: a3 64 mov r10,r4
104: 0b 48 jsr @r8
106: 02 1f mov.l r0,@(8,r15)
108: 08 20 tst r0,r0
10a: ed 89 bt e8 <kthread+0xc8>
10c: f2 51 mov.l @(8,r15),r1
10e: 11 d4 mov.l 154 <kthread+0x134>,r4 ! 0x4
110: 11 14 mov.l r1,@(4,r4)
112: 0b 49 jsr @r9
114: 08 74 add #8,r4
116: 00 e0 mov #0,r0
118: 0c 7f add #12,r15
11a: 26 4f lds.l @r15+,pr
11c: f6 6e mov.l @r15+,r14
11e: f6 6d mov.l @r15+,r13
120: f6 6c mov.l @r15+,r12
122: f6 6b mov.l @r15+,r11
124: f6 6a mov.l @r15+,r10
126: f6 69 mov.l @r15+,r9
128: 0b 00 rts
12a: f6 68 mov.l @r15+,r8
12c: 3c 02 mov.b @(r0,r3),r2
12e: f0 00 .word 0x00f0
130: 0f ff .word 0xff0f
132: 09 00 nop
134: 00 00 .word 0x0000
136: 00 00 .word 0x0000
138: 3c 02 mov.b @(r0,r3),r2
...
152: 00 00 .word 0x0000
154: 04 00 mov.b r0,@(r0,r0)
156: 00 00 .word 0x0000
158: 09 00 nop
15a: 09 00 nop
15c: 09 00 nop
15e: 09 00 nop

00000160 <keventd_create_kthread>:
160: 14 d0 mov.l 1b4 <keventd_create_kthread+0x54>,r0 ! 0x0 <kthread_should_stop>
162: 86 2f mov.l r8,@-r15
164: 96 2f mov.l r9,@-r15
166: 43 69 mov r4,r9
168: 22 4f sts.l pr,@-r15
16a: 13 d4 mov.l 1b8 <keventd_create_kthread+0x58>,r4 ! 0x20 <kthread>
16c: 20 96 mov.w 1b0 <keventd_create_kthread+0x50>,r6 ! 0x611
16e: 0b 40 jsr @r0
170: 93 65 mov r9,r5
172: 11 40 cmp/pz r0
174: 14 8f bf.s 1a0 <keventd_create_kthread+0x40>
176: 03 68 mov r0,r8
178: 10 d1 mov.l 1bc <keventd_create_kthread+0x5c>,r1 ! 0x0 <kthread_should_stop>
17a: 93 64 mov r9,r4
17c: 0b 41 jsr @r1
17e: 08 74 add #8,r4
180: 0f d0 mov.l 1c0 <keventd_create_kthread+0x60>,r0 ! 0x0 <kthread_should_stop>
182: 83 65 mov r8,r5
184: 0b 40 jsr @r0
186: 00 e4 mov #0,r4
188: 05 19 mov.l r0,@(20,r9)
18a: 93 64 mov r9,r4
18c: 26 4f lds.l @r15+,pr
18e: 0d d1 mov.l 1c4 <keventd_create_kthread+0x64>,r1 ! 0x0 <kthread_should_stop>
190: 18 74 add #24,r4
192: f6 69 mov.l @r15+,r9
194: 2b 41 jmp @r1
196: f6 68 mov.l @r15+,r8
198: 09 00 nop
19a: 09 00 nop
19c: 09 00 nop
19e: 09 00 nop
1a0: 05 19 mov.l r0,@(20,r9)
1a2: 93 64 mov r9,r4
1a4: 26 4f lds.l @r15+,pr
1a6: 07 d1 mov.l 1c4 <keventd_create_kthread+0x64>,r1 ! 0x0 <kthread_should_stop>
1a8: 18 74 add #24,r4
1aa: f6 69 mov.l @r15+,r9
1ac: 2b 41 jmp @r1
1ae: f6 68 mov.l @r15+,r8
1b0: 11 06 .word 0x0611
1b2: 09 00 nop
1b4: 00 00 .word 0x0000
1b6: 00 00 .word 0x0000
1b8: 20 00 .word 0x0020
...
1c6: 00 00 .word 0x0000
1c8: 09 00 nop
1ca: 09 00 nop
1cc: 09 00 nop
1ce: 09 00 nop
1d0: 09 00 nop
1d2: 09 00 nop
1d4: 09 00 nop
1d6: 09 00 nop
1d8: 09 00 nop
1da: 09 00 nop
1dc: 09 00 nop
1de: 09 00 nop

000001e0 <kthread_create>:
1e0: 76 2f mov.l r7,@-r15
1e2: 00 e2 mov #0,r2
1e4: 86 2f mov.l r8,@-r15
1e6: 63 68 mov r6,r8
1e8: 22 4f sts.l pr,@-r15
1ea: a4 7f add #-92,r15
1ec: 2a d3 mov.l 298 <kthread_create+0xb8>,r3 ! 0x4b87ad6e
1ee: f3 61 mov r15,r1
1f0: 28 71 add #40,r1
1f2: f3 67 mov r15,r7
1f4: 1a 1f mov.l r1,@(40,r15)
1f6: 24 77 add #36,r7
1f8: 1b 1f mov.l r1,@(44,r15)
1fa: 14 71 add #20,r1
1fc: 27 17 mov.l r2,@(28,r7)
1fe: 33 11 mov.l r3,@(12,r1)
200: d0 71 add #-48,r1
202: 28 17 mov.l r2,@(32,r7)
204: 2a 17 mov.l r2,@(40,r7)
206: 2b 17 mov.l r2,@(44,r7)
208: 2c 17 mov.l r2,@(48,r7)
20a: 13 1f mov.l r1,@(12,r15)
20c: 14 1f mov.l r1,@(16,r15)
20e: 10 71 add #16,r1
210: 17 1f mov.l r1,@(28,r15)
212: 18 1f mov.l r1,@(32,r15)
214: 21 d1 mov.l 29c <kthread_create+0xbc>,r1 ! 0x0 <kthread_should_stop>
216: 22 1f mov.l r2,@(8,r15)
218: 26 1f mov.l r2,@(24,r15)
21a: 42 2f mov.l r4,@r15
21c: 12 64 mov.l @r1,r4
21e: 20 d6 mov.l 2a0 <kthread_create+0xc0>,r6 ! 0x160 <keventd_create_kthread>
220: 48 24 tst r4,r4
222: 29 1f mov.l r2,@(36,r15)
224: 2e 1f mov.l r2,@(56,r15)
226: 2f 1f mov.l r2,@(60,r15)
228: 6c 1f mov.l r6,@(48,r15)
22a: fd 1f mov.l r15,@(52,r15)
22c: 18 8f bf.s 260 <kthread_create+0x80>
22e: 51 1f mov.l r5,@(4,r15)
230: 0b 46 jsr @r6
232: f3 64 mov r15,r4
234: f5 50 mov.l @(20,r15),r0
236: 2d 91 mov.w 294 <kthread_create+0xb4>,r1 ! 0xfc18
238: 16 30 cmp/hi r1,r0
23a: 1c 8b bf 276 <kthread_create+0x96>
23c: 5c 7f add #92,r15
23e: 26 4f lds.l @r15+,pr
240: f6 68 mov.l @r15+,r8
242: 0b 00 rts
244: 04 7f add #4,r15
246: 09 00 nop
248: 09 00 nop
24a: 09 00 nop
24c: 09 00 nop
24e: 09 00 nop
250: 09 00 nop
252: 09 00 nop
254: 09 00 nop
256: 09 00 nop
258: 09 00 nop
25a: 09 00 nop
25c: 09 00 nop
25e: 09 00 nop
260: 10 d0 mov.l 2a4 <kthread_create+0xc4>,r0 ! 0x0 <kthread_should_stop>
262: 0b 40 jsr @r0
264: 73 65 mov r7,r5
266: 10 d1 mov.l 2a8 <kthread_create+0xc8>,r1 ! 0x0 <kthread_should_stop>
268: f3 64 mov r15,r4
26a: 0b 41 jsr @r1
26c: 18 74 add #24,r4
26e: f5 50 mov.l @(20,r15),r0
270: 10 91 mov.w 294 <kthread_create+0xb4>,r1 ! 0xfc18
272: 16 30 cmp/hi r1,r0
274: e2 89 bt 23c <kthread_create+0x5c>
276: 03 64 mov r0,r4
278: 0c d0 mov.l 2ac <kthread_create+0xcc>,r0 ! 0x0 <kthread_should_stop>
27a: 0c 91 mov.w 296 <kthread_create+0xb6>,r1 ! 0x1a4
27c: 10 e5 mov #16,r5
27e: 83 66 mov r8,r6
280: 64 e7 mov #100,r7
282: 1c 34 add r1,r4
284: 0b 40 jsr @r0
286: fc 37 add r15,r7
288: f5 50 mov.l @(20,r15),r0
28a: 5c 7f add #92,r15
28c: 26 4f lds.l @r15+,pr
28e: f6 68 mov.l @r15+,r8
290: 0b 00 rts
292: 04 7f add #4,r15
294: 18 fc .word 0xfc18
296: a4 01 mov.b r10,@(r0,r1)
298: 6e ad bra fffffd78 <kthread_stop+0xfffffa78>
29a: 87 4b ldc.l @r11+,r0_bank
29c: 00 00 .word 0x0000
29e: 00 00 .word 0x0000
2a0: 60 01 .word 0x0160
...
2ae: 00 00 .word 0x0000
2b0: 09 00 nop
2b2: 09 00 nop
2b4: 09 00 nop
2b6: 09 00 nop
2b8: 09 00 nop
2ba: 09 00 nop
2bc: 09 00 nop
2be: 09 00 nop

000002c0 <kthread_bind>:
2c0: 86 2f mov.l r8,@-r15
2c2: 43 68 mov r4,r8
2c4: 96 2f mov.l r9,@-r15
2c6: 53 69 mov r5,r9
2c8: 22 4f sts.l pr,@-r15
2ca: 42 60 mov.l @r4,r0
2cc: 01 88 cmp/eq #1,r0
2ce: 07 8b bf 2e0 <kthread_bind+0x20>
2d0: 26 4f lds.l @r15+,pr
2d2: 01 e1 mov #1,r1
2d4: 9d 41 shld r9,r1
2d6: f6 69 mov.l @r15+,r9
2d8: 40 78 add #64,r8
2da: 12 18 mov.l r1,@(8,r8)
2dc: 0b 00 rts
2de: f6 68 mov.l @r15+,r8
2e0: 04 d0 mov.l 2f4 <kthread_bind+0x34>,r0 ! 0x0 <kthread_should_stop>
2e2: 05 d4 mov.l 2f8 <kthread_bind+0x38>,r4 ! 0x0 <kthread_should_stop>
2e4: 05 d5 mov.l 2fc <kthread_bind+0x3c>,r5 ! 0x18
2e6: 04 96 mov.w 2f2 <kthread_bind+0x32>,r6 ! 0x9e
2e8: 0b 40 jsr @r0
2ea: 09 00 nop
2ec: 09 00 nop
2ee: f0 af bra 2d2 <kthread_bind+0x12>
2f0: 26 4f lds.l @r15+,pr
2f2: 9e 00 mov.l @(r0,r9),r0
...
2fc: 18 00 sett
...

00000300 <kthread_stop>:
300: 86 2f mov.l r8,@-r15
302: 43 68 mov r4,r8
304: 96 2f mov.l r9,@-r15
306: a6 2f mov.l r10,@-r15
308: b6 2f mov.l r11,@-r15
30a: c6 2f mov.l r12,@-r15
30c: d6 2f mov.l r13,@-r15
30e: 22 4f sts.l pr,@-r15
310: 53 dc mov.l 460 <kthread_stop+0x160>,r12 ! 0x0 <kthread_should_stop>
312: fc 7f add #-4,r15
314: 02 01 stc sr,r1
316: 13 60 mov r1,r0
318: f0 cb or #-16,r0
31a: 0e 40 ldc r0,sr
31c: 13 60 mov r1,r0
31e: f0 c9 and #-16,r0
320: 9b 9b mov.w 45a <kthread_stop+0x15a>,r11 ! 0xf0
322: f0 c9 and #-16,r0
324: c2 63 mov.l @r12,r3
326: b0 30 cmp/eq r11,r0
328: ff 73 add #-1,r3
32a: 06 8d bt.s 33a <kthread_stop+0x3a>
32c: 32 2c mov.l r3,@r12
32e: 95 91 mov.w 45c <kthread_stop+0x15c>,r1 ! 0xff0f
330: 02 02 stc sr,r2
332: 19 22 and r1,r2
334: e2 01 stc r6_bank,r1
336: 1b 22 or r1,r2
338: 0e 42 ldc r2,sr
33a: 11 43 cmp/pz r3
33c: 70 8b bf 420 <kthread_stop+0x120>
33e: 02 01 stc sr,r1
340: 13 60 mov r1,r0
342: f0 cb or #-16,r0
344: 0e 40 ldc r0,sr
346: 13 60 mov r1,r0
348: f0 c9 and #-16,r0
34a: 82 51 mov.l @(8,r8),r1
34c: f0 c9 and #-16,r0
34e: b0 30 cmp/eq r11,r0
350: 01 71 add #1,r1
352: 06 8d bt.s 362 <kthread_stop+0x62>
354: 12 18 mov.l r1,@(8,r8)
356: 81 91 mov.w 45c <kthread_stop+0x15c>,r1 ! 0xff0f
358: 02 02 stc sr,r2
35a: 19 22 and r1,r2
35c: e2 01 stc r6_bank,r1
35e: 1b 22 or r1,r2
360: 0e 42 ldc r2,sr
362: 40 d9 mov.l 464 <kthread_stop+0x164>,r9 ! 0xc
364: 00 ed mov #0,r13
366: 93 61 mov r9,r1
368: d2 29 mov.l r13,@r9
36a: 04 71 add #4,r1
36c: 11 19 mov.l r1,@(4,r9)
36e: 11 11 mov.l r1,@(4,r1)
370: 3d d0 mov.l 468 <kthread_stop+0x168>,r0 ! 0x0 <kthread_should_stop>
372: 93 6a mov r9,r10
374: f8 7a add #-8,r10
376: 83 64 mov r8,r4
378: 0b 40 jsr @r0
37a: 82 2a mov.l r8,@r10
37c: 02 01 stc sr,r1
37e: 13 60 mov r1,r0
380: f0 cb or #-16,r0
382: 0e 40 ldc r0,sr
384: 13 60 mov r1,r0
386: f0 c9 and #-16,r0
388: 82 53 mov.l @(8,r8),r3
38a: f0 c9 and #-16,r0
38c: b0 30 cmp/eq r11,r0
38e: ff 73 add #-1,r3
390: 06 8d bt.s 3a0 <kthread_stop+0xa0>
392: 32 18 mov.l r3,@(8,r8)
394: 62 91 mov.w 45c <kthread_stop+0x15c>,r1 ! 0xff0f
396: 02 02 stc sr,r2
398: 19 22 and r1,r2
39a: e2 01 stc r6_bank,r1
39c: 1b 22 or r1,r2
39e: 0e 42 ldc r2,sr
3a0: 38 23 tst r3,r3
3a2: 2d 89 bt 400 <kthread_stop+0x100>
3a4: 31 d1 mov.l 46c <kthread_stop+0x16c>,r1 ! 0x0 <kthread_should_stop>
3a6: 0b 41 jsr @r1
3a8: 93 64 mov r9,r4
3aa: d2 2a mov.l r13,@r10
3ac: a1 58 mov.l @(4,r10),r8
3ae: 02 01 stc sr,r1
3b0: 13 60 mov r1,r0
3b2: f0 cb or #-16,r0
3b4: 0e 40 ldc r0,sr
3b6: 13 60 mov r1,r0
3b8: f0 c9 and #-16,r0
3ba: c2 63 mov.l @r12,r3
3bc: f0 c9 and #-16,r0
3be: b0 30 cmp/eq r11,r0
3c0: 01 73 add #1,r3
3c2: 06 8d bt.s 3d2 <kthread_stop+0xd2>
3c4: 32 2c mov.l r3,@r12
3c6: 49 91 mov.w 45c <kthread_stop+0x15c>,r1 ! 0xff0f
3c8: 02 02 stc sr,r2
3ca: 19 22 and r1,r2
3cc: e2 01 stc r6_bank,r1
3ce: 1b 22 or r1,r2
3d0: 0e 42 ldc r2,sr
3d2: 15 43 cmp/pl r3
3d4: 34 8b bf 440 <kthread_stop+0x140>
3d6: 83 60 mov r8,r0
3d8: 04 7f add #4,r15
3da: 26 4f lds.l @r15+,pr
3dc: f6 6d mov.l @r15+,r13
3de: f6 6c mov.l @r15+,r12
3e0: f6 6b mov.l @r15+,r11
3e2: f6 6a mov.l @r15+,r10
3e4: f6 69 mov.l @r15+,r9
3e6: 0b 00 rts
3e8: f6 68 mov.l @r15+,r8
3ea: 09 00 nop
3ec: 09 00 nop
3ee: 09 00 nop
3f0: 09 00 nop
3f2: 09 00 nop
3f4: 09 00 nop
3f6: 09 00 nop
3f8: 09 00 nop
3fa: 09 00 nop
3fc: 09 00 nop
3fe: 09 00 nop
400: 1b d1 mov.l 470 <kthread_stop+0x170>,r1 ! 0x0 <kthread_should_stop>
402: 0b 41 jsr @r1
404: 83 64 mov r8,r4
406: cd af bra 3a4 <kthread_stop+0xa4>
408: 09 00 nop
40a: 09 00 nop
40c: 09 00 nop
40e: 09 00 nop
410: 09 00 nop
412: 09 00 nop
414: 09 00 nop
416: 09 00 nop
418: 09 00 nop
41a: 09 00 nop
41c: 09 00 nop
41e: 09 00 nop
420: 14 d1 mov.l 474 <kthread_stop+0x174>,r1 ! 0x0 <kthread_should_stop>
422: 0b 41 jsr @r1
424: c3 64 mov r12,r4
426: 8a af bra 33e <kthread_stop+0x3e>
428: 09 00 nop
42a: 09 00 nop
42c: 09 00 nop
42e: 09 00 nop
430: 09 00 nop
432: 09 00 nop
434: 09 00 nop
436: 09 00 nop
438: 09 00 nop
43a: 09 00 nop
43c: 09 00 nop
43e: 09 00 nop
440: 0d d1 mov.l 478 <kthread_stop+0x178>,r1 ! 0x0 <kthread_should_stop>
442: 0b 41 jsr @r1
444: c3 64 mov r12,r4
446: 83 60 mov r8,r0
448: 04 7f add #4,r15
44a: 26 4f lds.l @r15+,pr
44c: f6 6d mov.l @r15+,r13
44e: f6 6c mov.l @r15+,r12
450: f6 6b mov.l @r15+,r11
452: f6 6a mov.l @r15+,r10
454: f6 69 mov.l @r15+,r9
456: 0b 00 rts
458: f6 68 mov.l @r15+,r8
45a: f0 00 .word 0x00f0
45c: 0f ff .word 0xff0f
45e: 09 00 nop
460: 00 00 .word 0x0000
462: 00 00 .word 0x0000
464: 0c 00 mov.b @(r0,r0),r0
...
47a: 00 00 .word 0x0000
47c: 09 00 nop
47e: 09 00 nop
Disassembly of section .init.text:

00000000 <helper_init>:
0: 0c d0 mov.l 34 <helper_init+0x34>,r0 ! 0x0 <helper_init>
2: 22 4f sts.l pr,@-r15
4: 0c d4 mov.l 38 <helper_init+0x38>,r4 ! 0x2c
6: 0b 40 jsr @r0
8: 01 e5 mov #1,r5
a: 0c d1 mov.l 3c <helper_init+0x3c>,r1 ! 0x0 <helper_init>
c: 08 20 tst r0,r0
e: 07 8d bt.s 20 <helper_init+0x20>
10: 02 21 mov.l r0,@r1
12: 26 4f lds.l @r15+,pr
14: 0b 00 rts
16: 00 e0 mov #0,r0
18: 09 00 nop
1a: 09 00 nop
1c: 09 00 nop
1e: 09 00 nop
20: 07 d0 mov.l 40 <helper_init+0x40>,r0 ! 0x0 <helper_init>
22: 08 d4 mov.l 44 <helper_init+0x44>,r4 ! 0x0 <helper_init>
24: 08 d5 mov.l 48 <helper_init+0x48>,r5 ! 0x18
26: 04 96 mov.w 32 <helper_init+0x32>,r6 ! 0xc5
28: 0b 40 jsr @r0
2a: 09 00 nop
2c: 09 00 nop
2e: f1 af bra 14 <helper_init+0x14>
30: 26 4f lds.l @r15+,pr
32: c5 00 mov.w r12,@(r0,r0)
34: 00 00 .word 0x0000
36: 00 00 .word 0x0000
38: 2c 00 mov.b @(r0,r2),r0
...
46: 00 00 .word 0x0000
48: 18 00 sett
4a: 00 00 .word 0x0000
4c: 09 00 nop
4e: 09 00 nop
50: 09 00 nop
52: 09 00 nop
54: 09 00 nop
56: 09 00 nop
58: 09 00 nop
5a: 09 00 nop
5c: 09 00 nop
5e: 09 00 nop