Skip to content

Instantly share code, notes, and snippets.

@tridge
Last active September 5, 2021 23:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tridge/b7f726ae660033c88356163bd81985f8 to your computer and use it in GitHub Desktop.
Save tridge/b7f726ae660033c88356163bd81985f8 to your computer and use it in GitHub Desktop.
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