Last active
September 5, 2021 23:03
-
-
Save tridge/b7f726ae660033c88356163bd81985f8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
non-debug (-O2): | |
Dump of assembler code for function __core_init: | |
0x08002a50 <+0>: push {r4, r5, r6, r7, lr} | |
0x08002a52 <+2>: nop | |
0x08002a54 <+4>: nop | |
0x08002a56 <+6>: nop | |
0x08002a58 <+8>: dsb sy | |
0x08002a5c <+12>: isb sy | |
0x08002a60 <+16>: nop | |
0x08002a62 <+18>: nop | |
0x08002a64 <+20>: nop | |
0x08002a66 <+22>: ldr r3, [pc, #192] ; (0x8002b28 <otg_disable_ep+24>) | |
0x08002a68 <+24>: movs r1, #0 | |
0x08002a6a <+26>: str.w r1, [r3, #592] ; 0x250 | |
0x08002a6e <+30>: nop | |
0x08002a70 <+32>: nop | |
0x08002a72 <+34>: nop | |
0x08002a74 <+36>: dsb sy | |
0x08002a78 <+40>: isb sy | |
0x08002a7c <+44>: nop | |
0x08002a7e <+46>: nop | |
0x08002a80 <+48>: nop | |
0x08002a82 <+50>: ldr r2, [r3, #20] | |
0x08002a84 <+52>: orr.w r2, r2, #131072 ; 0x20000 | |
0x08002a88 <+56>: str r2, [r3, #20] | |
0x08002a8a <+58>: nop | |
0x08002a8c <+60>: nop | |
0x08002a8e <+62>: nop | |
0x08002a90 <+64>: dsb sy | |
0x08002a94 <+68>: isb sy | |
0x08002a98 <+72>: nop | |
0x08002a9a <+74>: nop | |
0x08002a9c <+76>: nop | |
0x08002a9e <+78>: nop | |
0x08002aa0 <+80>: nop | |
0x08002aa2 <+82>: nop | |
0x08002aa4 <+84>: str.w r1, [r3, #132] ; 0x84 | |
0x08002aa8 <+88>: nop | |
0x08002aaa <+90>: nop | |
0x08002aac <+92>: nop | |
0x08002aae <+94>: dsb sy | |
0x08002ab2 <+98>: nop | |
0x08002ab4 <+100>: nop | |
0x08002ab6 <+102>: nop | |
0x08002ab8 <+104>: ldr.w r2, [r3, #128] ; 0x80 | |
0x08002abc <+108>: nop | |
0x08002abe <+110>: nop | |
0x08002ac0 <+112>: nop | |
0x08002ac2 <+114>: ubfx r4, r2, #3, #10 | |
0x08002ac6 <+118>: ubfx r2, r2, #13, #15 | |
0x08002aca <+122>: movw r6, #16352 ; 0x3fe0 | |
0x08002ace <+126>: lsls r2, r2, #5 | |
0x08002ad0 <+128>: lsls r5, r4, #30 | |
0x08002ad2 <+130>: and.w lr, r2, r6 | |
debug (-Og), does not hard fault | |
Dump of assembler code for function __core_init: | |
0x08002e58 <+0>: str.w r3, [r4, #2048] ; 0x800 | |
0x08002e5c <+4>: ldr r3, [r4, #24] | |
0x08002e5e <+6>: orr.w r3, r3, #786432 ; 0xc0000 | |
0x08002e62 <+10>: orr.w r3, r3, #16 | |
0x08002e66 <+14>: str r3, [r4, #24] | |
0x08002e68 <+16>: movs r3, #9 | |
0x08002e6a <+18>: str.w r3, [r4, #2064] ; 0x810 | |
0x08002e6e <+22>: str.w r3, [r4, #2068] ; 0x814 | |
0x08002e72 <+26>: ldr r3, [pc, #44] ; (0x8002ea0 <__core_init+72>) | |
0x08002e74 <+28>: str r3, [r5, #12] | |
0x08002e76 <+30>: mov.w r3, #1610612736 ; 0x60000000 | |
0x08002e7a <+34>: str.w r3, [r4, #2832] ; 0xb10 | |
0x08002e7e <+38>: ldr r3, [pc, #36] ; (0x8002ea4 <__core_init+76>) | |
0x08002e80 <+40>: str.w r3, [r4, #2816] ; 0xb00 | |
0x08002e84 <+44>: str.w r6, [r4, #2320] ; 0x910 | |
0x08002e88 <+48>: str.w r3, [r4, #2304] ; 0x900 | |
0x08002e8c <+52>: ldr.w r3, [r5, #152] ; 0x98 | |
0x08002e90 <+56>: add.w r2, r3, #16 | |
0x08002e94 <+60>: orr.w r3, r3, #1048576 ; 0x100000 | |
0x08002e98 <+64>: str.w r2, [r5, #152] ; 0x98 | |
0x08002e9c <+68>: str r3, [r4, #40] ; 0x28 | |
0x08002e9e <+70>: pop {r3, r4, r5, r6, r7, pc} | |
0x08002ea0 <+72>: cmn r0, r3 | |
0x08002ea2 <+74>: lsrs r0, r0, #32 | |
0x08002ea4 <+76>: strh r0, [r0, #2] | |
0x08002ea6 <+78>: asrs r0, r0, #32 | |
0x08002ea8 <+80>: ldr.w r2, [r0, #144] ; 0x90 | |
0x08002eac <+84>: ldrb.w r1, [r0, #138] ; 0x8a | |
0x08002eb0 <+88>: ldr.w r3, [r2, #2048] ; 0x800 | |
0x08002eb4 <+92>: bic.w r3, r3, #2032 ; 0x7f0 | |
0x08002eb8 <+96>: orr.w r3, r3, r1, lsl #4 | |
0x08002ebc <+100>: str.w r3, [r2, #2048] ; 0x800 | |
0x08002ec0 <+104>: bx lr | |
0x08002ec2 <+106>: movs r0, r0 | |
0x08002ec4 <+108>: stmdb sp!, {r4, r5, r6, r7, r8, lr} | |
0x08002ec8 <+112>: sxth r6, r1 | |
0x08002eca <+114>: mov r5, r1 | |
0x08002ecc <+116>: add.w r8, r0, r6, lsl #2 | |
0x08002ed0 <+120>: ldr.w r1, [r8, #12] | |
0x08002ed4 <+124>: ldr r7, [r1, #0] | |
0x08002ed6 <+126>: and.w r3, r7, #3 | |
build with -O0, hard faults | |
(gdb) disas __core_init | |
Dump of assembler code for function __core_init: | |
0x08002b10 <+0>: push {r7, lr} | |
0x08002b12 <+2>: add r7, sp, #0 | |
0x08002b14 <+4>: bl 0x8002a50 <SCB_EnableICache> | |
0x08002b18 <+8>: bl 0x8002a90 <SCB_EnableDCache> | |
0x08002b1c <+12>: nop | |
0x08002b1e <+14>: pop {r7, pc} | |
End of assembler dump. | |
(gdb) disas SCB_EnableICache | |
Dump of assembler code for function SCB_EnableICache: | |
0x08002a50 <+0>: push {r7} | |
0x08002a52 <+2>: add r7, sp, #0 | |
0x08002a54 <+4>: dsb sy | |
0x08002a58 <+8>: isb sy | |
0x08002a5c <+12>: ldr r3, [pc, #44] ; (0x8002a8c <SCB_EnableICache+60>) | |
0x08002a5e <+14>: movs r2, #0 | |
0x08002a60 <+16>: str.w r2, [r3, #592] ; 0x250 | |
0x08002a64 <+20>: dsb sy | |
0x08002a68 <+24>: isb sy | |
0x08002a6c <+28>: ldr r2, [pc, #28] ; (0x8002a8c <SCB_EnableICache+60>) | |
0x08002a6e <+30>: ldr r3, [pc, #28] ; (0x8002a8c <SCB_EnableICache+60>) | |
0x08002a70 <+32>: ldr r3, [r3, #20] | |
0x08002a72 <+34>: orr.w r3, r3, #131072 ; 0x20000 | |
0x08002a76 <+38>: str r3, [r2, #20] | |
0x08002a78 <+40>: dsb sy | |
0x08002a7c <+44>: isb sy | |
0x08002a80 <+48>: nop | |
0x08002a82 <+50>: mov sp, r7 | |
0x08002a84 <+52>: ldr.w r7, [sp], #4 | |
0x08002a88 <+56>: bx lr | |
0x08002a8a <+58>: nop | |
0x08002a8c <+60>: stc 0, cr14, [r0, #-0] | |
End of assembler dump. | |
(gdb) disas SCB_EnableDCache | |
Dump of assembler code for function SCB_EnableDCache: | |
0x08002a90 <+0>: push {r7} | |
0x08002a92 <+2>: sub sp, #20 | |
0x08002a94 <+4>: add r7, sp, #0 | |
0x08002a96 <+6>: ldr r3, [pc, #116] ; (0x8002b0c <SCB_EnableDCache+124>) | |
0x08002a98 <+8>: movs r2, #0 | |
0x08002a9a <+10>: str.w r2, [r3, #132] ; 0x84 | |
0x08002a9e <+14>: dsb sy | |
0x08002aa2 <+18>: ldr r3, [pc, #104] ; (0x8002b0c <SCB_EnableDCache+124>) | |
0x08002aa4 <+20>: ldr.w r3, [r3, #128] ; 0x80 | |
0x08002aa8 <+24>: str r3, [r7, #4] | |
0x08002aaa <+26>: ldr r3, [r7, #4] | |
0x08002aac <+28>: lsrs r3, r3, #13 | |
0x08002aae <+30>: ubfx r3, r3, #0, #15 | |
0x08002ab2 <+34>: str r3, [r7, #12] | |
0x08002ab4 <+36>: ldr r3, [r7, #4] | |
0x08002ab6 <+38>: lsrs r3, r3, #3 | |
0x08002ab8 <+40>: ubfx r3, r3, #0, #10 | |
0x08002abc <+44>: str r3, [r7, #8] | |
0x08002abe <+46>: ldr r1, [pc, #76] ; (0x8002b0c <SCB_EnableDCache+124>) | |
0x08002ac0 <+48>: ldr r3, [r7, #12] | |
0x08002ac2 <+50>: lsls r2, r3, #5 | |
0x08002ac4 <+52>: movw r3, #16352 ; 0x3fe0 | |
0x08002ac8 <+56>: ands r3, r2 | |
0x08002aca <+58>: ldr r2, [r7, #8] | |
0x08002acc <+60>: lsls r2, r2, #30 | |
0x08002ace <+62>: orrs r3, r2 | |
0x08002ad0 <+64>: str.w r3, [r1, #608] ; 0x260 | |
0x08002ad4 <+68>: ldr r3, [r7, #8] | |
0x08002ad6 <+70>: subs r2, r3, #1 | |
0x08002ad8 <+72>: str r2, [r7, #8] | |
0x08002ada <+74>: cmp r3, #0 | |
0x08002adc <+76>: bne.n 0x8002abe <SCB_EnableDCache+46> | |
0x08002ade <+78>: ldr r3, [r7, #12] | |
0x08002ae0 <+80>: subs r2, r3, #1 | |
0x08002ae2 <+82>: str r2, [r7, #12] | |
0x08002ae4 <+84>: cmp r3, #0 | |
0x08002ae6 <+86>: bne.n 0x8002ab4 <SCB_EnableDCache+36> | |
0x08002ae8 <+88>: dsb sy | |
0x08002aec <+92>: ldr r2, [pc, #28] ; (0x8002b0c <SCB_EnableDCache+124>) | |
0x08002aee <+94>: ldr r3, [pc, #28] ; (0x8002b0c <SCB_EnableDCache+124>) | |
0x08002af0 <+96>: ldr r3, [r3, #20] | |
0x08002af2 <+98>: orr.w r3, r3, #65536 ; 0x10000 | |
0x08002af6 <+102>: str r3, [r2, #20] | |
0x08002af8 <+104>: dsb sy | |
0x08002afc <+108>: isb sy | |
0x08002b00 <+112>: nop | |
0x08002b02 <+114>: adds r7, #20 | |
0x08002b04 <+116>: mov sp, r7 | |
0x08002b06 <+118>: ldr.w r7, [sp], #4 | |
0x08002b0a <+122>: bx lr | |
0x08002b0c <+124>: stc 0, cr14, [r0, #-0] | |
End of assembler dump. | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment