Illegal instruction caused by <UNDEFINED> instruction: 0x0000bab6

Hello,

I have precompiled 3rd party library (driver) for handling device. Library works on my PC with x64 system but when I try to run very simple "Find -> Open -> Close device" program it gives me Illegal instruction. First I thought there is an error in library and someone is calling undefined function pointer or something... But disassembly shows:

 

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[...]
18a6: eb02 1303 add.w r3, r2, r3, lsl #4
18aa: 69d8 ldr r0, [r3, #28]
18ac: f7ff eda6 blx 13fc <usb_close@plt>
18b0: 9900 ldr r1, [sp, #0]
18b2: f8d9 9000 ldr.w r9, [r9]
18b6: f8d1 3118 ldr.w r3, [r1, #280] ; 0x118
18ba: f1b9 0f00 cmp.w r9, #0
18be: f47f af6e bne.w 179e <RY2_Find+0x9a>
18c2: e7e1 b.n 1888 <RY2_Find+0x184>
18c4: 4b0c ldr r3, [pc, #48] ; (18f8 <RY2_Find+0x1f4>)
18c6: 447b add r3, pc
18c8: f8d3 3118 ldr.w r3, [r3, #280] ; 0x118
18cc: e7dc b.n 1888 <RY2_Find+0x184>
18ce: f7ff ecf0 blx 12b0 <__stack_chk_fail@plt>
18d2: bf00 nop
18d4: 0000b9a0 .word 0x0000b9a0
18d8: 00000100 .word 0x00000100
18dc: 0000bab6 .word 0x0000bab6
18e0: 00000110 .word 0x00000110
18e4: 0000ba4e .word 0x0000ba4e
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

The problem is with instruction "18dc:       0000bab6        .word   0x0000bab6"

When I load core to gdb and step to this line I got:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[...]
0xb6ef68ba <RY2_Find+438> cmp.w r9, #0 │
0xb6ef68be <RY2_Find+442> bne.w 0xb6ef679e <RY2_Find+154> │
0xb6ef68c2 <RY2_Find+446> b.n 0xb6ef6888 <RY2_Find+388> │
0xb6ef68c4 <RY2_Find+448> ldr r3, [pc, #48] ; (0xb6ef68f8 <RY2_Find+500>) │
0xb6ef68c6 <RY2_Find+450> add r3, pc │
0xb6ef68c8 <RY2_Find+452> ldr.w r3, [r3, #280] ; 0x118 │
0xb6ef68cc <RY2_Find+456> b.n 0xb6ef6888 <RY2_Find+388> │
0xb6ef68ce <RY2_Find+458> blx 0xb6ef62b0 │
0xb6ef68d2 <RY2_Find+462> nop │
0xb6ef68d4 <RY2_Find+464> andeq r11, r0, r0, lsr #19 │
0xb6ef68d8 <RY2_Find+468> andeq r0, r0, r0, lsl #2 │
0xb6ef68dc <RY2_Find+472> ; <UNDEFINED> instruction: 0x0000bab6 │
0xb6ef68e0 <RY2_Find+476> andeq r0, r0, r0, lsl r1 │
0xb6ef68e4 <RY2_Find+480> andeq r11, r0, lr, asr #20 │
0xb6ef68e8 <RY2_Find+484> andeq r11, r0, r6, asr #20 │
0xb6ef68ec <RY2_Find+488> andeq r11, r0, r0, asr #20 │
0xb6ef68f0 <RY2_Find+492> andeq r11, r0, r8, lsr r10 │
0xb6ef68f4 <RY2_Find+496> andeq r11, r0, r6, lsr r10 │
0xb6ef68f8 <RY2_Find+500> andeq r11, r0, r10, lsl #18
[...]
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Is it some kind of "special" instruction that my ARM (Raspberry PI B+, ARMv6-compatible processor rev 7 (v6l)) does not have?

I couldn't find any complete list of all ARM instructions with _bytecode_ and which _version of arm core_ supports them. Is there such list? 

0