(gdb) x/256i __irq_svc ## macro svc_entry { 0xc0297580 <__irq_svc>: sub sp, sp, #68 ; 0x44 0xc0297584 <__irq_svc+4>: stm sp, {r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12} 0xc0297588 <__irq_svc+8>: ldm r0, {r1, r2, r3} 0xc029758c <__irq_svc+12>: add r5, sp, #48 ; 0x30 0xc0297590 <__irq_svc+16>: mvn r4, #0 0xc0297594 <__irq_svc+20>: add r0, sp, #68 ; 0x44 0xc0297598 <__irq_svc+24>: push {r1} ; (str r1, [sp, #-4]!) 0xc029759c <__irq_svc+28>: mov r1, lr 0xc02975a0 <__irq_svc+32>: stm r5, {r0, r1, r2, r3, r4} # NOT REACHED ## } svc_entry ## macro irq_handler { ## macro arch_irq_handler_default { 0xc02975a4 <__irq_svc+36>: mov r5, #-167772160 ; 0xf6000000 => 0xc02975a8 <__irq_svc+40>: ldr r6, [r5, #16] 0xc02975ac <__irq_svc+44>: teq r6, #0 0xc02975b0 <__irq_svc+48>: beq 0xc0297604 <__irq_svc+132> 0xc02975b4 <__irq_svc+52>: ldr r0, [r5, #20] 0xc02975b8 <__irq_svc+56>: mov lr, #1 0xc02975bc <__irq_svc+60>: tst r6, lr, lsl r0 0xc02975c0 <__irq_svc+64>: bne 0xc0297600 <__irq_svc+128> 0xc02975c4 <__irq_svc+68>: mov r0, #0 0xc02975c8 <__irq_svc+72>: lsls lr, r6, #16 0xc02975cc <__irq_svc+76>: addeq r0, r0, #16 0xc02975d0 <__irq_svc+80>: lsreq r6, r6, #16 0xc02975d4 <__irq_svc+84>: tst r6, #255 ; 0xff 0xc02975d8 <__irq_svc+88>: addeq r0, r0, #8 0xc02975dc <__irq_svc+92>: lsreq r6, r6, #8 0xc02975e0 <__irq_svc+96>: tst r6, #15 0xc02975e4 <__irq_svc+100>: addeq r0, r0, #4 0xc02975e8 <__irq_svc+104>: lsreq r6, r6, #4 0xc02975ec <__irq_svc+108>: tst r6, #3 0xc02975f0 <__irq_svc+112>: addeq r0, r0, #2 0xc02975f4 <__irq_svc+116>: lsreq r6, r6, #2 0xc02975f8 <__irq_svc+120>: tst r6, #1 0xc02975fc <__irq_svc+124>: addeq r0, r0, #1 0xc0297600 <__irq_svc+128>: adds r0, r0, #16 ## get_irqnr_preamble ## 1: get_irqnr_and_base 0xc0297604 <__irq_svc+132>: movne r1, sp 0xc0297608 <__irq_svc+136>: subne lr, pc, #108 ; 0x6c 0xc029760c <__irq_svc+140>: bne 0xc0026000 ## } arch_irq_handler_default ## } irq_handler 0xc0297610 <__irq_svc+144>: ldr r4, [sp, #64] ; 0x40 # NOT REACHED ## macro svc_exit { 0xc0297614 <__irq_svc+148>: msr SPSR_fsxc, r4 0xc0297618 <__irq_svc+152>: ldm sp, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, sp, lr, pc}^ ## } svc_exit 0xc029761c: nop ; (mov r0, r0) 0xc0297620 <__und_svc>: sub sp, sp, #132 ; 0x84 0xc0297624 <__und_svc+4>: stm sp, {r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12} 0xc0297628 <__und_svc+8>: ldm r0, {r1, r2, r3} 0xc029762c <__und_svc+12>: add r5, sp, #48 ; 0x30 0xc0297630 <__und_svc+16>: mvn r4, #0 0xc0297634 <__und_svc+20>: add r0, sp, #132 ; 0x84 0xc0297638 <__und_svc+24>: push {r1} ; (str r1, [sp, #-4]!) 0xc029763c <__und_svc+28>: mov r1, lr 0xc0297640 <__und_svc+32>: stm r5, {r0, r1, r2, r3, r4} 0xc0297644 <__und_svc+36>: ldr r0, [r2, #-4] 0xc0297648 <__und_svc+40>: add r9, pc, #8 0xc029764c <__und_svc+44>: bl 0xc029786c 0xc0297650 <__und_svc+48>: mov r0, sp 0xc0297654 <__und_svc+52>: bl 0xc0026098 0xc0297658 <__und_svc+56>: msr CPSR_c, #147 ; 0x93 0xc029765c <__und_svc+60>: ldr r2, [sp, #64] ; 0x40 0xc0297660 <__und_svc+64>: msr SPSR_fsxc, r2 0xc0297664 <__und_svc+68>: ldm sp, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, sp, lr, pc}^ 0xc0297668: nop ; (mov r0, r0) 0xc029766c: nop ; (mov r0, r0) 0xc0297670: nop ; (mov r0, r0) 0xc0297674: nop ; (mov r0, r0) 0xc0297678: nop ; (mov r0, r0) 0xc029767c: nop ; (mov r0, r0) 0xc0297680 <__pabt_svc>: sub sp, sp, #68 ; 0x44 0xc0297684 <__pabt_svc+4>: stm sp, {r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12} 0xc0297688 <__pabt_svc+8>: ldm r0, {r1, r2, r3} 0xc029768c <__pabt_svc+12>: add r5, sp, #48 ; 0x30 0xc0297690 <__pabt_svc+16>: mvn r4, #0 0xc0297694 <__pabt_svc+20>: add r0, sp, #68 ; 0x44 0xc0297698 <__pabt_svc+24>: push {r1} ; (str r1, [sp, #-4]!) 0xc029769c <__pabt_svc+28>: mov r1, lr 0xc02976a0 <__pabt_svc+32>: stm r5, {r0, r1, r2, r3, r4} 0xc02976a4 <__pabt_svc+36>: mrs r9, CPSR 0xc02976a8 <__pabt_svc+40>: tst r3, #128 ; 0x80 0xc02976ac <__pabt_svc+44>: biceq r9, r9, #128 ; 0x80 0xc02976b0 <__pabt_svc+48>: mov r0, r2 0xc02976b4 <__pabt_svc+52>: bl 0xc002dc20 0xc02976b8 <__pabt_svc+56>: msr CPSR_c, r9 0xc02976bc <__pabt_svc+60>: mov r2, sp 0xc02976c0 <__pabt_svc+64>: bl 0xc00261d0 0xc02976c4 <__pabt_svc+68>: msr CPSR_c, #147 ; 0x93 0xc02976c8 <__pabt_svc+72>: ldr r2, [sp, #64] ; 0x40 0xc02976cc <__pabt_svc+76>: msr SPSR_fsxc, r2 0xc02976d0 <__pabt_svc+80>: ldm sp, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, sp, lr, pc}^ 0xc02976d4: nop ; (mov r0, r0) 0xc02976d8: nop ; (mov r0, r0) 0xc02976dc: nop ; (mov r0, r0) 0xc02976e0: eorsgt pc, r6, r12, ror #1 0xc02976e4: eorsgt pc, r6, r8, ror #1 0xc02976e8: nop ; (mov r0, r0) 0xc02976ec: nop ; (mov r0, r0) 0xc02976f0: nop ; (mov r0, r0) 0xc02976f4: nop ; (mov r0, r0) 0xc02976f8: nop ; (mov r0, r0) 0xc02976fc: nop ; (mov r0, r0) 0xc0297700 <__dabt_usr>: sub sp, sp, #72 ; 0x48 0xc0297704 <__dabt_usr+4>: stmib sp, {r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12} 0xc0297708 <__dabt_usr+8>: ldm r0, {r1, r2, r3} 0xc029770c <__dabt_usr+12>: add r0, sp, #60 ; 0x3c 0xc0297710 <__dabt_usr+16>: mvn r4, #0 0xc0297714 <__dabt_usr+20>: str r1, [sp] 0xc0297718 <__dabt_usr+24>: stm r0, {r2, r3, r4} 0xc029771c <__dabt_usr+28>: stmdb r0, {sp, lr}^ 0xc0297720 <__dabt_usr+32>: ldr r0, [pc, #-72] ; 0xc02976e0 0xc0297724 <__dabt_usr+36>: ldr r0, [r0] 0xc0297728 <__dabt_usr+40>: mcr 15, 0, r0, cr1, cr0, {0} 0xc029772c <__dabt_usr+44>: cmp r2, #-1090519040 ; 0xbf000000 0xc0297730 <__dabt_usr+48>: blcs 0xc0026a20 0xc0297734 <__dabt_usr+52>: bl 0xc002dbe0 0xc0297738 <__dabt_usr+56>: msr CPSR_c, #19 0xc029773c <__dabt_usr+60>: mov r2, sp 0xc0297740 <__dabt_usr+64>: add lr, pc, #504 ; 0x1f8 0xc0297744 <__dabt_usr+68>: b 0xc0026268 0xc0297748: nop ; (mov r0, r0) 0xc029774c: nop ; (mov r0, r0) 0xc0297750: nop ; (mov r0, r0) 0xc0297754: nop ; (mov r0, r0) 0xc0297758: nop ; (mov r0, r0) 0xc029775c: nop ; (mov r0, r0) 0xc0297760 <__irq_usr>: sub sp, sp, #72 ; 0x48 0xc0297764 <__irq_usr+4>: stmib sp, {r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12} 0xc0297768 <__irq_usr+8>: ldm r0, {r1, r2, r3} 0xc029776c <__irq_usr+12>: add r0, sp, #60 ; 0x3c 0xc0297770 <__irq_usr+16>: mvn r4, #0 0xc0297774 <__irq_usr+20>: str r1, [sp] 0xc0297778 <__irq_usr+24>: stm r0, {r2, r3, r4} 0xc029777c <__irq_usr+28>: stmdb r0, {sp, lr}^ 0xc0297780 <__irq_usr+32>: ldr r0, [pc, #-168] ; 0xc02976e0 0xc0297784 <__irq_usr+36>: ldr r0, [r0] 0xc0297788 <__irq_usr+40>: mcr 15, 0, r0, cr1, cr0, {0} 0xc029778c <__irq_usr+44>: cmp r2, #-1090519040 ; 0xbf000000 0xc0297790 <__irq_usr+48>: blcs 0xc0026a20 0xc0297794 <__irq_usr+52>: lsr r9, sp, #13 0xc0297798 <__irq_usr+56>: lsl r9, r9, #13 0xc029779c <__irq_usr+60>: mov r5, #-167772160 ; 0xf6000000 0xc02977a0 <__irq_usr+64>: ldr r6, [r5, #16] 0xc02977a4 <__irq_usr+68>: teq r6, #0 0xc02977a8 <__irq_usr+72>: beq 0xc02977fc <__irq_usr+156> 0xc02977ac <__irq_usr+76>: ldr r0, [r5, #20] 0xc02977b0 <__irq_usr+80>: mov lr, #1 0xc02977b4 <__irq_usr+84>: tst r6, lr, lsl r0 0xc02977b8 <__irq_usr+88>: bne 0xc02977f8 <__irq_usr+152> 0xc02977bc <__irq_usr+92>: mov r0, #0 0xc02977c0 <__irq_usr+96>: lsls lr, r6, #16 0xc02977c4 <__irq_usr+100>: addeq r0, r0, #16 0xc02977c8 <__irq_usr+104>: lsreq r6, r6, #16 0xc02977cc <__irq_usr+108>: tst r6, #255 ; 0xff 0xc02977d0 <__irq_usr+112>: addeq r0, r0, #8 0xc02977d4 <__irq_usr+116>: lsreq r6, r6, #8 0xc02977d8 <__irq_usr+120>: tst r6, #15 0xc02977dc <__irq_usr+124>: addeq r0, r0, #4 0xc02977e0 <__irq_usr+128>: lsreq r6, r6, #4 0xc02977e4 <__irq_usr+132>: tst r6, #3 0xc02977e8 <__irq_usr+136>: addeq r0, r0, #2 0xc02977ec <__irq_usr+140>: lsreq r6, r6, #2 0xc02977f0 <__irq_usr+144>: tst r6, #1 0xc02977f4 <__irq_usr+148>: addeq r0, r0, #1 0xc02977f8 <__irq_usr+152>: adds r0, r0, #16 0xc02977fc <__irq_usr+156>: movne r1, sp 0xc0297800 <__irq_usr+160>: subne lr, pc, #108 ; 0x6c 0xc0297804 <__irq_usr+164>: bne 0xc0026000 0xc0297808 <__irq_usr+168>: mov r8, #0 0xc029780c <__irq_usr+172>: b 0xc0026a9c 0xc0297810: nop ; (mov r0, r0) 0xc0297814: nop ; (mov r0, r0) 0xc0297818: nop ; (mov r0, r0) 0xc029781c: nop ; (mov r0, r0) 0xc0297820 <__und_usr>: sub sp, sp, #72 ; 0x48 0xc0297824 <__und_usr+4>: stmib sp, {r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12} 0xc0297828 <__und_usr+8>: ldm r0, {r1, r2, r3} 0xc029782c <__und_usr+12>: add r0, sp, #60 ; 0x3c 0xc0297830 <__und_usr+16>: mvn r4, #0 0xc0297834 <__und_usr+20>: str r1, [sp] 0xc0297838 <__und_usr+24>: stm r0, {r2, r3, r4} 0xc029783c <__und_usr+28>: stmdb r0, {sp, lr}^ 0xc0297840 <__und_usr+32>: ldr r0, [pc, #-360] ; 0xc02976e0 0xc0297844 <__und_usr+36>: ldr r0, [r0] 0xc0297848 <__und_usr+40>: mcr 15, 0, r0, cr1, cr0, {0} 0xc029784c <__und_usr+44>: add r9, pc, #236 ; 0xec 0xc0297850 <__und_usr+48>: add lr, pc, #148 ; 0x94 0xc0297854 <__und_usr+52>: tst r3, #32 0xc0297858 <__und_usr+56>: subeq r4, r2, #4 0xc029785c <__und_usr+60>: subne r4, r2, #2 0xc0297860 <__und_usr+64>: ldrteq r0, [r4] 0xc0297864 <__und_usr+68>: beq 0xc029786c 0xc0297868 <__und_usr+72>: b 0xc02978ec <__und_usr_unknown> 0xc029786c : tst r0, #134217728 ; 0x8000000 0xc0297870 : tstne r0, #67108864 ; 0x4000000 0xc0297874 : moveq pc, lr 0xc0297878 : lsr r10, sp, #13 0xc029787c : lsl r10, r10, #13 0xc0297880 : and r8, r0, #3840 ; 0xf00 0xc0297884 : mov r7, #1 0xc0297888 : add r6, r10, #80 ; 0x50 0xc029788c : strb r7, [r6, r8, lsr #8] 0xc0297890 : add pc, pc, r8, lsr #6 0xc0297894 : nop ; (mov r0, r0) 0xc0297898 : mov pc, lr 0xc029789c : b 0xc02978d8 0xc02978a0 : b 0xc02978d8 0xc02978a4 : mov pc, lr 0xc02978a8 : mov pc, lr 0xc02978ac : mov pc, lr 0xc02978b0 : mov pc, lr 0xc02978b4 : mov pc, lr 0xc02978b8 : mov pc, lr 0xc02978bc : mov pc, lr 0xc02978c0 : mov pc, lr 0xc02978c4 : mov pc, lr 0xc02978c8 : mov pc, lr 0xc02978cc : mov pc, lr 0xc02978d0 : mov pc, lr 0xc02978d4 : mov pc, lr 0xc02978d8 : msr CPSR_c, #19 0xc02978dc : ldr r4, [pc, #-512] ; 0xc02976e4 0xc02978e0 : add r10, r10, #288 ; 0x120 0xc02978e4 : ldr pc, [r4] 0xc02978e8 : mov pc, lr 0xc02978ec <__und_usr_unknown>: msr CPSR_c, #19 0xc02978f0 <__und_usr_unknown+4>: mov r0, sp 0xc02978f4 <__und_usr_unknown+8>: add lr, pc, #68 ; 0x44 0xc02978f8 <__und_usr_unknown+12>: b 0xc0026098 0xc02978fc: nop ; (mov r0, r0) 0xc0297900 <__pabt_usr>: sub sp, sp, #72 ; 0x48 0xc0297904 <__pabt_usr+4>: stmib sp, {r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12} 0xc0297908 <__pabt_usr+8>: ldm r0, {r1, r2, r3} 0xc029790c <__pabt_usr+12>: add r0, sp, #60 ; 0x3c 0xc0297910 <__pabt_usr+16>: mvn r4, #0 0xc0297914 <__pabt_usr+20>: str r1, [sp] 0xc0297918 <__pabt_usr+24>: stm r0, {r2, r3, r4} 0xc029791c <__pabt_usr+28>: stmdb r0, {sp, lr}^ 0xc0297920 <__pabt_usr+32>: ldr r0, [pc, #-584] ; 0xc02976e0 0xc0297924 <__pabt_usr+36>: ldr r0, [r0] 0xc0297928 <__pabt_usr+40>: mcr 15, 0, r0, cr1, cr0, {0} 0xc029792c <__pabt_usr+44>: mov r0, r2 0xc0297930 <__pabt_usr+48>: bl 0xc002dc20 0xc0297934 <__pabt_usr+52>: msr CPSR_c, #19 0xc0297938 <__pabt_usr+56>: mov r2, sp 0xc029793c <__pabt_usr+60>: bl 0xc00261d0 0xc0297940 : lsr r9, sp, #13 0xc0297944 : lsl r9, r9, #13 0xc0297948 : mov r8, #0 0xc029794c : b 0xc0026a9c 0xc0297950 <__switch_to>: add r12, r1, #28 0xc0297954 <__switch_to+4>: ldr r3, [r2, #96] ; 0x60 0xc0297958 <__switch_to+8>: stmia r12!, {r4, r5, r6, r7, r8, r9, r10, r11, sp, lr} 0xc029795c <__switch_to+12>: ldr r6, [r2, #24] 0xc0297960 <__switch_to+16>: mvn r4, #61440 ; 0xf000 0xc0297964 <__switch_to+20>: str r3, [r4, #-15] 0xc0297968 <__switch_to+24>: mcr 15, 0, r6, cr3, cr0, {0} 0xc029796c <__switch_to+28>: mov r5, r0 0xc0297970 <__switch_to+32>: add r4, r2, #28 0xc0297974 <__switch_to+36>: ldr r0, [pc, #12] ; 0xc0297988 0xc0297978 <__switch_to+40>: mov r1, #2 0xc029797c <__switch_to+44>: bl 0xc0299754