Created
May 13, 2024 22:55
-
-
Save chris-durand/4f3deae41aacbfd0cad2c9d067df0b5a to your computer and use it in GitHub Desktop.
listing
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
architecture: armv8-m.main, flags 0x00000112: | |
EXEC_P, HAS_SYMS, D_PAGED | |
start address 0x08001241 | |
Program Header: | |
LOAD off 0x00010000 vaddr 0x08000000 paddr 0x08000000 align 2**16 | |
filesz 0x00001f34 memsz 0x00001f34 flags rwx | |
LOAD off 0x00020c00 vaddr 0x20000c00 paddr 0x08001f34 align 2**16 | |
filesz 0x00000018 memsz 0x00000018 flags rw- | |
LOAD off 0x00021f4c vaddr 0x08001f4c paddr 0x08001f4c align 2**16 | |
filesz 0x00000064 memsz 0x00000064 flags rw- | |
LOAD off 0x00000c18 vaddr 0x20000c18 paddr 0x08001f4c align 2**16 | |
filesz 0x00000000 memsz 0x000008a8 flags rw- | |
LOAD off 0x000014c0 vaddr 0x200014c0 paddr 0x08001f4c align 2**16 | |
filesz 0x00000000 memsz 0x000010c0 flags rw- | |
LOAD off 0x00002580 vaddr 0x20002580 paddr 0x08001f4c align 2**16 | |
filesz 0x00000000 memsz 0x0002da80 flags rw- | |
LOAD off 0x00000000 vaddr 0x20030000 paddr 0x08001f4c align 2**16 | |
filesz 0x00000000 memsz 0x00010000 flags rw- | |
LOAD off 0x00000000 vaddr 0x20000000 paddr 0x20000000 align 2**16 | |
filesz 0x00000000 memsz 0x00000c00 flags rw- | |
NOTE off 0x000101f0 vaddr 0x080001f0 paddr 0x080001f0 align 2**2 | |
filesz 0x00000024 memsz 0x00000024 flags r-- | |
private flags = 0x5000400: [Version5 EABI] [hard-float ABI] | |
Sections: | |
Idx Name Size VMA LMA File off Algn Flags | |
0 .text 000001f0 08000000 08000000 00010000 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA | |
1 .build_id 00000024 080001f0 080001f0 000101f0 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA | |
2 .text 00001b48 08000220 08000220 00010220 2**4 CONTENTS, ALLOC, LOAD, READONLY, CODE | |
3 .rodata 000001cc 08001d68 08001d68 00011d68 2**2 CONTENTS, ALLOC, LOAD, DATA | |
4 .stack 00000c00 20000000 20000000 00030000 2**0 ALLOC | |
5 .data 00000004 20000c00 08001f34 00020c00 2**2 CONTENTS, ALLOC, LOAD, DATA | |
6 .fastdata 00000014 20000c04 08001f38 00020c04 2**2 CONTENTS, ALLOC, LOAD, DATA | |
7 .fastcode 00000000 20000c18 20000c18 00021fb0 2**0 CONTENTS | |
8 .data_sram1 00000000 20000c18 20000c18 00021fb0 2**0 CONTENTS | |
9 .bss 000008a8 20000c18 08001f4c 00030c18 2**2 ALLOC | |
10 .bss_sram1 00000000 200014c0 200014c0 00021fb0 2**0 CONTENTS | |
11 .noinit 00000000 200014c0 080027f4 00000000 2**0 ALLOC | |
12 .faststack 000010c0 200014c0 08001f4c 000314c0 2**3 ALLOC | |
13 .noinit_sram1 00000000 20002580 20002580 00021fb0 2**0 CONTENTS | |
14 .heap_sram1 0002da80 20002580 08001f4c 00022580 2**0 ALLOC | |
15 .data_sram2 00000000 20030000 20030000 00021fb0 2**0 CONTENTS | |
16 .bss_sram2 00000000 20030000 20030000 00021fb0 2**0 CONTENTS | |
17 .noinit_sram2 00000000 20030000 20030000 00021fb0 2**0 CONTENTS | |
18 .heap_sram2 00010000 20030000 08001f4c 00030000 2**0 ALLOC | |
19 .rodata 00000064 08001f4c 08001f4c 00021f4c 2**0 CONTENTS, ALLOC, LOAD, DATA | |
20 .debug_abbrev 00006aad 00000000 00000000 00021fb0 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS | |
21 .debug_aranges 00000720 00000000 00000000 00028a60 2**3 CONTENTS, READONLY, DEBUGGING, OCTETS | |
22 .debug_frame 0000106c 00000000 00000000 00029180 2**2 CONTENTS, READONLY, DEBUGGING, OCTETS | |
23 .debug_info 000392b4 00000000 00000000 0002a1ec 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS | |
24 .debug_line 0000dda1 00000000 00000000 000634a0 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS | |
25 .debug_loc 000079ee 00000000 00000000 00071241 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS | |
26 .debug_ranges 00001968 00000000 00000000 00078c2f 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS | |
27 .debug_str 000d3ca5 00000000 00000000 0007a597 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS | |
28 .comment 00000059 00000000 00000000 0014e23c 2**0 CONTENTS, READONLY | |
29 .ARM.attributes 00000038 00000000 00000000 0014e295 2**0 CONTENTS, READONLY | |
30 .debug_macro 00028734 00000000 00000000 0014e2cd 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS | |
31 .debug_line_str 000000a7 00000000 00000000 00176a01 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS | |
32 .debug_loclists 00000958 00000000 00000000 00176aa8 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS | |
33 .debug_rnglists 0000007a 00000000 00000000 00177400 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS | |
SYMBOL TABLE: | |
08000000 l d .text 00000000 .text | |
080001f0 l d .build_id 00000000 .build_id | |
08000220 l d .text 00000000 .text | |
08001d68 l d .rodata 00000000 .rodata | |
20000000 l d .stack 00000000 .stack | |
20000c00 l d .data 00000000 .data | |
20000c04 l d .fastdata 00000000 .fastdata | |
20000c18 l d .fastcode 00000000 .fastcode | |
20000c18 l d .data_sram1 00000000 .data_sram1 | |
20000c18 l d .bss 00000000 .bss | |
200014c0 l d .bss_sram1 00000000 .bss_sram1 | |
200014c0 l d .noinit 00000000 .noinit | |
200014c0 l d .faststack 00000000 .faststack | |
20002580 l d .noinit_sram1 00000000 .noinit_sram1 | |
20002580 l d .heap_sram1 00000000 .heap_sram1 | |
20030000 l d .data_sram2 00000000 .data_sram2 | |
20030000 l d .bss_sram2 00000000 .bss_sram2 | |
20030000 l d .noinit_sram2 00000000 .noinit_sram2 | |
20030000 l d .heap_sram2 00000000 .heap_sram2 | |
08001f4c l d .rodata 00000000 .rodata | |
00000000 l d .debug_abbrev 00000000 .debug_abbrev | |
00000000 l d .debug_aranges 00000000 .debug_aranges | |
00000000 l d .debug_frame 00000000 .debug_frame | |
00000000 l d .debug_info 00000000 .debug_info | |
00000000 l d .debug_line 00000000 .debug_line | |
00000000 l d .debug_loc 00000000 .debug_loc | |
00000000 l d .debug_ranges 00000000 .debug_ranges | |
00000000 l d .debug_str 00000000 .debug_str | |
00000000 l d .comment 00000000 .comment | |
00000000 l d .ARM.attributes 00000000 .ARM.attributes | |
00000000 l d .debug_macro 00000000 .debug_macro | |
00000000 l d .debug_line_str 00000000 .debug_line_str | |
00000000 l d .debug_loclists 00000000 .debug_loclists | |
00000000 l d .debug_rnglists 00000000 .debug_rnglists | |
00000000 l df *ABS* 00000000 vectors.c | |
00000000 l df *ABS* 00000000 main.cpp | |
08000238 l F .text 00000028 _ZN4modm5fiber4Task5startEv.isra.0 | |
08000260 l F .text 00000002 _ZN4modm8IOStreamlsEPFRS0_S1_E.isra.0 | |
0800064c l F .text 0000003c _ZN4modm10this_fiber8poll_forIxSt5ratioILx1ELx1EEZNS0_9sleep_forIxS3_EEvNSt6chrono8durationIT_T0_EEEUlvE_EEbS9_OT1_.isra.0 | |
08000b74 l F .text 00000140 _GLOBAL__sub_I_f1counter | |
00000000 l df *ABS* 00000000 new_delete.cpp | |
00000000 l df *ABS* 00000000 board.cpp | |
08000e58 l F .text 00000068 _GLOBAL__sub_I_loggerDevice | |
00000000 l df *ABS* 00000000 iostream.cpp | |
08000ec0 l F .text 00000014 _ZZN4modm8IOStream8writeHexEhENKUlhE_clEh.isra.0 | |
00000000 l df *ABS* 00000000 iostream_printf.cpp | |
00000000 l df *ABS* 00000000 rcc.cpp | |
00000000 l df *ABS* 00000000 systick_timer.cpp | |
20000cb4 l O .bss 00000004 _ZL10milli_time | |
20000cb0 l O .bss 00000004 _ZL10micro_time | |
20000cac l O .bss 00000001 _ZL9interrupt | |
00000000 l df *ABS* 00000000 assert.cpp | |
00000000 l df *ABS* 00000000 delay.cpp | |
08001f2c l O .rodata 00000004 _ZL40__modm_hardware_init_ptr_modm_dwt_enable | |
00000000 l df *ABS* 00000000 no_heap.c | |
00000000 l df *ABS* 00000000 reset_handler.o | |
00000000 l df *ABS* 00000000 startup.c | |
0800126c l F .text 0000001e table_copy | |
00000000 l df *ABS* 00000000 startup_platform.c | |
00000000 l df *ABS* 00000000 enable.cpp | |
08001f30 l O .rodata 00000004 _ZL41__modm_hardware_init_ptr_modm_gpio_enable | |
00000000 l df *ABS* 00000000 lpuart_1.cpp | |
20000cb8 l O .bss 00000806 _ZN12_GLOBAL__N_1L8txBufferE | |
08001518 l F .text 00000010 _GLOBAL__sub_I__ZN4modm8platform7Lpuart113writeBlockingEh | |
00000000 l df *ABS* 00000000 context_arm_m.cpp | |
08001528 l F .text 00000006 _ZN12_GLOBAL__N_118modm_context_entryEv | |
00000000 l df *ABS* 00000000 printf.c | |
08001602 l F .text 0000002a putchar_via_gadget | |
0800162c l F .text 00000060 out_rev_ | |
00000000 l df *ABS* 00000000 _aeabi_ldivmod.o | |
00000000 l df *ABS* 00000000 _aeabi_uldivmod.o | |
00000000 l df *ABS* 00000000 libgcc2.c | |
00000000 l df *ABS* 00000000 _dvmd_tls.o | |
00000000 l df *ABS* 00000000 memset.c | |
08000534 w F .text 00000014 _ZN4modm5fiber9Scheduler3runEv | |
200014c0 g .bss_sram1 00000000 __bss_sram1_end | |
080013a0 w F .text 00000064 EXTI2_IRQHandler | |
080013a0 w F .text 00000064 TIM8_TRG_COM_IRQHandler | |
080013a0 w F .text 00000064 TIM8_CC_IRQHandler | |
080013a0 w F .text 00000064 EXTI5_IRQHandler | |
08001424 g F .text 00000060 _ZN4modm8platform7Lpuart15writeEh | |
080013a0 w F .text 00000064 DebugMon_Handler | |
20000c38 w O .bss 00000004 _ZN4modm8platform12SysTickTimer14ms_per_NcyclesE | |
08001f4c g *ABS* 00000000 __fastcode_load | |
0800100c g F .text 00000078 _ZN4modm8platform3Rcc9enablePllENS1_9PllSourceERKNS1_10PllFactorsEm | |
20002368 g O .faststack 00000218 fiber_y1 | |
08000514 w F .text 00000010 _ZZN4modm5fiber4TaskC4ILj512EN8fiber_y2MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPFvvEE_4_FUNESB_ | |
080001f0 g .text 00000000 __vector_table_rom_end | |
080013a0 w F .text 00000064 FLASH_S_IRQHandler | |
080013a0 w F .text 00000064 EXTI13_IRQHandler | |
08001ef4 w O .rodata 00000020 _ZTVN4modm15IODeviceWrapperINS_8platform7Lpuart1ELNS_8IOBufferE1EEE | |
080013a0 w F .text 00000064 TIM1_CC_IRQHandler | |
080013a0 w F .text 00000064 TSC_IRQHandler | |
20030000 g .text 00000000 __sram1_end | |
20000c74 g O .bss 0000001c _ZN4modm3log4infoE | |
080013a0 w F .text 00000064 HardFault_Handler | |
080013a0 w F .text 00000064 TAMP_IRQHandler | |
08000cd6 w F .text 00000002 _ZN4modm15IODeviceWrapperINS_8platform7Lpuart1ELNS_8IOBufferE1EED1Ev | |
08000eec g F .text 00000024 _ZN4modm8IOStream8writeBinEh | |
08001404 g F .text 00000020 _Z16modm_gpio_enablev | |
08001f4c g *ABS* 00000000 __data_sram1_load | |
08001f34 g *ABS* 00000000 __data_load | |
080013a0 w F .text 00000064 TIM6_IRQHandler | |
080013a0 w F .text 00000064 EXTI12_IRQHandler | |
080010d8 g F .text 00000028 SysTick_Handler | |
20000000 g .stack 00000000 __main_stack_bottom | |
20000c18 g .data_sram1 00000000 __data_sram1_start | |
08000274 w F .text 00000228 _ZN5Board10initializeEv | |
080013a0 w F .text 00000064 PendSV_Handler | |
080013a0 w F .text 00000064 NMI_Handler | |
080013a0 w F .text 00000064 DMA2_Channel8_IRQHandler | |
080015ee g F .text 00000014 modm_context_end | |
08000d00 w F .text 00000010 _ZN4modm8IOStream8out_charEcPv | |
080013a0 w F .text 00000064 EXTI3_IRQHandler | |
08000cb4 w F .text 00000002 operator_delete | |
080013a0 w F .text 00000064 EXTI8_IRQHandler | |
080013a0 w F .text 00000064 LPTIM2_IRQHandler | |
080013a0 w F .text 00000064 DFSDM1_FLT1_IRQHandler | |
080005ac w F .text 00000048 _ZN6fiber3MUlvE_4_FUNEv | |
080013a0 w F .text 00000064 USB_FS_IRQHandler | |
08000688 w F .text 00000018 _ZN8fiber_y2MUlvE_4_FUNEv | |
0800123c w F .text 00000002 __modm_initialize_memory | |
080013a0 w F .text 00000064 I2C3_ER_IRQHandler | |
08001484 g F .text 00000024 _ZN4modm8platform7Lpuart115isWriteFinishedEv | |
080013a0 w F .text 00000064 DFSDM1_FLT2_IRQHandler | |
080013a0 g F .text 00000064 Undefined_Handler | |
080013a0 w F .text 00000064 DMAMUX1_IRQHandler | |
20000c00 g O .data 00000004 loggerDevice | |
080013a0 w F .text 00000064 LPTIM3_IRQHandler | |
080011f4 g F .text 00000028 _Z15modm_dwt_enablev | |
0800168c g F .text 00000278 print_integer | |
080013a0 w F .text 00000064 EXTI0_IRQHandler | |
080013a0 w F .text 00000064 I2C2_EV_IRQHandler | |
08001f4c g .rodata 00000000 __table_zero_intern_start | |
080019a4 g F .text 00000000 .hidden __aeabi_uldivmod | |
080013a0 w F .text 00000064 FPU_IRQHandler | |
20000c14 g O .fastdata 00000004 SystemCoreClock | |
080013a0 w F .text 00000064 FDCAN1_IT1_IRQHandler | |
0800152e g F .text 00000016 modm_context_init | |
20000c90 g O .bss 0000001c _ZN4modm3log5debugE | |
08001fb0 g .rodata 00000000 __table_heap_end | |
20000c18 g .fastdata 00000000 __fastdata_end | |
20000c34 w O .bss 00000004 _ZN4modm8platform12SysTickTimer14us_per_NcyclesE | |
08000cbe w F .text 00000018 _ZN4modm8IODevice5writeEPKc | |
0800128c g F .text 000000ec __modm_startup | |
080013a0 w F .text 00000064 UsageFault_Handler | |
08001f34 g .rodata 00000000 __assertion_table_start | |
20000c18 g .data_sram1 00000000 __data_sram1_end | |
080013a0 w F .text 00000064 ADC1_2_IRQHandler | |
0800049c w F .text 00000028 _ZN4modm5fiber9Scheduler10unscheduleEv | |
08001100 g F .text 00000028 _ZN4modm8platform12SysTickTimer6enableEmb | |
080013a0 w F .text 00000064 SPI1_IRQHandler | |
080013a0 w F .text 00000064 OCTOSPI1_IRQHandler | |
080019d4 g F .text 000002ea .hidden __udivmoddi4 | |
08001f34 g .rodata 00000000 __hardware_init_end | |
20000c58 g O .bss 0000001c _ZN4modm3log7warningE | |
20001d20 g O .faststack 00000218 fiber2 | |
08000fe0 g F .text 0000002c _ZN4modm8platform3Rcc29enableMultiSpeedInternalClockENS1_12MsiFrequencyEm | |
08000ce2 w F .text 00000010 _ZN4modm15IODeviceWrapperINS_8platform7Lpuart1ELNS_8IOBufferE1EE5writeEc | |
080013a0 w F .text 00000064 TIM8_UP_IRQHandler | |
080013a0 w F .text 00000064 RCC_S_IRQHandler | |
08000f92 g F .text 00000020 _ZN4modm8IOStream12writeIntegerEy | |
20000c04 g .fastdata 00000000 __fastdata_start | |
08001fb0 g .rodata 00000000 __rom_end | |
00000c00 g *ABS* 00000000 MAIN_STACK_SIZE | |
200014c0 g .bss_sram1 00000000 __bss_end | |
20040000 g .heap_sram2 00000000 __heap_sram2_end | |
080013a0 w F .text 00000064 DMA2_Channel2_IRQHandler | |
080014a8 g F .text 0000000c _ZN4modm8platform7Lpuart116flushWriteBufferEv | |
080013a0 w F .text 00000064 DMA1_Channel4_IRQHandler | |
080013a0 w F .text 00000064 SAI2_IRQHandler | |
08001f98 g .rodata 00000000 __table_copy_extern_end | |
20030000 g .noinit_sram2 00000000 __noinit_sram2_start | |
08000564 g F .text 00000048 _Z15fiber_function1v | |
080004f4 w F .text 00000010 _ZZN4modm5fiber4TaskC4ILj512EN6fiber2MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPFvvEE_4_FUNESB_ | |
080013a0 w F .text 00000064 DFSDM1_FLT3_IRQHandler | |
08000cde w F .text 00000004 _ZN4modm15IODeviceWrapperINS_8platform7Lpuart1ELNS_8IOBufferE1EE5flushEv | |
08000cd6 w F .text 00000002 _ZN4modm15IODeviceWrapperINS_8platform7Lpuart1ELNS_8IOBufferE1EED2Ev | |
080013a0 w F .text 00000064 EXTI15_IRQHandler | |
080013a0 w F .text 00000064 TIM17_IRQHandler | |
080013a0 w F .text 00000064 USART3_IRQHandler | |
080013a0 w F .text 00000064 RTC_IRQHandler | |
080013a0 w F .text 00000064 EXTI9_IRQHandler | |
080013a0 w F .text 00000064 DMA1_Channel7_IRQHandler | |
08001240 g F .text 00000000 Reset_Handler | |
08001128 w F .text 00000038 _ZN4modm6chrono11milli_clock3nowEv | |
20002580 g .noinit_sram1 00000000 __noinit_sram1_end | |
08000000 g .text 00000000 __vector_table_rom_start | |
20000000 g .text 00000000 __sram1_start | |
20000000 g .stack 00000000 __stack_start | |
20000c12 g O .fastdata 00000002 _ZN4modm8platform14delay_fcpu_MHzE | |
08000fb4 g F .text 0000002c _ZN4modm8platform3Rcc24enableInternalClockMHz48Em | |
080013a0 w F .text 00000064 UART5_IRQHandler | |
08001f5c g .rodata 00000000 __table_zero_intern_end | |
08001f5c g .rodata 00000000 __table_copy_intern_start | |
08000ed4 g F .text 00000018 _ZN4modm8IOStream8writeHexEh | |
20002150 g O .faststack 00000218 fiber_y2 | |
08001160 w F .text 00000038 _ZN4modm6chrono11micro_clock3nowEv | |
20000c2c w O .bss 00000008 _ZZN4modm5fiber9Scheduler8instanceEvE4main | |
08000cb6 w F .text 00000008 _ZdlPvj | |
080013a0 w F .text 00000064 TIM4_IRQHandler | |
08000708 w F .text 00000046 _ZN4modm8IOStream16writeIntegerModeImEEvT_ | |
0800121c g F .text 00000020 _ZN4modm8delay_usEm | |
080013a0 w F .text 00000064 DMA2_Channel1_IRQHandler | |
080013a0 w F .text 00000064 I2C1_EV_IRQHandler | |
08001f34 g .rodata 00000000 __assertion_table_end | |
20030000 g .text 00000000 __sram2_start | |
20001b08 g O .faststack 00000218 fiber3 | |
08001f98 g .rodata 00000000 __table_zero_extern_end | |
08000f64 g F .text 0000002e _ZN4modm8IOStream12writeIntegerEx | |
080013a0 w F .text 00000064 DMA1_Channel6_IRQHandler | |
080013a0 w F .text 00000064 TIM16_IRQHandler | |
080004e4 w F .text 00000010 _ZZN4modm5fiber4TaskC4ILj512EN6fiber3MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPFvvEE_4_FUNESB_ | |
080013a0 w F .text 00000064 UART4_IRQHandler | |
080013a0 w F .text 00000064 DMA2_Channel4_IRQHandler | |
08001f2c g .rodata 00000000 __hardware_init_start | |
080013a0 w F .text 00000064 TIM3_IRQHandler | |
080013a0 w F .text 00000064 RCC_IRQHandler | |
080013a0 w F .text 00000064 TIM1_TRG_COM_IRQHandler | |
20000c18 g O .bss 00000008 test | |
080013a0 w F .text 00000064 DMA1_Channel1_IRQHandler | |
08001f4c g *ABS* 00000000 __data_sram2_load | |
080013a0 w F .text 00000064 DMA2_Channel7_IRQHandler | |
08001378 g F .text 00000028 __modm_initialize_platform | |
20040000 g .text 00000000 __sram2_end | |
20000c18 g .fastcode 00000000 __fastcode_start | |
08000cf2 w F .text 0000000e _ZN4modm15IODeviceWrapperINS_8platform7Lpuart1ELNS_8IOBufferE1EED0Ev | |
20000c04 g .data 00000000 __data_end | |
20030000 g .data_sram2 00000000 __data_sram2_start | |
080013a0 w F .text 00000064 DMA1_Channel8_IRQHandler | |
08001f98 g .rodata 00000000 __table_heap_start | |
20030000 g .bss_sram2 00000000 __bss_sram2_start | |
080006a0 w F .text 00000018 _ZN8fiber_y1MUlvE_4_FUNEv | |
08000d3c w F .text 0000011c modm_abandon | |
20000c00 g .stack 00000000 __main_stack_top | |
080013a0 w F .text 00000064 TIM7_IRQHandler | |
080013a0 w F .text 00000064 SDMMC1_IRQHandler | |
080013a0 w F .text 00000064 TIM5_IRQHandler | |
080013a0 w F .text 00000064 UCPD1_IRQHandler | |
08000f42 g F .text 00000022 _ZN4modm8IOStream12writeIntegerEm | |
080013a0 w F .text 00000064 TIM15_IRQHandler | |
080013a0 w F .text 00000064 I2C3_EV_IRQHandler | |
08001cc0 w F .text 00000002 .hidden __aeabi_ldiv0 | |
20000c00 g .stack 00000000 __stack_end | |
08000220 w F .text 00000016 _ZN4modm4endlERNS_8IOStreamE | |
08000000 g .text 00000000 __vector_table_ram_load | |
080006fc w F .text 0000000c _ZN6fiber2MUlvE_4_FUNEv | |
20000c04 g O .fastdata 0000000c counter | |
080013a0 w F .text 00000064 PVD_PVM_IRQHandler | |
20001f38 g O .faststack 00000218 fiber1 | |
080013a0 w F .text 00000064 SPI2_IRQHandler | |
200014c0 g .faststack 00000000 __faststack_start | |
08001f38 g *ABS* 00000000 __fastdata_load | |
20000c18 g .bss 00000000 __bss_start | |
08001cc4 g F .text 000000a4 memset | |
080014b4 g F .text 00000018 _ZN4modm8platform7Lpuart14readERh | |
080013a0 w F .text 00000064 MemManage_Handler | |
080007e0 g F .text 00000394 main | |
20030000 g .bss_sram2 00000000 __bss_sram2_end | |
20000c28 g O .bss 00000004 f1counter | |
080013a0 w F .text 00000064 EXTI14_IRQHandler | |
080013a0 w F .text 00000064 EXTI11_IRQHandler | |
08000798 w F .text 00000048 _ZN10fiber_pingMUlvE_4_FUNEv | |
080013a0 w F .text 00000064 SVC_Handler | |
200016d8 g O .faststack 00000218 fiber_ping | |
080013a0 w F .text 00000064 DMA2_Channel5_IRQHandler | |
080013a0 w F .text 00000064 CRS_IRQHandler | |
08001588 g F .text 00000024 modm_context_stack_usage | |
08001f2c g .rodata 00000000 __init_array_end | |
20030000 g .noinit_sram2 00000000 __noinit_sram2_end | |
08001f98 g .rodata 00000000 __table_zero_extern_start | |
080013a0 w F .text 00000064 DMA1_Channel5_IRQHandler | |
080013a0 w F .text 00000064 EXTI4_IRQHandler | |
08001f98 g .rodata 00000000 __table_copy_intern_end | |
20000c24 g O .bss 00000004 f2counter | |
0800128a w F .text 00000002 modm_initialize_platform | |
080005f4 w F .text 00000058 _ZZN4modm5fiber4TaskC4ILj512EN6fiber4MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPS3_E_4_FUNESA_ | |
08080000 g .text 00000000 __flash_end | |
080013a0 w F .text 00000064 RTC_S_IRQHandler | |
080013a0 w F .text 00000064 RNG_IRQHandler | |
080013a0 w F .text 00000064 DMAMUX1_S_IRQHandler | |
08000524 w F .text 00000010 _ZZN4modm5fiber4TaskC4ILj512EN8fiber_y1MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPFvvEE_4_FUNESB_ | |
20000c20 g O .bss 00000004 total_counter | |
08001084 g F .text 0000002c _ZN4modm8platform3Rcc17setVoltageScalingENS1_14VoltageScalingEm | |
080013a0 w F .text 00000064 DMA1_Channel3_IRQHandler | |
080013a0 w F .text 00000064 COMP_IRQHandler | |
200014c0 g .noinit 00000000 __noinit_start | |
080013a0 w F .text 00000064 TIM1_UP_IRQHandler | |
20002580 g .faststack 00000000 __faststack_end | |
080004d4 w F .text 00000010 _ZZN4modm5fiber4TaskC4ILj512EN10fiber_pingMUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPFvvEE_4_FUNESB_ | |
200014c0 g .noinit 00000000 __noinit_end | |
080013a0 w F .text 00000064 WWDG_IRQHandler | |
080013a0 w F .text 00000064 I2C4_EV_IRQHandler | |
080014cc g F .text 0000004c LPUART1_IRQHandler | |
080010b0 g F .text 00000028 _ZN4modm8platform3Rcc17enableSystemClockENS1_17SystemClockSourceEm | |
080013a0 w F .text 00000064 DMA2_Channel6_IRQHandler | |
080013a0 w F .text 00000064 FDCAN1_IT0_IRQHandler | |
080013a0 w F .text 00000064 TIM2_IRQHandler | |
08001560 g F .text 00000028 modm_context_watermark | |
080013a0 w F .text 00000064 TAMP_S_IRQHandler | |
20002580 g .heap_sram1 00000000 __heap_sram1_start | |
2000006c g .stack 00000000 __main_stack_limit | |
20000c3c g O .bss 0000001c _ZN4modm3log5errorE | |
080013a0 w F .text 00000064 EXTI7_IRQHandler | |
08000504 w F .text 00000010 _ZZN4modm5fiber4TaskC4ILj512ERFvvEEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPS3_E_4_FUNESB_ | |
080013a0 w F .text 00000064 TIM1_BRK_IRQHandler | |
080013a0 w F .text 00000064 DAC_IRQHandler | |
08001198 g F .text 0000005c modm_assert_report | |
080013a0 w F .text 00000064 EXTI1_IRQHandler | |
08000000 g .text 00000000 __rom_start | |
20030000 g .heap_sram1 00000000 __heap_sram1_end | |
08001f98 g .rodata 00000000 __table_copy_extern_start | |
08000000 g .text 00000000 __flash_start | |
20002580 g .noinit_sram1 00000000 __noinit_sram1_start | |
08000750 w F .text 00000048 _ZN10fiber_pongMUlvE_4_FUNEv | |
200018f0 g O .faststack 00000218 fiber4 | |
08000f10 g F .text 00000032 _ZN4modm8IOStream12writePointerEPKv | |
080013a0 w F .text 00000064 GTZC_IRQHandler | |
080013a0 w F .text 00000064 USART2_IRQHandler | |
080013a0 w F .text 00000064 DFSDM1_FLT0_IRQHandler | |
08000262 w F .text 00000010 _ZN4modm8IOStreamlsEPKc | |
200014c0 g .bss_sram1 00000000 __bss_sram1_start | |
20030000 g .data_sram2 00000000 __data_sram2_end | |
080015ac g F .text 00000026 modm_context_start | |
08000d10 w F .text 0000002c _ZN4modm8delay_msEm | |
080013a0 w F .text 00000064 I2C2_ER_IRQHandler | |
080013a0 w F .text 00000064 DMA1_Channel2_IRQHandler | |
080013a0 w F .text 00000064 TIM8_BRK_IRQHandler | |
08001cc0 w F .text 00000002 .hidden __aeabi_idiv0 | |
08001f20 g .rodata 00000000 __init_array_start | |
0000006c g *ABS* 00000000 EXCEPTION_FRAME_SIZE | |
080013a0 w F .text 00000064 FLASH_IRQHandler | |
080013a0 w F .text 00000064 BusFault_Handler | |
080013a0 w F .text 00000064 USART1_IRQHandler | |
080004c4 w F .text 00000010 _ZZN4modm5fiber4TaskC4ILj512EN10fiber_pongMUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPFvvEE_4_FUNESB_ | |
080013a0 w F .text 00000064 EXTI10_IRQHandler | |
080013a0 w F .text 00000064 SPI3_IRQHandler | |
08000548 w F .text 0000001c _ZN4modm10this_fiber5yieldEv | |
080013a0 w F .text 00000064 I2C1_ER_IRQHandler | |
080013a0 w F .text 00000064 FMC_IRQHandler | |
20030000 g .heap_sram2 00000000 __heap_sram2_start | |
20000c10 g O .fastdata 00000002 _ZN4modm8platform17delay_ns_per_loopE | |
20000c00 g .data 00000000 __data_start | |
080013a0 w F .text 00000064 EXTI6_IRQHandler | |
080015d2 g F .text 0000001c modm_context_jump | |
20000c18 g .fastcode 00000000 __fastcode_end | |
200014c0 g O .faststack 00000218 fiber_pong | |
080013a0 w F .text 00000064 LPTIM1_IRQHandler | |
08000000 g O .text 000001f0 vectorsRom | |
080013a0 w F .text 00000064 I2C4_ER_IRQHandler | |
08001904 g F .text 00000000 .hidden __aeabi_ldivmod | |
080001f0 g .build_id 00000000 __build_id | |
080013a0 w F .text 00000064 ICACHE_IRQHandler | |
08001544 g F .text 0000001c modm_context_reset | |
080013a0 w F .text 00000064 SAI1_IRQHandler | |
080006b8 g F .text 00000044 _Z15fiber_function2m | |
080013a0 w F .text 00000064 HASH_IRQHandler | |
08000cd8 w F .text 00000006 _ZN4modm15IODeviceWrapperINS_8platform7Lpuart1ELNS_8IOBufferE1EE4readERc | |
080013a0 w F .text 00000064 DMA2_Channel3_IRQHandler | |
Disassembly of section .text: | |
08000220 <_ZN4modm4endlERNS_8IOStreamE>: | |
_ZN4modm8IOStream4endlEv(): | |
./modm/src/modm/io/iostream.hpp:108 | |
} | |
inline IOStream& | |
endl() | |
{ | |
mode = Mode::Ascii; | |
8000220: 2300 movs r3, #0 | |
_ZN4modm4endlERNS_8IOStreamE(): | |
./modm/src/modm/io/iostream.hpp:279 | |
{ return ios.flush(); } | |
//// Write a newline. **DOES NOT FLUSH THE STREAM!** | |
inline IOStream& | |
endl(IOStream& ios) | |
{ return ios.endl(); } | |
8000222: b510 push {r4, lr} | |
8000224: 4604 mov r4, r0 | |
_ZN4modm8IOStream4endlEv(): | |
./modm/src/modm/io/iostream.hpp:108 | |
mode = Mode::Ascii; | |
8000226: 6043 str r3, [r0, #4] | |
./modm/src/modm/io/iostream.hpp:109 | |
device->write('\n'); | |
8000228: 6800 ldr r0, [r0, #0] | |
800022a: 210a movs r1, #10 | |
800022c: 6803 ldr r3, [r0, #0] | |
800022e: 689b ldr r3, [r3, #8] | |
8000230: 4798 blx r3 | |
_ZN4modm4endlERNS_8IOStreamE(): | |
./modm/src/modm/io/iostream.hpp:279 | |
{ return ios.endl(); } | |
8000232: 4620 mov r0, r4 | |
8000234: bd10 pop {r4, pc} | |
... | |
08000238 <_ZN4modm5fiber4Task5startEv.isra.0>: | |
_ZN4modm5fiber4Task5startEv(): | |
./modm/src/modm/processing/fiber/task.hpp:225 | |
} | |
inline bool | |
Task::start() | |
{ | |
if (isRunning()) return false; | |
8000238: 6903 ldr r3, [r0, #16] | |
./modm/src/modm/processing/fiber/task.hpp:223 | |
Task::start() | |
800023a: b510 push {r4, lr} | |
800023c: 4604 mov r4, r0 | |
./modm/src/modm/processing/fiber/task.hpp:225 | |
if (isRunning()) return false; | |
800023e: b93b cbnz r3, 8000250 <_ZN4modm5fiber4Task5startEv.isra.0+0x18> | |
./modm/src/modm/processing/fiber/task.hpp:226 | |
modm_context_reset(&ctx); | |
8000240: f001 f980 bl 8001544 <modm_context_reset> | |
_ZN4modm5fiber9Scheduler3addERNS0_4TaskE(): | |
./modm/src/modm/processing/fiber/scheduler.hpp:125 | |
} | |
void | |
add(Task& task) | |
{ | |
task.scheduler = this; | |
8000244: 4b05 ldr r3, [pc, #20] ; (800025c <_ZN4modm5fiber4Task5startEv.isra.0+0x24>) | |
./modm/src/modm/processing/fiber/scheduler.hpp:126 | |
if (last == nullptr) | |
8000246: 681a ldr r2, [r3, #0] | |
./modm/src/modm/processing/fiber/scheduler.hpp:125 | |
task.scheduler = this; | |
8000248: 6123 str r3, [r4, #16] | |
./modm/src/modm/processing/fiber/scheduler.hpp:126 | |
if (last == nullptr) | |
800024a: b912 cbnz r2, 8000252 <_ZN4modm5fiber4Task5startEv.isra.0+0x1a> | |
./modm/src/modm/processing/fiber/scheduler.hpp:128 | |
{ | |
task.next = &task; | |
800024c: 60e4 str r4, [r4, #12] | |
_ZN4modm5fiber9Scheduler7runLastEPNS0_4TaskE(): | |
./modm/src/modm/processing/fiber/scheduler.hpp:71 | |
last = task; | |
800024e: 601c str r4, [r3, #0] | |
_ZN4modm5fiber4Task5startEv(): | |
./modm/src/modm/processing/fiber/task.hpp:229 | |
Scheduler::instance().add(*this); | |
return true; | |
} | |
8000250: bd10 pop {r4, pc} | |
_ZN4modm5fiber9Scheduler7runLastEPNS0_4TaskE(): | |
./modm/src/modm/processing/fiber/scheduler.hpp:69 | |
task->next = last->next; | |
8000252: 68d1 ldr r1, [r2, #12] | |
8000254: 60e1 str r1, [r4, #12] | |
./modm/src/modm/processing/fiber/scheduler.hpp:70 | |
last->next = task; | |
8000256: 60d4 str r4, [r2, #12] | |
8000258: e7f9 b.n 800024e <_ZN4modm5fiber4Task5startEv.isra.0+0x16> | |
800025a: bf00 nop | |
800025c: 20000c2c .word 0x20000c2c | |
08000260 <_ZN4modm8IOStreamlsEPFRS0_S1_E.isra.0>: | |
_ZN4modm8IOStreamlsEPFRS0_S1_E(): | |
./modm/src/modm/io/iostream.hpp:209 | |
{ return format(*this); } | |
8000260: 4708 bx r1 | |
08000262 <_ZN4modm8IOStreamlsEPKc>: | |
_ZN4modm8IOStreamlsEPKc(): | |
./modm/src/modm/io/iostream.hpp:193 | |
operator << (const char* s) | |
8000262: b510 push {r4, lr} | |
8000264: 4604 mov r4, r0 | |
./modm/src/modm/io/iostream.hpp:194 | |
{ device->write(s); return *this; } | |
8000266: 6800 ldr r0, [r0, #0] | |
8000268: 6803 ldr r3, [r0, #0] | |
800026a: 68db ldr r3, [r3, #12] | |
800026c: 4798 blx r3 | |
800026e: 4620 mov r0, r4 | |
8000270: bd10 pop {r4, pc} | |
... | |
08000274 <_ZN5Board10initializeEv>: | |
_ZN5Board10initializeEv(): | |
./modm/src/modm/board/board.hpp:158 | |
/// @{ | |
using LoggerDevice = modm::IODeviceWrapper<stlink::Uart, modm::IOBuffer::BlockIfFull>; | |
inline void | |
initialize() | |
{ | |
8000274: b513 push {r0, r1, r4, lr} | |
_ZN5Board11SystemClock6enableEv(): | |
./modm/src/modm/board/board.hpp:90 | |
Rcc::setVoltageScaling(Rcc::VoltageScaling::Range0); | |
8000276: f44f 6100 mov.w r1, #2048 ; 0x800 | |
800027a: 2000 movs r0, #0 | |
800027c: f000 ff02 bl 8001084 <_ZN4modm8platform3Rcc17setVoltageScalingENS1_14VoltageScalingEm> | |
./modm/src/modm/board/board.hpp:91 | |
Rcc::enableMultiSpeedInternalClock(Rcc::MsiFrequency::MHz4); | |
8000280: f44f 6100 mov.w r1, #2048 ; 0x800 | |
8000284: 2060 movs r0, #96 ; 0x60 | |
8000286: f000 feab bl 8000fe0 <_ZN4modm8platform3Rcc29enableMultiSpeedInternalClockENS1_12MsiFrequencyEm> | |
./modm/src/modm/board/board.hpp:92 | |
const Rcc::PllFactors pllFactors{ | |
800028a: 4b72 ldr r3, [pc, #456] ; (8000454 <_ZN5Board10initializeEv+0x1e0>) | |
./modm/src/modm/board/board.hpp:98 | |
Rcc::enablePll(Rcc::PllSource::Msi, pllFactors); | |
800028c: f44f 6200 mov.w r2, #2048 ; 0x800 | |
./modm/src/modm/board/board.hpp:92 | |
const Rcc::PllFactors pllFactors{ | |
8000290: 6818 ldr r0, [r3, #0] | |
8000292: 889b ldrh r3, [r3, #4] | |
8000294: 9000 str r0, [sp, #0] | |
./modm/src/modm/board/board.hpp:98 | |
Rcc::enablePll(Rcc::PllSource::Msi, pllFactors); | |
8000296: 4669 mov r1, sp | |
8000298: 2001 movs r0, #1 | |
./modm/src/modm/board/board.hpp:92 | |
const Rcc::PllFactors pllFactors{ | |
800029a: f8ad 3004 strh.w r3, [sp, #4] | |
./modm/src/modm/board/board.hpp:98 | |
Rcc::enablePll(Rcc::PllSource::Msi, pllFactors); | |
800029e: f000 feb5 bl 800100c <_ZN4modm8platform3Rcc9enablePllENS1_9PllSourceERKNS1_10PllFactorsEm> | |
_ZN4modm8platform3Rcc15setFlashLatencyILm110000000ELt3300EEEmv(): | |
./modm/src/modm/platform/clock/rcc_impl.hpp:69 | |
Rcc::setFlashLatency() | |
{ | |
constexpr flash_latency fl = computeFlashLatency(Core_Hz, Core_mV); | |
static_assert(Core_Hz <= fl.max_frequency, "CPU Frequency is too high for this core voltage!"); | |
uint32_t acr = FLASH->ACR & ~FLASH_ACR_LATENCY; | |
80002a2: 4a6d ldr r2, [pc, #436] ; (8000458 <_ZN5Board10initializeEv+0x1e4>) | |
80002a4: 6813 ldr r3, [r2, #0] | |
80002a6: f023 030f bic.w r3, r3, #15 | |
./modm/src/modm/platform/clock/rcc_impl.hpp:71 | |
// set flash latency | |
acr |= fl.latency; | |
80002aa: f043 0304 orr.w r3, r3, #4 | |
./modm/src/modm/platform/clock/rcc_impl.hpp:72 | |
FLASH->ACR = acr; | |
80002ae: 6013 str r3, [r2, #0] | |
_ZN5Board10initializeEv(): | |
./modm/ext/cmsis/core/cmsis_gcc.h:271 | |
\details Acts as a special kind of Data Memory Barrier. | |
It completes when all explicit memory accesses before this instruction complete. | |
*/ | |
__STATIC_FORCEINLINE void __DSB(void) | |
{ | |
__ASM volatile ("dsb 0xF":::"memory"); | |
80002b0: f3bf 8f4f dsb sy | |
./modm/ext/cmsis/core/cmsis_gcc.h:260 | |
__ASM volatile ("isb 0xF":::"memory"); | |
80002b4: f3bf 8f6f isb sy | |
_ZN4modm8platform3Rcc15setAhbPrescalerENS1_12AhbPrescalerE(): | |
./modm/src/modm/platform/clock/rcc.hpp:300 | |
} | |
public: | |
static inline bool | |
setAhbPrescaler(AhbPrescaler prescaler) | |
{ | |
RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_HPRE) | uint32_t(prescaler); | |
80002b8: 4c68 ldr r4, [pc, #416] ; (800045c <_ZN5Board10initializeEv+0x1e8>) | |
_ZN5Board11SystemClock6enableEv(): | |
./modm/src/modm/board/board.hpp:100 | |
Rcc::enableSystemClock(Rcc::SystemClockSource::Pll); | |
80002ba: f44f 6100 mov.w r1, #2048 ; 0x800 | |
80002be: 2003 movs r0, #3 | |
80002c0: f000 fef6 bl 80010b0 <_ZN4modm8platform3Rcc17enableSystemClockENS1_17SystemClockSourceEm> | |
_ZN4modm8platform3Rcc15setAhbPrescalerENS1_12AhbPrescalerE(): | |
./modm/src/modm/platform/clock/rcc.hpp:300 | |
80002c4: 68a3 ldr r3, [r4, #8] | |
_ZN4modm8platform3Rcc19updateCoreFrequencyILm110000000EEEvv(): | |
./modm/src/modm/platform/clock/rcc_impl.hpp:81 | |
template< uint32_t Core_Hz > | |
void | |
Rcc::updateCoreFrequency() | |
{ | |
SystemCoreClock = Core_Hz; | |
80002c6: 4a66 ldr r2, [pc, #408] ; (8000460 <_ZN5Board10initializeEv+0x1ec>) | |
_ZN4modm8platform3Rcc15setAhbPrescalerENS1_12AhbPrescalerE(): | |
./modm/src/modm/platform/clock/rcc.hpp:300 | |
80002c8: f023 03f0 bic.w r3, r3, #240 ; 0xf0 | |
80002cc: 60a3 str r3, [r4, #8] | |
_ZN4modm8platform3Rcc16setApb1PrescalerENS1_13Apb1PrescalerE(): | |
./modm/src/modm/platform/clock/rcc.hpp:307 | |
} | |
static inline bool | |
setApb1Prescaler(Apb1Prescaler prescaler) | |
{ | |
RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_PPRE1) | uint32_t(prescaler); | |
80002ce: 68a3 ldr r3, [r4, #8] | |
_ZN5Board11SystemClock6enableEv(): | |
./modm/src/modm/board/board.hpp:107 | |
Rcc::enableInternalClockMHz48(); | |
80002d0: f44f 6000 mov.w r0, #2048 ; 0x800 | |
_ZN4modm8platform3Rcc16setApb1PrescalerENS1_13Apb1PrescalerE(): | |
./modm/src/modm/platform/clock/rcc.hpp:307 | |
80002d4: f423 63e0 bic.w r3, r3, #1792 ; 0x700 | |
80002d8: 60a3 str r3, [r4, #8] | |
_ZN4modm8platform3Rcc16setApb2PrescalerENS1_13Apb2PrescalerE(): | |
./modm/src/modm/platform/clock/rcc.hpp:314 | |
} | |
static inline bool | |
setApb2Prescaler(Apb2Prescaler prescaler) | |
{ | |
RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_PPRE2) | uint32_t(prescaler); | |
80002da: 68a3 ldr r3, [r4, #8] | |
80002dc: f423 5360 bic.w r3, r3, #14336 ; 0x3800 | |
80002e0: 60a3 str r3, [r4, #8] | |
_ZN4modm8platform3Rcc19updateCoreFrequencyILm110000000EEEvv(): | |
./modm/src/modm/platform/clock/rcc_impl.hpp:81 | |
80002e2: 4b60 ldr r3, [pc, #384] ; (8000464 <_ZN5Board10initializeEv+0x1f0>) | |
80002e4: 601a str r2, [r3, #0] | |
./modm/src/modm/platform/clock/rcc_impl.hpp:82 | |
delay_fcpu_MHz = computeDelayMhz(Core_Hz); | |
80002e6: f44f 625c mov.w r2, #3520 ; 0xdc0 | |
80002ea: 4b5f ldr r3, [pc, #380] ; (8000468 <_ZN5Board10initializeEv+0x1f4>) | |
80002ec: 801a strh r2, [r3, #0] | |
./modm/src/modm/platform/clock/rcc_impl.hpp:83 | |
delay_ns_per_loop = computeDelayNsPerLoop(Core_Hz); | |
80002ee: 221b movs r2, #27 | |
80002f0: 4b5e ldr r3, [pc, #376] ; (800046c <_ZN5Board10initializeEv+0x1f8>) | |
80002f2: 801a strh r2, [r3, #0] | |
_ZN5Board11SystemClock6enableEv(): | |
./modm/src/modm/board/board.hpp:107 | |
80002f4: f000 fe5e bl 8000fb4 <_ZN4modm8platform3Rcc24enableInternalClockMHz48Em> | |
_ZN4modm8platform3Rcc16setClock48SourceENS1_13Clock48SourceE(): | |
./modm/src/modm/platform/clock/rcc.hpp:278 | |
RCC->CCIPR1 = (RCC->CCIPR1 & ~RCC_CCIPR1_CLK48MSEL_Msk) | uint32_t(source); | |
80002f8: f8d4 3088 ldr.w r3, [r4, #136] ; 0x88 | |
_ZN4modm8platform12SysTickTimer10initializeIN5Board11SystemClockELf00000000EEEvv(): | |
./modm/src/modm/platform/clock/systick_timer.hpp:58 | |
{ | |
constexpr auto result = Prescaler::from_linear( | |
SystemClock::Frequency/8, 4, 1, (1ul << 24)-1); | |
PeripheralDriver::assertBaudrateInTolerance< result.frequency, 4, tolerance >(); | |
us_per_Ncycles = ((1ull << Ncycles) * 8'000'000ull) / SystemClock::Frequency; | |
80002fc: 4a5c ldr r2, [pc, #368] ; (8000470 <_ZN5Board10initializeEv+0x1fc>) | |
_ZN4modm8platform3Rcc16setClock48SourceENS1_13Clock48SourceE(): | |
./modm/src/modm/platform/clock/rcc.hpp:278 | |
80002fe: f023 6340 bic.w r3, r3, #201326592 ; 0xc000000 | |
8000302: f8c4 3088 str.w r3, [r4, #136] ; 0x88 | |
_ZN4modm8platform12SysTickTimer10initializeIN5Board11SystemClockELf00000000EEEvv(): | |
./modm/src/modm/platform/clock/systick_timer.hpp:58 | |
8000306: 4b5b ldr r3, [pc, #364] ; (8000474 <_ZN5Board10initializeEv+0x200>) | |
./modm/src/modm/platform/clock/systick_timer.hpp:60 | |
ms_per_Ncycles = ((1ull << Ncycles) * 8'000ull) / SystemClock::Frequency; | |
enable(result.index, false); | |
8000308: 2100 movs r1, #0 | |
./modm/src/modm/platform/clock/systick_timer.hpp:58 | |
us_per_Ncycles = ((1ull << Ncycles) * 8'000'000ull) / SystemClock::Frequency; | |
800030a: 601a str r2, [r3, #0] | |
./modm/src/modm/platform/clock/systick_timer.hpp:59 | |
ms_per_Ncycles = ((1ull << Ncycles) * 8'000ull) / SystemClock::Frequency; | |
800030c: 4b5a ldr r3, [pc, #360] ; (8000478 <_ZN5Board10initializeEv+0x204>) | |
800030e: 4a5b ldr r2, [pc, #364] ; (800047c <_ZN5Board10initializeEv+0x208>) | |
./modm/src/modm/platform/clock/systick_timer.hpp:60 | |
enable(result.index, false); | |
8000310: 485b ldr r0, [pc, #364] ; (8000480 <_ZN5Board10initializeEv+0x20c>) | |
./modm/src/modm/platform/clock/systick_timer.hpp:59 | |
ms_per_Ncycles = ((1ull << Ncycles) * 8'000ull) / SystemClock::Frequency; | |
8000312: 601a str r2, [r3, #0] | |
./modm/src/modm/platform/clock/systick_timer.hpp:60 | |
enable(result.index, false); | |
8000314: f000 fef4 bl 8001100 <_ZN4modm8platform12SysTickTimer6enableEmb> | |
_ZN4modm8platform7GpioSetIJNS0_10GpioStaticINS0_6detail6DataG7EEEEE9configureENS0_4Gpio10OutputTypeENS7_11OutputSpeedE(): | |
./modm/src/modm/platform/gpio/set.hpp:115 | |
if constexpr (mask(5)) { | |
GPIOF->OSPEEDR = (GPIOF->OSPEEDR & ~mask2(5)) | (i(speed) * mask2(5, 0b01)); | |
GPIOF->OTYPER = (GPIOF->OTYPER & ~mask(5)) | (i(type) ? mask(5) : 0); | |
} | |
if constexpr (mask(6)) { | |
GPIOG->OSPEEDR = (GPIOG->OSPEEDR & ~mask2(6)) | (i(speed) * mask2(6, 0b01)); | |
8000318: 4b5a ldr r3, [pc, #360] ; (8000484 <_ZN5Board10initializeEv+0x210>) | |
800031a: 689a ldr r2, [r3, #8] | |
800031c: f422 4240 bic.w r2, r2, #49152 ; 0xc000 | |
8000320: f442 4200 orr.w r2, r2, #32768 ; 0x8000 | |
8000324: 609a str r2, [r3, #8] | |
./modm/src/modm/platform/gpio/set.hpp:116 | |
GPIOG->OTYPER = (GPIOG->OTYPER & ~mask(6)) | (i(type) ? mask(6) : 0); | |
8000326: 685a ldr r2, [r3, #4] | |
8000328: f022 0280 bic.w r2, r2, #128 ; 0x80 | |
800032c: 605a str r2, [r3, #4] | |
_ZN4modm8platform7GpioSetIJNS0_10GpioStaticINS0_6detail6DataG7EEEEE9setOutputEv(): | |
./modm/src/modm/platform/gpio/set.hpp:72 | |
if constexpr (mask(6)) GPIOG->MODER = (GPIOG->MODER & ~mask2(6)) | mask2(6, i(Mode::Output)); | |
800032e: 681a ldr r2, [r3, #0] | |
8000330: f422 4240 bic.w r2, r2, #49152 ; 0xc000 | |
8000334: f442 4280 orr.w r2, r2, #16384 ; 0x4000 | |
8000338: 601a str r2, [r3, #0] | |
_ZN4modm8platform7GpioSetIJNS0_10GpioStaticINS0_6detail6DataG8EEEEE9configureENS0_4Gpio9InputTypeE(): | |
./modm/src/modm/platform/gpio/set.hpp:207 | |
} | |
if constexpr (mask(5)) { | |
GPIOF->PUPDR = (GPIOF->PUPDR & ~mask2(5)) | (i(type) * mask2(5, 0b01)); | |
} | |
if constexpr (mask(6)) { | |
GPIOG->PUPDR = (GPIOG->PUPDR & ~mask2(6)) | (i(type) * mask2(6, 0b01)); | |
800033a: 68da ldr r2, [r3, #12] | |
800033c: f422 3240 bic.w r2, r2, #196608 ; 0x30000 | |
8000340: f442 3280 orr.w r2, r2, #65536 ; 0x10000 | |
8000344: 60da str r2, [r3, #12] | |
_ZN4modm8platform7GpioSetIJNS0_10GpioStaticINS0_6detail6DataG8EEEEE8setInputEv(): | |
./modm/src/modm/platform/gpio/set.hpp:157 | |
GPIOG->MODER &= ~mask2(6); | |
8000346: 681a ldr r2, [r3, #0] | |
8000348: f422 3240 bic.w r2, r2, #196608 ; 0x30000 | |
800034c: 601a str r2, [r3, #0] | |
./modm/src/modm/platform/gpio/set.hpp:158 | |
GPIOG->OTYPER &= ~mask(6); | |
800034e: 685a ldr r2, [r3, #4] | |
8000350: f422 7280 bic.w r2, r2, #256 ; 0x100 | |
8000354: 605a str r2, [r3, #4] | |
./modm/src/modm/platform/gpio/set.hpp:159 | |
GPIOG->OSPEEDR &= ~mask2(6); | |
8000356: 689a ldr r2, [r3, #8] | |
8000358: f422 3240 bic.w r2, r2, #196608 ; 0x30000 | |
800035c: 609a str r2, [r3, #8] | |
_ZN4modm8platform10GpioStaticINS0_6detail6DataG7EE20setAlternateFunctionEh(): | |
./modm/src/modm/platform/gpio/static.hpp:71 | |
} | |
/// @endcond | |
public: | |
inline static void setAlternateFunction(uint8_t af) { | |
gport()->AFR[af_id] = (gport()->AFR[af_id] & ~af_mask) | ((af & 0xf) << af_offset); | |
800035e: 6a1a ldr r2, [r3, #32] | |
8000360: f022 4270 bic.w r2, r2, #4026531840 ; 0xf0000000 | |
8000364: f042 4200 orr.w r2, r2, #2147483648 ; 0x80000000 | |
8000368: 621a str r2, [r3, #32] | |
./modm/src/modm/platform/gpio/static.hpp:72 | |
gport()->MODER = (gport()->MODER & ~mask2) | (i(Mode::AlternateFunction) << (pin * 2)); | |
800036a: 681a ldr r2, [r3, #0] | |
800036c: f422 4240 bic.w r2, r2, #49152 ; 0xc000 | |
8000370: f442 4200 orr.w r2, r2, #32768 ; 0x8000 | |
8000374: 601a str r2, [r3, #0] | |
_ZN4modm8platform10GpioStaticINS0_6detail6DataG8EE20setAlternateFunctionEh(): | |
./modm/src/modm/platform/gpio/static.hpp:71 | |
gport()->AFR[af_id] = (gport()->AFR[af_id] & ~af_mask) | ((af & 0xf) << af_offset); | |
8000376: 6a5a ldr r2, [r3, #36] ; 0x24 | |
8000378: f022 020f bic.w r2, r2, #15 | |
800037c: f042 0208 orr.w r2, r2, #8 | |
8000380: 625a str r2, [r3, #36] ; 0x24 | |
./modm/src/modm/platform/gpio/static.hpp:72 | |
gport()->MODER = (gport()->MODER & ~mask2) | (i(Mode::AlternateFunction) << (pin * 2)); | |
8000382: 681a ldr r2, [r3, #0] | |
8000384: f422 3240 bic.w r2, r2, #196608 ; 0x30000 | |
8000388: f442 3200 orr.w r2, r2, #131072 ; 0x20000 | |
800038c: 601a str r2, [r3, #0] | |
_ZN5Board10initializeEv(): | |
./modm/ext/cmsis/core/cmsis_gcc.h:271 | |
__ASM volatile ("dsb 0xF":::"memory"); | |
800038e: f3bf 8f4f dsb sy | |
_ZN4modm8platform3Rcc9isEnabledILNS0_10PeripheralE29EEEbv(): | |
./modm/src/modm/platform/clock/rcc_impl.hpp:648 | |
if constexpr (peripheral == Peripheral::Lptim2) | |
return RCC->APB1ENR2 & RCC_APB1ENR2_LPTIM2EN; | |
if constexpr (peripheral == Peripheral::Lptim3) | |
return RCC->APB1ENR2 & RCC_APB1ENR2_LPTIM3EN; | |
if constexpr (peripheral == Peripheral::Lpuart1) | |
return RCC->APB1ENR2 & RCC_APB1ENR2_LPUART1EN; | |
8000392: 6de3 ldr r3, [r4, #92] ; 0x5c | |
_ZN4modm8platform3Rcc6enableILNS0_10PeripheralE29EEEvv(): | |
./modm/src/modm/platform/clock/rcc_impl.hpp:266 | |
if (not Rcc::isEnabled<peripheral>()) { | |
8000394: 07db lsls r3, r3, #31 | |
8000396: d40f bmi.n 80003b8 <_ZN5Board10initializeEv+0x144> | |
./modm/src/modm/platform/clock/rcc_impl.hpp:267 | |
RCC->APB1ENR2 |= RCC_APB1ENR2_LPUART1EN; __DSB(); | |
8000398: 6de3 ldr r3, [r4, #92] ; 0x5c | |
800039a: f043 0301 orr.w r3, r3, #1 | |
800039e: 65e3 str r3, [r4, #92] ; 0x5c | |
_ZN5Board10initializeEv(): | |
./modm/ext/cmsis/core/cmsis_gcc.h:271 | |
80003a0: f3bf 8f4f dsb sy | |
_ZN4modm8platform3Rcc6enableILNS0_10PeripheralE29EEEvv(): | |
./modm/src/modm/platform/clock/rcc_impl.hpp:268 | |
RCC->APB1RSTR2 |= RCC_APB1RSTR2_LPUART1RST; __DSB(); | |
80003a4: 6be3 ldr r3, [r4, #60] ; 0x3c | |
80003a6: f043 0301 orr.w r3, r3, #1 | |
80003aa: 63e3 str r3, [r4, #60] ; 0x3c | |
_ZN5Board10initializeEv(): | |
./modm/ext/cmsis/core/cmsis_gcc.h:271 | |
80003ac: f3bf 8f4f dsb sy | |
_ZN4modm8platform3Rcc6enableILNS0_10PeripheralE29EEEvv(): | |
./modm/src/modm/platform/clock/rcc_impl.hpp:269 | |
RCC->APB1RSTR2 &= ~RCC_APB1RSTR2_LPUART1RST; | |
80003b0: 6be3 ldr r3, [r4, #60] ; 0x3c | |
80003b2: f023 0301 bic.w r3, r3, #1 | |
80003b6: 63e3 str r3, [r4, #60] ; 0x3c | |
_ZN5Board10initializeEv(): | |
./modm/ext/cmsis/core/cmsis_gcc.h:271 | |
80003b8: f3bf 8f4f dsb sy | |
_ZN4modm8platform10LpuartHal116disableOperationEv(): | |
./modm/src/modm/platform/uart/lpuart_hal_1_impl.hpp:51 | |
} | |
void | |
LpuartHal1::disableOperation() | |
{ | |
LPUART1->CR1 &= ~USART_CR1_UE; | |
80003bc: 4b32 ldr r3, [pc, #200] ; (8000488 <_ZN5Board10initializeEv+0x214>) | |
_ZN4modm8platform10LpuartHal110initializeIN5Board11SystemClockELm115200ELf3c23d70aEEEvNS0_8UartBase6ParityENS5_10WordLengthE(): | |
./modm/src/modm/platform/uart/lpuart_hal_1_impl.hpp:74 | |
0x300, max); | |
modm::PeripheralDriver::assertBaudrateInTolerance< result.frequency, baudrate, tolerance >(); | |
uint32_t cr1 = LPUART1->CR1; | |
// Set baudrate | |
LPUART1->BRR = result.prescaler; | |
80003be: 4933 ldr r1, [pc, #204] ; (800048c <_ZN5Board10initializeEv+0x218>) | |
_ZN4modm8platform10LpuartHal116disableOperationEv(): | |
./modm/src/modm/platform/uart/lpuart_hal_1_impl.hpp:51 | |
LPUART1->CR1 &= ~USART_CR1_UE; | |
80003c0: 681a ldr r2, [r3, #0] | |
80003c2: f022 0201 bic.w r2, r2, #1 | |
80003c6: 601a str r2, [r3, #0] | |
_ZN4modm8platform10LpuartHal110initializeIN5Board11SystemClockELm115200ELf3c23d70aEEEvNS0_8UartBase6ParityENS5_10WordLengthE(): | |
./modm/src/modm/platform/uart/lpuart_hal_1_impl.hpp:72 | |
uint32_t cr1 = LPUART1->CR1; | |
80003c8: 681a ldr r2, [r3, #0] | |
./modm/src/modm/platform/uart/lpuart_hal_1_impl.hpp:74 | |
LPUART1->BRR = result.prescaler; | |
80003ca: 60d9 str r1, [r3, #12] | |
_ZN5Board10initializeEv(): | |
./modm/ext/cmsis/core/core_cm33.h:2591 | |
*/ | |
__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) | |
{ | |
if ((int32_t)(IRQn) >= 0) | |
{ | |
NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); | |
80003cc: 2180 movs r1, #128 ; 0x80 | |
_ZN4modm8platform10LpuartHal110initializeIN5Board11SystemClockELm115200ELf3c23d70aEEEvNS0_8UartBase6ParityENS5_10WordLengthE(): | |
./modm/src/modm/platform/uart/lpuart_hal_1_impl.hpp:81 | |
cr1 &= ~(USART_CR1_PCE | USART_CR1_PS); | |
cr1 |= static_cast<uint32_t>(parity); | |
// Set word length | |
#ifdef USART_CR1_M1 | |
cr1 &= ~(USART_CR1_M0 | USART_CR1_M1); | |
80003ce: f022 5280 bic.w r2, r2, #268435456 ; 0x10000000 | |
80003d2: f422 52b0 bic.w r2, r2, #5632 ; 0x1600 | |
./modm/src/modm/platform/uart/lpuart_hal_1_impl.hpp:87 | |
#else | |
cr1 &= ~USART_CR1_M; | |
#endif | |
cr1 |= static_cast<uint32_t>(length); | |
LPUART1->CR1 = cr1; | |
80003d6: 601a str r2, [r3, #0] | |
__NVIC_SetPriority(): | |
./modm/ext/cmsis/core/core_cm33.h:2591 | |
80003d8: 4a2d ldr r2, [pc, #180] ; (8000490 <_ZN5Board10initializeEv+0x21c>) | |
80003da: f882 1342 strb.w r1, [r2, #834] ; 0x342 | |
_ZN5Board10initializeEv(): | |
./modm/ext/cmsis/core/core_cm33.h:2395 | |
NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); | |
80003de: 2104 movs r1, #4 | |
__NVIC_EnableIRQ(): | |
./modm/ext/cmsis/core/core_cm33.h:2395 | |
80003e0: 6091 str r1, [r2, #8] | |
_ZN4modm8platform7GpioSetIJNS0_10GpioStaticINS0_6detail6DataC7EEEEE5resetEv(): | |
./modm/src/modm/platform/gpio/set.hpp:236 | |
static void reset() | |
{ | |
if constexpr (mask(0)) GPIOA->BSRR = ((uint32_t(mask(0)) & ~inverted(0)) << 16) | inverted(0); | |
if constexpr (mask(1)) GPIOB->BSRR = ((uint32_t(mask(1)) & ~inverted(1)) << 16) | inverted(1); | |
if constexpr (mask(2)) GPIOC->BSRR = ((uint32_t(mask(2)) & ~inverted(2)) << 16) | inverted(2); | |
80003e2: f44f 0000 mov.w r0, #8388608 ; 0x800000 | |
_ZN4modm8platform10LpuartHal120setTransmitterEnableEb(): | |
./modm/src/modm/platform/uart/lpuart_hal_1_impl.hpp:112 | |
void | |
LpuartHal1::setTransmitterEnable(bool enable) | |
{ | |
if (enable) { | |
LPUART1->CR1 |= USART_CR1_TE; | |
80003e6: 681a ldr r2, [r3, #0] | |
80003e8: f042 0208 orr.w r2, r2, #8 | |
80003ec: 601a str r2, [r3, #0] | |
_ZN4modm8platform10LpuartHal117setReceiverEnableEb(): | |
./modm/src/modm/platform/uart/lpuart_hal_1_impl.hpp:122 | |
void | |
LpuartHal1::setReceiverEnable(bool enable) | |
{ | |
if (enable) { | |
LPUART1->CR1 |= USART_CR1_RE; | |
80003ee: 681a ldr r2, [r3, #0] | |
80003f0: 430a orrs r2, r1 | |
80003f2: 601a str r2, [r3, #0] | |
_ZN4modm8platform10LpuartHal115enableOperationEv(): | |
./modm/src/modm/platform/uart/lpuart_hal_1_impl.hpp:45 | |
LPUART1->CR1 |= USART_CR1_UE; | |
80003f4: 681a ldr r2, [r3, #0] | |
_ZN4modm8platform7GpioSetIJNS0_10GpioStaticINS0_6detail6DataB7EEEEE5resetEv(): | |
./modm/src/modm/platform/gpio/set.hpp:235 | |
if constexpr (mask(1)) GPIOB->BSRR = ((uint32_t(mask(1)) & ~inverted(1)) << 16) | inverted(1); | |
80003f6: 4927 ldr r1, [pc, #156] ; (8000494 <_ZN5Board10initializeEv+0x220>) | |
_ZN4modm8platform10LpuartHal115enableOperationEv(): | |
./modm/src/modm/platform/uart/lpuart_hal_1_impl.hpp:45 | |
80003f8: f042 0201 orr.w r2, r2, #1 | |
80003fc: 601a str r2, [r3, #0] | |
_ZN4modm8platform7GpioSetIJNS0_10GpioStaticINS0_6detail6DataC7EEEEE5resetEv(): | |
./modm/src/modm/platform/gpio/set.hpp:236 | |
if constexpr (mask(2)) GPIOC->BSRR = ((uint32_t(mask(2)) & ~inverted(2)) << 16) | inverted(2); | |
80003fe: 4b26 ldr r3, [pc, #152] ; (8000498 <_ZN5Board10initializeEv+0x224>) | |
_ZN4modm8platform7GpioSetIJNS0_10GpioStaticINS0_6detail6DataA9EEEEE5resetEv(): | |
./modm/src/modm/platform/gpio/set.hpp:234 | |
if constexpr (mask(0)) GPIOA->BSRR = ((uint32_t(mask(0)) & ~inverted(0)) << 16) | inverted(0); | |
8000400: f5a1 6180 sub.w r1, r1, #1024 ; 0x400 | |
_ZN4modm8platform7GpioSetIJNS0_10GpioStaticINS0_6detail6DataC7EEEEE5resetEv(): | |
./modm/src/modm/platform/gpio/set.hpp:236 | |
if constexpr (mask(2)) GPIOC->BSRR = ((uint32_t(mask(2)) & ~inverted(2)) << 16) | inverted(2); | |
8000404: 6198 str r0, [r3, #24] | |
_ZN4modm8platform7GpioSetIJNS0_10GpioStaticINS0_6detail6DataC7EEEEE9setOutputEv(): | |
./modm/src/modm/platform/gpio/set.hpp:68 | |
if constexpr (mask(2)) GPIOC->MODER = (GPIOC->MODER & ~mask2(2)) | mask2(2, i(Mode::Output)); | |
8000406: 681a ldr r2, [r3, #0] | |
8000408: f422 4240 bic.w r2, r2, #49152 ; 0xc000 | |
800040c: f442 4280 orr.w r2, r2, #16384 ; 0x4000 | |
8000410: 601a str r2, [r3, #0] | |
_ZN4modm8platform7GpioSetIJNS0_10GpioStaticINS0_6detail6DataB7EEEEE5resetEv(): | |
./modm/src/modm/platform/gpio/set.hpp:235 | |
if constexpr (mask(1)) GPIOB->BSRR = ((uint32_t(mask(1)) & ~inverted(1)) << 16) | inverted(1); | |
8000412: f8c1 0418 str.w r0, [r1, #1048] ; 0x418 | |
_ZN4modm8platform7GpioSetIJNS0_10GpioStaticINS0_6detail6DataB7EEEEE9setOutputEv(): | |
./modm/src/modm/platform/gpio/set.hpp:67 | |
if constexpr (mask(1)) GPIOB->MODER = (GPIOB->MODER & ~mask2(1)) | mask2(1, i(Mode::Output)); | |
8000416: f8d1 2400 ldr.w r2, [r1, #1024] ; 0x400 | |
800041a: f422 4240 bic.w r2, r2, #49152 ; 0xc000 | |
800041e: f442 4280 orr.w r2, r2, #16384 ; 0x4000 | |
8000422: f8c1 2400 str.w r2, [r1, #1024] ; 0x400 | |
_ZN4modm8platform7GpioSetIJNS0_10GpioStaticINS0_6detail6DataA9EEEEE5resetEv(): | |
./modm/src/modm/platform/gpio/set.hpp:234 | |
if constexpr (mask(0)) GPIOA->BSRR = ((uint32_t(mask(0)) & ~inverted(0)) << 16) | inverted(0); | |
8000426: f04f 7200 mov.w r2, #33554432 ; 0x2000000 | |
800042a: 618a str r2, [r1, #24] | |
_ZN4modm8platform7GpioSetIJNS0_10GpioStaticINS0_6detail6DataA9EEEEE9setOutputEv(): | |
./modm/src/modm/platform/gpio/set.hpp:66 | |
if constexpr (mask(0)) GPIOA->MODER = (GPIOA->MODER & ~mask2(0)) | mask2(0, i(Mode::Output)); | |
800042c: 680a ldr r2, [r1, #0] | |
800042e: f422 2240 bic.w r2, r2, #786432 ; 0xc0000 | |
8000432: f442 2280 orr.w r2, r2, #262144 ; 0x40000 | |
8000436: 600a str r2, [r1, #0] | |
_ZN4modm8platform7GpioSetIJNS0_10GpioStaticINS0_6detail7DataC13EEEEE8setInputEv(): | |
./modm/src/modm/platform/gpio/set.hpp:137 | |
GPIOC->MODER &= ~mask2(2); | |
8000438: 681a ldr r2, [r3, #0] | |
800043a: f022 6240 bic.w r2, r2, #201326592 ; 0xc000000 | |
800043e: 601a str r2, [r3, #0] | |
./modm/src/modm/platform/gpio/set.hpp:138 | |
GPIOC->OTYPER &= ~mask(2); | |
8000440: 685a ldr r2, [r3, #4] | |
8000442: f422 5200 bic.w r2, r2, #8192 ; 0x2000 | |
8000446: 605a str r2, [r3, #4] | |
./modm/src/modm/platform/gpio/set.hpp:139 | |
GPIOC->OSPEEDR &= ~mask2(2); | |
8000448: 689a ldr r2, [r3, #8] | |
800044a: f022 6240 bic.w r2, r2, #201326592 ; 0xc000000 | |
800044e: 609a str r2, [r3, #8] | |
_ZN5Board10initializeEv(): | |
./modm/src/modm/board/board.hpp:170 | |
LedGreen::setOutput(modm::Gpio::Low); | |
LedBlue::setOutput(modm::Gpio::Low); | |
LedRed::setOutput(modm::Gpio::Low); | |
Button::setInput(); | |
} | |
8000450: b002 add sp, #8 | |
8000452: bd10 pop {r4, pc} | |
8000454: 08001ebe .word 0x08001ebe | |
8000458: 40022000 .word 0x40022000 | |
800045c: 40021000 .word 0x40021000 | |
8000460: 068e7780 .word 0x068e7780 | |
8000464: 20000c14 .word 0x20000c14 | |
8000468: 20000c12 .word 0x20000c12 | |
800046c: 20000c10 .word 0x20000c10 | |
8000470: 129e4129 .word 0x129e4129 | |
8000474: 20000c34 .word 0x20000c34 | |
8000478: 20000c38 .word 0x20000c38 | |
800047c: 0004c429 .word 0x0004c429 | |
8000480: 003473bb .word 0x003473bb | |
8000484: 42021800 .word 0x42021800 | |
8000488: 40008000 .word 0x40008000 | |
800048c: 0003badc .word 0x0003badc | |
8000490: e000e100 .word 0xe000e100 | |
8000494: 42020400 .word 0x42020400 | |
8000498: 42020800 .word 0x42020800 | |
0800049c <_ZN4modm5fiber9Scheduler10unscheduleEv>: | |
_ZN4modm5fiber9Scheduler10unscheduleEv(): | |
./modm/src/modm/processing/fiber/scheduler.hpp:109 | |
unschedule() | |
800049c: b508 push {r3, lr} | |
800049e: 4603 mov r3, r0 | |
80004a0: 2200 movs r2, #0 | |
./modm/src/modm/processing/fiber/scheduler.hpp:111 | |
Task* next = current->next; | |
80004a2: 6840 ldr r0, [r0, #4] | |
_ZN4modm5fiber9Scheduler13removeCurrentEv(): | |
./modm/src/modm/processing/fiber/scheduler.hpp:77 | |
if (current == last) last = nullptr; | |
80004a4: 681c ldr r4, [r3, #0] | |
_ZN4modm5fiber9Scheduler10unscheduleEv(): | |
./modm/src/modm/processing/fiber/scheduler.hpp:111 | |
Task* next = current->next; | |
80004a6: 68c1 ldr r1, [r0, #12] | |
_ZN4modm5fiber9Scheduler13removeCurrentEv(): | |
./modm/src/modm/processing/fiber/scheduler.hpp:77 | |
if (current == last) last = nullptr; | |
80004a8: 42a0 cmp r0, r4 | |
80004aa: bf0c ite eq | |
80004ac: 601a streq r2, [r3, #0] | |
./modm/src/modm/processing/fiber/scheduler.hpp:78 | |
else last->next = current->next; | |
80004ae: 60e1 strne r1, [r4, #12] | |
./modm/src/modm/processing/fiber/scheduler.hpp:80 | |
current->scheduler = nullptr; | |
80004b0: e9c0 2203 strd r2, r2, [r0, #12] | |
_ZN4modm5fiber9Scheduler10unscheduleEv(): | |
./modm/src/modm/processing/fiber/scheduler.hpp:113 | |
if (empty()) | |
80004b4: 681a ldr r2, [r3, #0] | |
80004b6: b912 cbnz r2, 80004be <_ZN4modm5fiber9Scheduler10unscheduleEv+0x22> | |
./modm/src/modm/processing/fiber/scheduler.hpp:115 | |
current = nullptr; | |
80004b8: 605a str r2, [r3, #4] | |
./modm/src/modm/processing/fiber/scheduler.hpp:116 | |
modm_context_end(); | |
80004ba: f001 f898 bl 80015ee <modm_context_end> | |
_ZN4modm5fiber9Scheduler4jumpERNS0_4TaskE(): | |
./modm/src/modm/processing/fiber/scheduler.hpp:94 | |
current = &other; | |
80004be: 6059 str r1, [r3, #4] | |
./modm/src/modm/processing/fiber/scheduler.hpp:95 | |
modm_context_jump(&from->ctx, &other.ctx); | |
80004c0: f001 f887 bl 80015d2 <modm_context_jump> | |
080004c4 <_ZZN4modm5fiber4TaskC4ILj512EN10fiber_pongMUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPFvvEE_4_FUNESB_>: | |
_ZZN4modm5fiber4TaskC4ILj512EN10fiber_pongMUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPFvvEE_4_FUNESB_(): | |
./modm/src/modm/processing/fiber/task.hpp:187 | |
auto caller = (uintptr_t) +[](Callable fn) | |
80004c4: b508 push {r3, lr} | |
_ZZN4modm5fiber4TaskC4ILj512EN10fiber_pongMUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENKUlPFvvEE_clESB_(): | |
./modm/src/modm/processing/fiber/task.hpp:191 | |
} else fn(); | |
80004c6: 4780 blx r0 | |
./modm/src/modm/processing/fiber/task.hpp:192 | |
fiber::Scheduler::instance().unschedule(); | |
80004c8: 4801 ldr r0, [pc, #4] ; (80004d0 <_ZZN4modm5fiber4TaskC4ILj512EN10fiber_pongMUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPFvvEE_4_FUNESB_+0xc>) | |
80004ca: f7ff ffe7 bl 800049c <_ZN4modm5fiber9Scheduler10unscheduleEv> | |
80004ce: bf00 nop | |
80004d0: 20000c2c .word 0x20000c2c | |
080004d4 <_ZZN4modm5fiber4TaskC4ILj512EN10fiber_pingMUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPFvvEE_4_FUNESB_>: | |
_ZZN4modm5fiber4TaskC4ILj512EN10fiber_pingMUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPFvvEE_4_FUNESB_(): | |
./modm/src/modm/processing/fiber/task.hpp:187 | |
auto caller = (uintptr_t) +[](Callable fn) | |
80004d4: b508 push {r3, lr} | |
_ZZN4modm5fiber4TaskC4ILj512EN10fiber_pingMUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENKUlPFvvEE_clESB_(): | |
./modm/src/modm/processing/fiber/task.hpp:191 | |
} else fn(); | |
80004d6: 4780 blx r0 | |
./modm/src/modm/processing/fiber/task.hpp:192 | |
fiber::Scheduler::instance().unschedule(); | |
80004d8: 4801 ldr r0, [pc, #4] ; (80004e0 <_ZZN4modm5fiber4TaskC4ILj512EN10fiber_pingMUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPFvvEE_4_FUNESB_+0xc>) | |
80004da: f7ff ffdf bl 800049c <_ZN4modm5fiber9Scheduler10unscheduleEv> | |
80004de: bf00 nop | |
80004e0: 20000c2c .word 0x20000c2c | |
080004e4 <_ZZN4modm5fiber4TaskC4ILj512EN6fiber3MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPFvvEE_4_FUNESB_>: | |
_ZZN4modm5fiber4TaskC4ILj512EN6fiber3MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPFvvEE_4_FUNESB_(): | |
./modm/src/modm/processing/fiber/task.hpp:187 | |
auto caller = (uintptr_t) +[](Callable fn) | |
80004e4: b508 push {r3, lr} | |
_ZZN4modm5fiber4TaskC4ILj512EN6fiber3MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENKUlPFvvEE_clESB_(): | |
./modm/src/modm/processing/fiber/task.hpp:191 | |
} else fn(); | |
80004e6: 4780 blx r0 | |
./modm/src/modm/processing/fiber/task.hpp:192 | |
fiber::Scheduler::instance().unschedule(); | |
80004e8: 4801 ldr r0, [pc, #4] ; (80004f0 <_ZZN4modm5fiber4TaskC4ILj512EN6fiber3MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPFvvEE_4_FUNESB_+0xc>) | |
80004ea: f7ff ffd7 bl 800049c <_ZN4modm5fiber9Scheduler10unscheduleEv> | |
80004ee: bf00 nop | |
80004f0: 20000c2c .word 0x20000c2c | |
080004f4 <_ZZN4modm5fiber4TaskC4ILj512EN6fiber2MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPFvvEE_4_FUNESB_>: | |
_ZZN4modm5fiber4TaskC4ILj512EN6fiber2MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPFvvEE_4_FUNESB_(): | |
./modm/src/modm/processing/fiber/task.hpp:187 | |
auto caller = (uintptr_t) +[](Callable fn) | |
80004f4: b508 push {r3, lr} | |
_ZZN4modm5fiber4TaskC4ILj512EN6fiber2MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENKUlPFvvEE_clESB_(): | |
./modm/src/modm/processing/fiber/task.hpp:191 | |
} else fn(); | |
80004f6: 4780 blx r0 | |
./modm/src/modm/processing/fiber/task.hpp:192 | |
fiber::Scheduler::instance().unschedule(); | |
80004f8: 4801 ldr r0, [pc, #4] ; (8000500 <_ZZN4modm5fiber4TaskC4ILj512EN6fiber2MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPFvvEE_4_FUNESB_+0xc>) | |
80004fa: f7ff ffcf bl 800049c <_ZN4modm5fiber9Scheduler10unscheduleEv> | |
80004fe: bf00 nop | |
8000500: 20000c2c .word 0x20000c2c | |
08000504 <_ZZN4modm5fiber4TaskC4ILj512ERFvvEEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPS3_E_4_FUNESB_>: | |
_ZZN4modm5fiber4TaskC4ILj512ERFvvEEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPS3_E_4_FUNESB_(): | |
./modm/src/modm/processing/fiber/task.hpp:187 | |
auto caller = (uintptr_t) +[](Callable fn) | |
8000504: b508 push {r3, lr} | |
_ZZN4modm5fiber4TaskC4ILj512ERFvvEEERNS0_5StackIXT_EEEOT0_NS0_5StartEENKUlPS3_E_clESB_(): | |
./modm/src/modm/processing/fiber/task.hpp:191 | |
} else fn(); | |
8000506: 4780 blx r0 | |
./modm/src/modm/processing/fiber/task.hpp:192 | |
fiber::Scheduler::instance().unschedule(); | |
8000508: 4801 ldr r0, [pc, #4] ; (8000510 <_ZZN4modm5fiber4TaskC4ILj512ERFvvEEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPS3_E_4_FUNESB_+0xc>) | |
800050a: f7ff ffc7 bl 800049c <_ZN4modm5fiber9Scheduler10unscheduleEv> | |
800050e: bf00 nop | |
8000510: 20000c2c .word 0x20000c2c | |
08000514 <_ZZN4modm5fiber4TaskC4ILj512EN8fiber_y2MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPFvvEE_4_FUNESB_>: | |
_ZZN4modm5fiber4TaskC4ILj512EN8fiber_y2MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPFvvEE_4_FUNESB_(): | |
./modm/src/modm/processing/fiber/task.hpp:187 | |
auto caller = (uintptr_t) +[](Callable fn) | |
8000514: b508 push {r3, lr} | |
_ZZN4modm5fiber4TaskC4ILj512EN8fiber_y2MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENKUlPFvvEE_clESB_(): | |
./modm/src/modm/processing/fiber/task.hpp:191 | |
} else fn(); | |
8000516: 4780 blx r0 | |
./modm/src/modm/processing/fiber/task.hpp:192 | |
fiber::Scheduler::instance().unschedule(); | |
8000518: 4801 ldr r0, [pc, #4] ; (8000520 <_ZZN4modm5fiber4TaskC4ILj512EN8fiber_y2MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPFvvEE_4_FUNESB_+0xc>) | |
800051a: f7ff ffbf bl 800049c <_ZN4modm5fiber9Scheduler10unscheduleEv> | |
800051e: bf00 nop | |
8000520: 20000c2c .word 0x20000c2c | |
08000524 <_ZZN4modm5fiber4TaskC4ILj512EN8fiber_y1MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPFvvEE_4_FUNESB_>: | |
_ZZN4modm5fiber4TaskC4ILj512EN8fiber_y1MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPFvvEE_4_FUNESB_(): | |
./modm/src/modm/processing/fiber/task.hpp:187 | |
auto caller = (uintptr_t) +[](Callable fn) | |
8000524: b508 push {r3, lr} | |
_ZZN4modm5fiber4TaskC4ILj512EN8fiber_y1MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENKUlPFvvEE_clESB_(): | |
./modm/src/modm/processing/fiber/task.hpp:191 | |
} else fn(); | |
8000526: 4780 blx r0 | |
./modm/src/modm/processing/fiber/task.hpp:192 | |
fiber::Scheduler::instance().unschedule(); | |
8000528: 4801 ldr r0, [pc, #4] ; (8000530 <_ZZN4modm5fiber4TaskC4ILj512EN8fiber_y1MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPFvvEE_4_FUNESB_+0xc>) | |
800052a: f7ff ffb7 bl 800049c <_ZN4modm5fiber9Scheduler10unscheduleEv> | |
800052e: bf00 nop | |
8000530: 20000c2c .word 0x20000c2c | |
08000534 <_ZN4modm5fiber9Scheduler3runEv>: | |
_ZNK4modm5fiber9Scheduler5emptyEv(): | |
./modm/src/modm/processing/fiber/scheduler.hpp:87 | |
return last == nullptr; | |
8000534: 4b03 ldr r3, [pc, #12] ; (8000544 <_ZN4modm5fiber9Scheduler3runEv+0x10>) | |
8000536: 681a ldr r2, [r3, #0] | |
_ZN4modm5fiber9Scheduler5startEv(): | |
./modm/src/modm/processing/fiber/scheduler.hpp:138 | |
} | |
bool | |
start() | |
{ | |
if (empty()) return false; | |
8000538: b11a cbz r2, 8000542 <_ZN4modm5fiber9Scheduler3runEv+0xe> | |
./modm/src/modm/processing/fiber/scheduler.hpp:139 | |
current = last->next; | |
800053a: 68d0 ldr r0, [r2, #12] | |
800053c: 6058 str r0, [r3, #4] | |
./modm/src/modm/processing/fiber/scheduler.hpp:140 | |
modm_context_start(¤t->ctx); | |
800053e: f001 b835 b.w 80015ac <modm_context_start> | |
_ZN4modm5fiber9Scheduler3runEv(): | |
./modm/src/modm/processing/fiber/scheduler.hpp:167 | |
/// Runs the currently active scheduler. | |
static void | |
run() | |
{ | |
instance().start(); | |
} | |
8000542: 4770 bx lr | |
8000544: 20000c2c .word 0x20000c2c | |
08000548 <_ZN4modm10this_fiber5yieldEv>: | |
_ZN4modm5fiber9Scheduler5yieldEv(): | |
./modm/src/modm/processing/fiber/scheduler.hpp:101 | |
if (current == nullptr) return; | |
8000548: 4b05 ldr r3, [pc, #20] ; (8000560 <_ZN4modm10this_fiber5yieldEv+0x18>) | |
800054a: 6858 ldr r0, [r3, #4] | |
800054c: b130 cbz r0, 800055c <_ZN4modm10this_fiber5yieldEv+0x14> | |
./modm/src/modm/processing/fiber/scheduler.hpp:102 | |
Task* next = current->next; | |
800054e: 68c1 ldr r1, [r0, #12] | |
./modm/src/modm/processing/fiber/scheduler.hpp:103 | |
if (next == current) return; | |
8000550: 4288 cmp r0, r1 | |
8000552: d003 beq.n 800055c <_ZN4modm10this_fiber5yieldEv+0x14> | |
_ZN4modm5fiber9Scheduler4jumpERNS0_4TaskE(): | |
./modm/src/modm/processing/fiber/scheduler.hpp:94 | |
current = &other; | |
8000554: e9c3 0100 strd r0, r1, [r3] | |
./modm/src/modm/processing/fiber/scheduler.hpp:95 | |
modm_context_jump(&from->ctx, &other.ctx); | |
8000558: f001 b83b b.w 80015d2 <modm_context_jump> | |
_ZN4modm10this_fiber5yieldEv(): | |
./modm/src/modm/processing/fiber/functions.hpp:44 | |
*/ | |
inline void | |
yield() | |
{ | |
modm::fiber::Scheduler::instance().yield(); | |
} | |
800055c: 4770 bx lr | |
800055e: bf00 nop | |
8000560: 20000c2c .word 0x20000c2c | |
08000564 <_Z15fiber_function1v>: | |
_Z15fiber_function1v(): | |
./main.cpp:27 | |
uint32_t total_counter=0; | |
modm_fastdata modm::CycleCounter counter; | |
void | |
fiber_function1() | |
{ | |
8000564: b570 push {r4, r5, r6, lr} | |
./main.cpp:28 | |
MODM_LOG_INFO << MODM_FILE_INFO << modm::endl; | |
8000566: 490b ldr r1, [pc, #44] ; (8000594 <_Z15fiber_function1v+0x30>) | |
8000568: 480b ldr r0, [pc, #44] ; (8000598 <_Z15fiber_function1v+0x34>) | |
800056a: f7ff fe7a bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
800056e: 490b ldr r1, [pc, #44] ; (800059c <_Z15fiber_function1v+0x38>) | |
8000570: f7ff fe76 bl 8000260 <_ZN4modm8IOStreamlsEPFRS0_S1_E.isra.0> | |
./main.cpp:29 | |
while (++f1counter < cycles) { modm::this_fiber::yield(); total_counter++; } | |
8000574: 4c0a ldr r4, [pc, #40] ; (80005a0 <_Z15fiber_function1v+0x3c>) | |
8000576: 4e0b ldr r6, [pc, #44] ; (80005a4 <_Z15fiber_function1v+0x40>) | |
8000578: 4d0b ldr r5, [pc, #44] ; (80005a8 <_Z15fiber_function1v+0x44>) | |
./main.cpp:29 (discriminator 1) | |
800057a: 6823 ldr r3, [r4, #0] | |
800057c: 3301 adds r3, #1 | |
800057e: 42b3 cmp r3, r6 | |
8000580: 6023 str r3, [r4, #0] | |
8000582: d900 bls.n 8000586 <_Z15fiber_function1v+0x22> | |
./main.cpp:30 | |
} | |
8000584: bd70 pop {r4, r5, r6, pc} | |
./main.cpp:29 (discriminator 2) | |
while (++f1counter < cycles) { modm::this_fiber::yield(); total_counter++; } | |
8000586: f7ff ffdf bl 8000548 <_ZN4modm10this_fiber5yieldEv> | |
800058a: 682b ldr r3, [r5, #0] | |
800058c: 3301 adds r3, #1 | |
800058e: 602b str r3, [r5, #0] | |
8000590: e7f3 b.n 800057a <_Z15fiber_function1v+0x16> | |
8000592: bf00 nop | |
8000594: 08001d68 .word 0x08001d68 | |
8000598: 20000c74 .word 0x20000c74 | |
800059c: 08000221 .word 0x08000221 | |
80005a0: 20000c28 .word 0x20000c28 | |
80005a4: 0001869f .word 0x0001869f | |
80005a8: 20000c20 .word 0x20000c20 | |
080005ac <_ZN6fiber3MUlvE_4_FUNEv>: | |
_ZN6fiber3MUlvE_4_FUNEv(): | |
./main.cpp:65 | |
modm_faststack modm::Fiber<> fiber_y1([](){ modm::this_fiber::yield(); counter.stop(); }); | |
modm_faststack modm::Fiber<> fiber_y2([](){ counter.start(); modm::this_fiber::yield(); }); | |
modm_faststack modm::Fiber<> fiber1(fiber_function1, modm::fiber::Start::Later); | |
modm_faststack modm::Fiber<> fiber2([](){ fiber_function2(cycles); }, modm::fiber::Start::Later); | |
modm_faststack modm::Fiber<> fiber3([](){ test.fiber_function3(); }, modm::fiber::Start::Later); | |
80005ac: b570 push {r4, r5, r6, lr} | |
_ZN4Test15fiber_function3Ev(): | |
./main.cpp:44 | |
MODM_LOG_INFO << MODM_FILE_INFO << modm::endl; | |
80005ae: 490b ldr r1, [pc, #44] ; (80005dc <_ZN6fiber3MUlvE_4_FUNEv+0x30>) | |
80005b0: 480b ldr r0, [pc, #44] ; (80005e0 <_ZN6fiber3MUlvE_4_FUNEv+0x34>) | |
80005b2: f7ff fe56 bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
80005b6: 490b ldr r1, [pc, #44] ; (80005e4 <_ZN6fiber3MUlvE_4_FUNEv+0x38>) | |
80005b8: f7ff fe52 bl 8000260 <_ZN4modm8IOStreamlsEPFRS0_S1_E.isra.0> | |
./main.cpp:45 | |
while (++f3counter < cycles) { modm::this_fiber::yield(); total_counter++; } | |
80005bc: 4c0a ldr r4, [pc, #40] ; (80005e8 <_ZN6fiber3MUlvE_4_FUNEv+0x3c>) | |
80005be: 4e0b ldr r6, [pc, #44] ; (80005ec <_ZN6fiber3MUlvE_4_FUNEv+0x40>) | |
80005c0: 4d0b ldr r5, [pc, #44] ; (80005f0 <_ZN6fiber3MUlvE_4_FUNEv+0x44>) | |
80005c2: 6823 ldr r3, [r4, #0] | |
80005c4: 3301 adds r3, #1 | |
80005c6: 42b3 cmp r3, r6 | |
80005c8: 6023 str r3, [r4, #0] | |
80005ca: d900 bls.n 80005ce <_ZN6fiber3MUlvE_4_FUNEv+0x22> | |
_ZN6fiber3MUlvE_4_FUNEv(): | |
./main.cpp:65 | |
modm_faststack modm::Fiber<> fiber3([](){ test.fiber_function3(); }, modm::fiber::Start::Later); | |
80005cc: bd70 pop {r4, r5, r6, pc} | |
_ZN4Test15fiber_function3Ev(): | |
./main.cpp:45 | |
while (++f3counter < cycles) { modm::this_fiber::yield(); total_counter++; } | |
80005ce: f7ff ffbb bl 8000548 <_ZN4modm10this_fiber5yieldEv> | |
80005d2: 682b ldr r3, [r5, #0] | |
80005d4: 3301 adds r3, #1 | |
80005d6: 602b str r3, [r5, #0] | |
80005d8: e7f3 b.n 80005c2 <_ZN6fiber3MUlvE_4_FUNEv+0x16> | |
80005da: bf00 nop | |
80005dc: 08001d78 .word 0x08001d78 | |
80005e0: 20000c74 .word 0x20000c74 | |
80005e4: 08000221 .word 0x08000221 | |
80005e8: 20000c18 .word 0x20000c18 | |
80005ec: 0001869f .word 0x0001869f | |
80005f0: 20000c20 .word 0x20000c20 | |
080005f4 <_ZZN4modm5fiber4TaskC4ILj512EN6fiber4MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPS3_E_4_FUNESA_>: | |
_ZZN4modm5fiber4TaskC4ILj512EN6fiber4MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPS3_E_4_FUNESA_(): | |
./modm/src/modm/processing/fiber/task.hpp:209 | |
auto caller = (uintptr_t) +[](std::decay_t<T>* closure) | |
80005f4: b508 push {r3, lr} | |
_ZN6fiber4MUlvE_clEv(): | |
./main.cpp:67 | |
modm_faststack modm::Fiber<> fiber4([cyc=uint32_t(0)]() mutable | |
{ cyc = cycles; test.fiber_function4(cyc); }, modm::fiber::Start::Later); | |
80005f6: 4b0d ldr r3, [pc, #52] ; (800062c <_ZZN4modm5fiber4TaskC4ILj512EN6fiber4MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPS3_E_4_FUNESA_+0x38>) | |
_ZN4Test15fiber_function4Em(): | |
./main.cpp:51 | |
MODM_LOG_INFO << MODM_FILE_INFO << modm::endl; | |
80005f8: 490d ldr r1, [pc, #52] ; (8000630 <_ZZN4modm5fiber4TaskC4ILj512EN6fiber4MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPS3_E_4_FUNESA_+0x3c>) | |
_ZN6fiber4MUlvE_clEv(): | |
./main.cpp:67 | |
{ cyc = cycles; test.fiber_function4(cyc); }, modm::fiber::Start::Later); | |
80005fa: 6003 str r3, [r0, #0] | |
_ZN4Test15fiber_function4Em(): | |
./main.cpp:51 | |
MODM_LOG_INFO << MODM_FILE_INFO << modm::endl; | |
80005fc: 480d ldr r0, [pc, #52] ; (8000634 <_ZZN4modm5fiber4TaskC4ILj512EN6fiber4MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPS3_E_4_FUNESA_+0x40>) | |
80005fe: f7ff fe30 bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
8000602: 490d ldr r1, [pc, #52] ; (8000638 <_ZZN4modm5fiber4TaskC4ILj512EN6fiber4MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPS3_E_4_FUNESA_+0x44>) | |
8000604: f7ff fe2c bl 8000260 <_ZN4modm8IOStreamlsEPFRS0_S1_E.isra.0> | |
./main.cpp:52 | |
while (++f4counter < cyc) { modm::this_fiber::yield(); total_counter++; } | |
8000608: 4c0c ldr r4, [pc, #48] ; (800063c <_ZZN4modm5fiber4TaskC4ILj512EN6fiber4MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPS3_E_4_FUNESA_+0x48>) | |
800060a: 4e0d ldr r6, [pc, #52] ; (8000640 <_ZZN4modm5fiber4TaskC4ILj512EN6fiber4MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPS3_E_4_FUNESA_+0x4c>) | |
800060c: 4d0d ldr r5, [pc, #52] ; (8000644 <_ZZN4modm5fiber4TaskC4ILj512EN6fiber4MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPS3_E_4_FUNESA_+0x50>) | |
800060e: 6863 ldr r3, [r4, #4] | |
8000610: 3301 adds r3, #1 | |
8000612: 42b3 cmp r3, r6 | |
8000614: 6063 str r3, [r4, #4] | |
8000616: d902 bls.n 800061e <_ZZN4modm5fiber4TaskC4ILj512EN6fiber4MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPS3_E_4_FUNESA_+0x2a> | |
_ZZN4modm5fiber4TaskC4ILj512EN6fiber4MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENKUlPS3_E_clESA_(): | |
./modm/src/modm/processing/fiber/task.hpp:214 | |
fiber::Scheduler::instance().unschedule(); | |
8000618: 480b ldr r0, [pc, #44] ; (8000648 <_ZZN4modm5fiber4TaskC4ILj512EN6fiber4MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPS3_E_4_FUNESA_+0x54>) | |
800061a: f7ff ff3f bl 800049c <_ZN4modm5fiber9Scheduler10unscheduleEv> | |
_ZN4Test15fiber_function4Em(): | |
./main.cpp:52 | |
800061e: f7ff ff93 bl 8000548 <_ZN4modm10this_fiber5yieldEv> | |
8000622: 682b ldr r3, [r5, #0] | |
8000624: 3301 adds r3, #1 | |
8000626: 602b str r3, [r5, #0] | |
8000628: e7f1 b.n 800060e <_ZZN4modm5fiber4TaskC4ILj512EN6fiber4MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartEENUlPS3_E_4_FUNESA_+0x1a> | |
800062a: bf00 nop | |
800062c: 000186a0 .word 0x000186a0 | |
8000630: 08001d88 .word 0x08001d88 | |
8000634: 20000c74 .word 0x20000c74 | |
8000638: 08000221 .word 0x08000221 | |
800063c: 20000c18 .word 0x20000c18 | |
8000640: 0001869f .word 0x0001869f | |
8000644: 20000c20 .word 0x20000c20 | |
8000648: 20000c2c .word 0x20000c2c | |
0800064c <_ZN4modm10this_fiber8poll_forIxSt5ratioILx1ELx1EEZNS0_9sleep_forIxS3_EEvNSt6chrono8durationIT_T0_EEEUlvE_EEbS9_OT1_.isra.0>: | |
_ZN4modm10this_fiber8poll_forIxSt5ratioILx1ELx1EEZNS0_9sleep_forIxS3_EEvNSt6chrono8durationIT_T0_EEEUlvE_EEbS9_OT1_(): | |
./modm/src/modm/processing/fiber/functions.hpp:77 | |
*/ | |
template< class Rep, class Period, class Function > | |
requires requires { std::is_invocable_r_v<bool, Function, void>; } | |
[[nodiscard]] | |
bool | |
poll_for(std::chrono::duration<Rep, Period> sleep_duration, Function &&condition) | |
800064c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} | |
8000650: 460c mov r4, r1 | |
8000652: 4605 mov r5, r0 | |
./modm/src/modm/processing/fiber/functions.hpp:85 | |
using Clock = std::conditional_t< | |
std::is_convertible_v<std::chrono::duration<Rep, Period>, | |
std::chrono::duration<Rep, std::milli>>, | |
modm::chrono::milli_clock, modm::chrono::micro_clock>; | |
const auto start = Clock::now(); | |
8000654: f000 fd68 bl 8001128 <_ZN4modm6chrono11milli_clock3nowEv> | |
_ZNSt6chrono20__duration_cast_implINS_8durationIxSt5ratioILx1ELx1000EEEES2_ILx1000ELx1EExLb0ELb1EE6__castIxS2_ILx1ELx1EEEES4_RKNS1_IT_T0_EE(): | |
././include/newlib/c++/12.2.1/bits/chrono.h:225 | |
8000658: f44f 777a mov.w r7, #1000 ; 0x3e8 | |
_ZN4modm10this_fiber8poll_forIxSt5ratioILx1ELx1EEZNS0_9sleep_forIxS3_EEvNSt6chrono8durationIT_T0_EEEUlvE_EEbS9_OT1_(): | |
./modm/src/modm/processing/fiber/functions.hpp:85 | |
800065c: 4606 mov r6, r0 | |
_ZNSt6chrono20__duration_cast_implINS_8durationIxSt5ratioILx1ELx1000EEEES2_ILx1ELx1EExLb1ELb1EE6__castImS3_EES4_RKNS1_IT_T0_EE(): | |
././include/newlib/c++/12.2.1/bits/chrono.h:199 | |
800065e: f04f 0800 mov.w r8, #0 | |
_ZNSt6chrono20__duration_cast_implINS_8durationIxSt5ratioILx1ELx1000EEEES2_ILx1000ELx1EExLb0ELb1EE6__castIxS2_ILx1ELx1EEEES4_RKNS1_IT_T0_EE(): | |
././include/newlib/c++/12.2.1/bits/chrono.h:225 | |
8000662: 437c muls r4, r7 | |
_ZN4modm10this_fiber8poll_forIxSt5ratioILx1ELx1EEZNS0_9sleep_forIxS3_EEvNSt6chrono8durationIT_T0_EEEUlvE_EEbS9_OT1_(): | |
./modm/src/modm/processing/fiber/functions.hpp:88 | |
do { | |
if (std::forward<Function>(condition)()) return true; | |
modm::this_fiber::yield(); | |
8000664: f7ff ff70 bl 8000548 <_ZN4modm10this_fiber5yieldEv> | |
./modm/src/modm/processing/fiber/functions.hpp:90 | |
} | |
while((Clock::now() - start) <= sleep_duration); | |
8000668: f000 fd5e bl 8001128 <_ZN4modm6chrono11milli_clock3nowEv> | |
_ZNSt6chrono20__duration_cast_implINS_8durationIxSt5ratioILx1ELx1000EEEES2_ILx1000ELx1EExLb0ELb1EE6__castIxS2_ILx1ELx1EEEES4_RKNS1_IT_T0_EE(): | |
././include/newlib/c++/12.2.1/bits/chrono.h:225 | |
800066c: fba5 1307 umull r1, r3, r5, r7 | |
_ZNSt6chronomiImSt5ratioILx1ELx1000EEmS2_EENSt11common_typeIJNS_8durationIT_T0_EENS4_IT1_T2_EEEE4typeERKS7_RKSA_(): | |
././include/newlib/c++/12.2.1/bits/chrono.h:650 | |
8000670: 1b82 subs r2, r0, r6 | |
_ZNSt6chrono20__duration_cast_implINS_8durationIxSt5ratioILx1ELx1000EEEES2_ILx1000ELx1EExLb0ELb1EE6__castIxS2_ILx1ELx1EEEES4_RKNS1_IT_T0_EE(): | |
././include/newlib/c++/12.2.1/bits/chrono.h:225 | |
8000672: 4423 add r3, r4 | |
_ZNSt6chronossImSt5ratioILx1ELx1000EExS1_ILx1ELx1EEEEDaRKNS_8durationIT_T0_EERKNS4_IT1_T2_EE(): | |
././include/newlib/c++/12.2.1/bits/chrono.h:775 | |
8000674: 4598 cmp r8, r3 | |
8000676: bf08 it eq | |
8000678: 428a cmpeq r2, r1 | |
800067a: d0f3 beq.n 8000664 <_ZN4modm10this_fiber8poll_forIxSt5ratioILx1ELx1EEZNS0_9sleep_forIxS3_EEvNSt6chrono8durationIT_T0_EEEUlvE_EEbS9_OT1_.isra.0+0x18> | |
800067c: 428a cmp r2, r1 | |
800067e: eb78 0303 sbcs.w r3, r8, r3 | |
8000682: dbef blt.n 8000664 <_ZN4modm10this_fiber8poll_forIxSt5ratioILx1ELx1EEZNS0_9sleep_forIxS3_EEvNSt6chrono8durationIT_T0_EEEUlvE_EEbS9_OT1_.isra.0+0x18> | |
_ZN4modm10this_fiber8poll_forIxSt5ratioILx1ELx1EEZNS0_9sleep_forIxS3_EEvNSt6chrono8durationIT_T0_EEEUlvE_EEbS9_OT1_(): | |
./modm/src/modm/processing/fiber/functions.hpp:92 | |
return false; | |
} | |
8000684: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} | |
08000688 <_ZN8fiber_y2MUlvE_4_FUNEv>: | |
_ZN8fiber_y2MUlvE_4_FUNEv(): | |
./main.cpp:61 | |
modm_faststack modm::Fiber<> fiber_y2([](){ counter.start(); modm::this_fiber::yield(); }); | |
8000688: b508 push {r3, lr} | |
_ZN4modm12CycleCounter5startEv(): | |
./modm/src/modm/driver/time/cycle_counter.hpp:36 | |
/// Sample the timer at the start of your measurement | |
modm_always_inline void | |
start() | |
{ | |
start_ = DWT->CYCCNT; | |
800068a: 4b03 ldr r3, [pc, #12] ; (8000698 <_ZN8fiber_y2MUlvE_4_FUNEv+0x10>) | |
800068c: 685a ldr r2, [r3, #4] | |
800068e: 4b03 ldr r3, [pc, #12] ; (800069c <_ZN8fiber_y2MUlvE_4_FUNEv+0x14>) | |
8000690: 601a str r2, [r3, #0] | |
_ZNK8fiber_y2MUlvE_clEv(): | |
./main.cpp:61 | |
8000692: f7ff ff59 bl 8000548 <_ZN4modm10this_fiber5yieldEv> | |
_ZN8fiber_y2MUlvE_4_FUNEv(): | |
./main.cpp:61 | |
8000696: bd08 pop {r3, pc} | |
8000698: e0001000 .word 0xe0001000 | |
800069c: 20000c04 .word 0x20000c04 | |
080006a0 <_ZN8fiber_y1MUlvE_4_FUNEv>: | |
_ZN8fiber_y1MUlvE_4_FUNEv(): | |
./main.cpp:60 | |
modm_faststack modm::Fiber<> fiber_y1([](){ modm::this_fiber::yield(); counter.stop(); }); | |
80006a0: b508 push {r3, lr} | |
_ZNK8fiber_y1MUlvE_clEv(): | |
./main.cpp:60 | |
80006a2: f7ff ff51 bl 8000548 <_ZN4modm10this_fiber5yieldEv> | |
_ZN4modm12CycleCounter4stopEv(): | |
./modm/src/modm/driver/time/cycle_counter.hpp:43 | |
/// Sample the timer at the end of your measurement | |
modm_always_inline void | |
stop() | |
{ | |
stop_ = DWT->CYCCNT; | |
80006a6: 4b02 ldr r3, [pc, #8] ; (80006b0 <_ZN8fiber_y1MUlvE_4_FUNEv+0x10>) | |
80006a8: 685a ldr r2, [r3, #4] | |
80006aa: 4b02 ldr r3, [pc, #8] ; (80006b4 <_ZN8fiber_y1MUlvE_4_FUNEv+0x14>) | |
80006ac: 605a str r2, [r3, #4] | |
_ZN8fiber_y1MUlvE_4_FUNEv(): | |
./main.cpp:60 | |
80006ae: bd08 pop {r3, pc} | |
80006b0: e0001000 .word 0xe0001000 | |
80006b4: 20000c04 .word 0x20000c04 | |
080006b8 <_Z15fiber_function2m>: | |
_Z15fiber_function2m(): | |
./main.cpp:34 | |
{ | |
80006b8: b570 push {r4, r5, r6, lr} | |
./main.cpp:35 | |
MODM_LOG_INFO << MODM_FILE_INFO << modm::endl; | |
80006ba: 490b ldr r1, [pc, #44] ; (80006e8 <_Z15fiber_function2m+0x30>) | |
./main.cpp:34 | |
{ | |
80006bc: 4604 mov r4, r0 | |
./main.cpp:35 | |
MODM_LOG_INFO << MODM_FILE_INFO << modm::endl; | |
80006be: 480b ldr r0, [pc, #44] ; (80006ec <_Z15fiber_function2m+0x34>) | |
80006c0: f7ff fdcf bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
80006c4: 490a ldr r1, [pc, #40] ; (80006f0 <_Z15fiber_function2m+0x38>) | |
80006c6: f7ff fdcb bl 8000260 <_ZN4modm8IOStreamlsEPFRS0_S1_E.isra.0> | |
./main.cpp:36 | |
while (++f2counter < cyc) { modm::this_fiber::yield(); total_counter++; } | |
80006ca: 4d0a ldr r5, [pc, #40] ; (80006f4 <_Z15fiber_function2m+0x3c>) | |
80006cc: 4e0a ldr r6, [pc, #40] ; (80006f8 <_Z15fiber_function2m+0x40>) | |
./main.cpp:36 (discriminator 1) | |
80006ce: 682b ldr r3, [r5, #0] | |
80006d0: 3301 adds r3, #1 | |
80006d2: 42a3 cmp r3, r4 | |
80006d4: 602b str r3, [r5, #0] | |
80006d6: d300 bcc.n 80006da <_Z15fiber_function2m+0x22> | |
./main.cpp:37 | |
} | |
80006d8: bd70 pop {r4, r5, r6, pc} | |
./main.cpp:36 (discriminator 2) | |
while (++f2counter < cyc) { modm::this_fiber::yield(); total_counter++; } | |
80006da: f7ff ff35 bl 8000548 <_ZN4modm10this_fiber5yieldEv> | |
80006de: 6833 ldr r3, [r6, #0] | |
80006e0: 3301 adds r3, #1 | |
80006e2: 6033 str r3, [r6, #0] | |
80006e4: e7f3 b.n 80006ce <_Z15fiber_function2m+0x16> | |
80006e6: bf00 nop | |
80006e8: 08001d98 .word 0x08001d98 | |
80006ec: 20000c74 .word 0x20000c74 | |
80006f0: 08000221 .word 0x08000221 | |
80006f4: 20000c24 .word 0x20000c24 | |
80006f8: 20000c20 .word 0x20000c20 | |
080006fc <_ZN6fiber2MUlvE_4_FUNEv>: | |
_ZNK6fiber2MUlvE_clEv(): | |
./main.cpp:64 | |
modm_faststack modm::Fiber<> fiber2([](){ fiber_function2(cycles); }, modm::fiber::Start::Later); | |
80006fc: 4801 ldr r0, [pc, #4] ; (8000704 <_ZN6fiber2MUlvE_4_FUNEv+0x8>) | |
80006fe: f7ff bfdb b.w 80006b8 <_Z15fiber_function2m> | |
8000702: bf00 nop | |
8000704: 000186a0 .word 0x000186a0 | |
08000708 <_ZN4modm8IOStream16writeIntegerModeImEEvT_>: | |
_ZN4modm8IOStream16writeIntegerModeImEEvT_(): | |
./modm/src/modm/io/iostream.hpp:223 | |
if (mode == Mode::Ascii) { | |
8000708: 6843 ldr r3, [r0, #4] | |
./modm/src/modm/io/iostream.hpp:220 | |
writeIntegerMode(const T v) | |
800070a: b570 push {r4, r5, r6, lr} | |
800070c: 4605 mov r5, r0 | |
800070e: 460e mov r6, r1 | |
./modm/src/modm/io/iostream.hpp:223 | |
if (mode == Mode::Ascii) { | |
8000710: b91b cbnz r3, 800071a <_ZN4modm8IOStream16writeIntegerModeImEEvT_+0x12> | |
./modm/src/modm/io/iostream.hpp:232 | |
} | |
8000712: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} | |
./modm/src/modm/io/iostream.hpp:224 | |
writeInteger(v); | |
8000716: f000 bc14 b.w 8000f42 <_ZN4modm8IOStream12writeIntegerEm> | |
./modm/src/modm/io/iostream.hpp:225 | |
} else if (mode == Mode::Binary) { | |
800071a: 2b02 cmp r3, #2 | |
./modm/src/modm/io/iostream.hpp:226 | |
for (uint8_t ii=t_bits-8; ii < t_bits; ii -= 8) | |
800071c: f04f 0418 mov.w r4, #24 | |
./modm/src/modm/io/iostream.hpp:225 | |
} else if (mode == Mode::Binary) { | |
8000720: d10a bne.n 8000738 <_ZN4modm8IOStream16writeIntegerModeImEEvT_+0x30> | |
./modm/src/modm/io/iostream.hpp:227 | |
writeBin(static_cast<std::make_unsigned_t<T>>(v) >> ii); | |
8000722: fa26 f104 lsr.w r1, r6, r4 | |
8000726: 3c08 subs r4, #8 | |
8000728: 4628 mov r0, r5 | |
800072a: b2c9 uxtb r1, r1 | |
800072c: b2e4 uxtb r4, r4 | |
800072e: f000 fbdd bl 8000eec <_ZN4modm8IOStream8writeBinEh> | |
./modm/src/modm/io/iostream.hpp:226 | |
for (uint8_t ii=t_bits-8; ii < t_bits; ii -= 8) | |
8000732: 2cf8 cmp r4, #248 ; 0xf8 | |
8000734: d1f5 bne.n 8000722 <_ZN4modm8IOStream16writeIntegerModeImEEvT_+0x1a> | |
./modm/src/modm/io/iostream.hpp:232 | |
} | |
8000736: bd70 pop {r4, r5, r6, pc} | |
./modm/src/modm/io/iostream.hpp:230 (discriminator 3) | |
writeHex(static_cast<std::make_unsigned_t<T>>(v) >> ii); | |
8000738: fa26 f104 lsr.w r1, r6, r4 | |
800073c: 3c08 subs r4, #8 | |
800073e: 4628 mov r0, r5 | |
8000740: b2c9 uxtb r1, r1 | |
8000742: b2e4 uxtb r4, r4 | |
8000744: f000 fbc6 bl 8000ed4 <_ZN4modm8IOStream8writeHexEh> | |
./modm/src/modm/io/iostream.hpp:229 (discriminator 3) | |
for (uint8_t ii=t_bits-8; ii < t_bits; ii -= 8) | |
8000748: 2cf8 cmp r4, #248 ; 0xf8 | |
800074a: d1f5 bne.n 8000738 <_ZN4modm8IOStream16writeIntegerModeImEEvT_+0x30> | |
800074c: e7f3 b.n 8000736 <_ZN4modm8IOStream16writeIntegerModeImEEvT_+0x2e> | |
... | |
08000750 <_ZN10fiber_pongMUlvE_4_FUNEv>: | |
_ZN10fiber_pongMUlvE_4_FUNEv(): | |
./main.cpp:77 | |
modm_faststack modm::Fiber<> fiber_ping([](){ | |
MODM_LOG_INFO << "ping = " << fiber_ping.stack_usage() << modm::endl; | |
modm::this_fiber::sleep_for(1s); | |
fiber_pong.start(); | |
}, modm::fiber::Start::Later); | |
modm_faststack modm::Fiber<> fiber_pong([](){ | |
8000750: b510 push {r4, lr} | |
_ZNK10fiber_pongMUlvE_clEv(): | |
./main.cpp:78 | |
MODM_LOG_INFO << "pong = " << fiber_pong.stack_usage() << modm::endl; | |
8000752: 490c ldr r1, [pc, #48] ; (8000784 <_ZN10fiber_pongMUlvE_4_FUNEv+0x34>) | |
8000754: 480c ldr r0, [pc, #48] ; (8000788 <_ZN10fiber_pongMUlvE_4_FUNEv+0x38>) | |
8000756: f7ff fd84 bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
800075a: 4604 mov r4, r0 | |
_ZNK4modm5fiber4Task11stack_usageEv(): | |
./modm/src/modm/processing/fiber/task.hpp:145 | |
return modm_context_stack_usage(&ctx); | |
800075c: 480b ldr r0, [pc, #44] ; (800078c <_ZN10fiber_pongMUlvE_4_FUNEv+0x3c>) | |
800075e: f000 ff13 bl 8001588 <modm_context_stack_usage> | |
8000762: 4601 mov r1, r0 | |
_ZN4modm8IOStreamlsERKj(): | |
./modm/src/modm/io/iostream.hpp:184 | |
{ writeIntegerMode(static_cast<uint32_t>(v)); return *this; } | |
8000764: 4620 mov r0, r4 | |
8000766: f7ff ffcf bl 8000708 <_ZN4modm8IOStream16writeIntegerModeImEEvT_> | |
_ZNK10fiber_pongMUlvE_clEv(): | |
./main.cpp:78 | |
800076a: 4620 mov r0, r4 | |
800076c: 4908 ldr r1, [pc, #32] ; (8000790 <_ZN10fiber_pongMUlvE_4_FUNEv+0x40>) | |
800076e: f7ff fd77 bl 8000260 <_ZN4modm8IOStreamlsEPFRS0_S1_E.isra.0> | |
_ZN4modm10this_fiber9sleep_forIxSt5ratioILx1ELx1EEEEvNSt6chrono8durationIT_T0_EE(): | |
./modm/src/modm/processing/fiber/functions.hpp:132 | |
*/ | |
template< class Rep, class Period > | |
void | |
sleep_for(std::chrono::duration<Rep, Period> sleep_duration) | |
{ | |
(void) poll_for(sleep_duration, []{ return false; }); | |
8000772: 2001 movs r0, #1 | |
8000774: 2100 movs r1, #0 | |
8000776: f7ff ff69 bl 800064c <_ZN4modm10this_fiber8poll_forIxSt5ratioILx1ELx1EEZNS0_9sleep_forIxS3_EEvNSt6chrono8durationIT_T0_EEEUlvE_EEbS9_OT1_.isra.0> | |
_ZN10fiber_pongMUlvE_4_FUNEv(): | |
./main.cpp:81 | |
modm::this_fiber::sleep_for(1s); | |
fiber_ping.start(); | |
}, modm::fiber::Start::Later); | |
800077a: e8bd 4010 ldmia.w sp!, {r4, lr} | |
_ZNK10fiber_pongMUlvE_clEv(): | |
./main.cpp:80 | |
fiber_ping.start(); | |
800077e: 4805 ldr r0, [pc, #20] ; (8000794 <_ZN10fiber_pongMUlvE_4_FUNEv+0x44>) | |
8000780: f7ff bd5a b.w 8000238 <_ZN4modm5fiber4Task5startEv.isra.0> | |
8000784: 08001da8 .word 0x08001da8 | |
8000788: 20000c74 .word 0x20000c74 | |
800078c: 200014c0 .word 0x200014c0 | |
8000790: 08000221 .word 0x08000221 | |
8000794: 200016d8 .word 0x200016d8 | |
08000798 <_ZN10fiber_pingMUlvE_4_FUNEv>: | |
_ZN10fiber_pingMUlvE_4_FUNEv(): | |
./main.cpp:72 | |
modm_faststack modm::Fiber<> fiber_ping([](){ | |
8000798: b510 push {r4, lr} | |
_ZNK10fiber_pingMUlvE_clEv(): | |
./main.cpp:73 | |
MODM_LOG_INFO << "ping = " << fiber_ping.stack_usage() << modm::endl; | |
800079a: 490c ldr r1, [pc, #48] ; (80007cc <_ZN10fiber_pingMUlvE_4_FUNEv+0x34>) | |
800079c: 480c ldr r0, [pc, #48] ; (80007d0 <_ZN10fiber_pingMUlvE_4_FUNEv+0x38>) | |
800079e: f7ff fd60 bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
80007a2: 4604 mov r4, r0 | |
_ZNK4modm5fiber4Task11stack_usageEv(): | |
./modm/src/modm/processing/fiber/task.hpp:145 | |
80007a4: 480b ldr r0, [pc, #44] ; (80007d4 <_ZN10fiber_pingMUlvE_4_FUNEv+0x3c>) | |
80007a6: f000 feef bl 8001588 <modm_context_stack_usage> | |
80007aa: 4601 mov r1, r0 | |
_ZN4modm8IOStreamlsERKj(): | |
./modm/src/modm/io/iostream.hpp:184 | |
80007ac: 4620 mov r0, r4 | |
80007ae: f7ff ffab bl 8000708 <_ZN4modm8IOStream16writeIntegerModeImEEvT_> | |
_ZNK10fiber_pingMUlvE_clEv(): | |
./main.cpp:73 | |
80007b2: 4620 mov r0, r4 | |
80007b4: 4908 ldr r1, [pc, #32] ; (80007d8 <_ZN10fiber_pingMUlvE_4_FUNEv+0x40>) | |
80007b6: f7ff fd53 bl 8000260 <_ZN4modm8IOStreamlsEPFRS0_S1_E.isra.0> | |
_ZN4modm10this_fiber9sleep_forIxSt5ratioILx1ELx1EEEEvNSt6chrono8durationIT_T0_EE(): | |
./modm/src/modm/processing/fiber/functions.hpp:132 | |
80007ba: 2001 movs r0, #1 | |
80007bc: 2100 movs r1, #0 | |
80007be: f7ff ff45 bl 800064c <_ZN4modm10this_fiber8poll_forIxSt5ratioILx1ELx1EEZNS0_9sleep_forIxS3_EEvNSt6chrono8durationIT_T0_EEEUlvE_EEbS9_OT1_.isra.0> | |
_ZN10fiber_pingMUlvE_4_FUNEv(): | |
./main.cpp:76 | |
}, modm::fiber::Start::Later); | |
80007c2: e8bd 4010 ldmia.w sp!, {r4, lr} | |
_ZNK10fiber_pingMUlvE_clEv(): | |
./main.cpp:75 | |
fiber_pong.start(); | |
80007c6: 4805 ldr r0, [pc, #20] ; (80007dc <_ZN10fiber_pingMUlvE_4_FUNEv+0x44>) | |
80007c8: f7ff bd36 b.w 8000238 <_ZN4modm5fiber4Task5startEv.isra.0> | |
80007cc: 08001db0 .word 0x08001db0 | |
80007d0: 20000c74 .word 0x20000c74 | |
80007d4: 200016d8 .word 0x200016d8 | |
80007d8: 08000221 .word 0x08000221 | |
80007dc: 200014c0 .word 0x200014c0 | |
080007e0 <main>: | |
main(): | |
./main.cpp:87 | |
// Blue pill (M3 72MHz): Executed 1000000 in 1098591us (910256.88 yields per second) | |
// Feather M0 (M0+ 48MHz): Executed 1000000 in 1944692us (514220.25 yields per second) | |
int | |
main() | |
{ | |
80007e0: b580 push {r7, lr} | |
./main.cpp:88 | |
Board::initialize(); | |
80007e2: f7ff fd47 bl 8000274 <_ZN5Board10initializeEv> | |
_ZN4modm12CycleCounter10initializeEbh(): | |
./modm/src/modm/driver/time/cycle_counter.hpp:29 | |
this->overhead = overhead; | |
80007e6: 2304 movs r3, #4 | |
_ZN4modm8IOStream5flushEv(): | |
./modm/src/modm/io/iostream.hpp:101 | |
mode = Mode::Ascii; | |
80007e8: f04f 0900 mov.w r9, #0 | |
main(): | |
./main.cpp:90 | |
counter.initialize(); | |
MODM_LOG_INFO << "Starting fiber modm::yield benchmark..." << modm::endl; | |
80007ec: 4cc3 ldr r4, [pc, #780] ; (8000afc <main+0x31c>) | |
_ZN4modm12CycleCounter10initializeEbh(): | |
./modm/src/modm/driver/time/cycle_counter.hpp:29 | |
80007ee: 4dc4 ldr r5, [pc, #784] ; (8000b00 <main+0x320>) | |
main(): | |
./main.cpp:90 | |
80007f0: 4620 mov r0, r4 | |
80007f2: 49c4 ldr r1, [pc, #784] ; (8000b04 <main+0x324>) | |
_ZN4modm12CycleCounter10initializeEbh(): | |
./modm/src/modm/driver/time/cycle_counter.hpp:29 | |
80007f4: 722b strb r3, [r5, #8] | |
main(): | |
./main.cpp:90 | |
80007f6: f7ff fd34 bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
80007fa: 49c3 ldr r1, [pc, #780] ; (8000b08 <main+0x328>) | |
80007fc: f7ff fd30 bl 8000260 <_ZN4modm8IOStreamlsEPFRS0_S1_E.isra.0> | |
_ZN4modm8IOStream5flushEv(): | |
./modm/src/modm/io/iostream.hpp:100 | |
device->flush(); | |
8000800: 6820 ldr r0, [r4, #0] | |
8000802: 6803 ldr r3, [r0, #0] | |
8000804: 691b ldr r3, [r3, #16] | |
8000806: 4798 blx r3 | |
_ZN4modm5fiber4Task15watermark_stackEv(): | |
./modm/src/modm/processing/fiber/task.hpp:137 | |
modm_context_watermark(&ctx); | |
8000808: 48c0 ldr r0, [pc, #768] ; (8000b0c <main+0x32c>) | |
_ZN4modm8IOStream5flushEv(): | |
./modm/src/modm/io/iostream.hpp:101 | |
mode = Mode::Ascii; | |
800080a: f8c4 9004 str.w r9, [r4, #4] | |
_ZN4modm5fiber4Task15watermark_stackEv(): | |
./modm/src/modm/processing/fiber/task.hpp:137 | |
800080e: f000 fea7 bl 8001560 <modm_context_watermark> | |
8000812: 48bf ldr r0, [pc, #764] ; (8000b10 <main+0x330>) | |
8000814: f000 fea4 bl 8001560 <modm_context_watermark> | |
main(): | |
./modm/ext/cmsis/core/cmsis_gcc.h:1208 | |
*/ | |
__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) | |
{ | |
uint32_t result; | |
__ASM volatile ("MRS %0, primask" : "=r" (result) ); | |
8000818: f3ef 8610 mrs r6, PRIMASK | |
./modm/ext/cmsis/core/cmsis_gcc.h:962 | |
__ASM volatile ("cpsid i" : : : "memory"); | |
800081c: b672 cpsid i | |
./main.cpp:98 | |
fiber_y1.watermark_stack(); | |
fiber_y2.watermark_stack(); | |
// fiber_y1, fiber_y2 were autostarted | |
{ | |
modm::atomic::Lock l; | |
modm::fiber::Scheduler::run(); | |
800081e: f7ff fe89 bl 8000534 <_ZN4modm5fiber9Scheduler3runEv> | |
./modm/ext/cmsis/core/cmsis_gcc.h:1236 | |
\details Assigns the given value to the Priority Mask Register. | |
\param [in] priMask Priority Mask | |
*/ | |
__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) | |
{ | |
__ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); | |
8000822: f386 8810 msr PRIMASK, r6 | |
./main.cpp:101 | |
} | |
MODM_LOG_INFO << "Y1 stack usage: = " << fiber_y1.stack_usage() << modm::endl; | |
8000826: 49bb ldr r1, [pc, #748] ; (8000b14 <main+0x334>) | |
8000828: 4620 mov r0, r4 | |
800082a: f7ff fd1a bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
800082e: 4606 mov r6, r0 | |
_ZNK4modm5fiber4Task11stack_usageEv(): | |
./modm/src/modm/processing/fiber/task.hpp:145 | |
return modm_context_stack_usage(&ctx); | |
8000830: 48b6 ldr r0, [pc, #728] ; (8000b0c <main+0x32c>) | |
8000832: f000 fea9 bl 8001588 <modm_context_stack_usage> | |
8000836: 4601 mov r1, r0 | |
_ZN4modm8IOStreamlsERKj(): | |
./modm/src/modm/io/iostream.hpp:184 | |
{ writeIntegerMode(static_cast<uint32_t>(v)); return *this; } | |
8000838: 4630 mov r0, r6 | |
800083a: f7ff ff65 bl 8000708 <_ZN4modm8IOStream16writeIntegerModeImEEvT_> | |
main(): | |
./main.cpp:101 | |
800083e: 4630 mov r0, r6 | |
8000840: 49b1 ldr r1, [pc, #708] ; (8000b08 <main+0x328>) | |
8000842: f7ff fd0d bl 8000260 <_ZN4modm8IOStreamlsEPFRS0_S1_E.isra.0> | |
./main.cpp:102 | |
MODM_LOG_INFO << "Y2 stack usage: = " << fiber_y2.stack_usage() << modm::endl; | |
8000846: 49b4 ldr r1, [pc, #720] ; (8000b18 <main+0x338>) | |
8000848: 4620 mov r0, r4 | |
800084a: f7ff fd0a bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
800084e: 4606 mov r6, r0 | |
_ZNK4modm5fiber4Task11stack_usageEv(): | |
./modm/src/modm/processing/fiber/task.hpp:145 | |
8000850: 48af ldr r0, [pc, #700] ; (8000b10 <main+0x330>) | |
8000852: f000 fe99 bl 8001588 <modm_context_stack_usage> | |
8000856: 4601 mov r1, r0 | |
_ZN4modm8IOStreamlsERKj(): | |
./modm/src/modm/io/iostream.hpp:184 | |
8000858: 4630 mov r0, r6 | |
800085a: f7ff ff55 bl 8000708 <_ZN4modm8IOStream16writeIntegerModeImEEvT_> | |
main(): | |
./main.cpp:102 | |
800085e: 49aa ldr r1, [pc, #680] ; (8000b08 <main+0x328>) | |
8000860: 4630 mov r0, r6 | |
8000862: f7ff fcfd bl 8000260 <_ZN4modm8IOStreamlsEPFRS0_S1_E.isra.0> | |
_ZN4modm8IOStream5flushEv(): | |
./modm/src/modm/io/iostream.hpp:100 | |
device->flush(); | |
8000866: 6820 ldr r0, [r4, #0] | |
_ZN4modm8IOStreamlsERKm(): | |
./modm/src/modm/io/iostream.hpp:164 | |
{ writeIntegerMode(v); return *this; } | |
8000868: f8df 8304 ldr.w r8, [pc, #772] ; 8000b70 <main+0x390> | |
_ZN4modm8IOStream5flushEv(): | |
./modm/src/modm/io/iostream.hpp:100 | |
device->flush(); | |
800086c: 6803 ldr r3, [r0, #0] | |
800086e: 691b ldr r3, [r3, #16] | |
8000870: 4798 blx r3 | |
main(): | |
./main.cpp:106 | |
MODM_LOG_INFO.flush(); | |
// the rest is manually started | |
fiber1.start(); fiber1.watermark_stack(); | |
8000872: 48aa ldr r0, [pc, #680] ; (8000b1c <main+0x33c>) | |
_ZN4modm8IOStream5flushEv(): | |
./modm/src/modm/io/iostream.hpp:101 | |
mode = Mode::Ascii; | |
8000874: f8c4 9004 str.w r9, [r4, #4] | |
main(): | |
./main.cpp:106 | |
8000878: f7ff fcde bl 8000238 <_ZN4modm5fiber4Task5startEv.isra.0> | |
_ZN4modm5fiber4Task15watermark_stackEv(): | |
./modm/src/modm/processing/fiber/task.hpp:137 | |
modm_context_watermark(&ctx); | |
800087c: 48a7 ldr r0, [pc, #668] ; (8000b1c <main+0x33c>) | |
800087e: f000 fe6f bl 8001560 <modm_context_watermark> | |
main(): | |
./main.cpp:107 | |
fiber2.start(); fiber2.watermark_stack(); | |
8000882: 48a7 ldr r0, [pc, #668] ; (8000b20 <main+0x340>) | |
8000884: f7ff fcd8 bl 8000238 <_ZN4modm5fiber4Task5startEv.isra.0> | |
_ZN4modm5fiber4Task15watermark_stackEv(): | |
./modm/src/modm/processing/fiber/task.hpp:137 | |
8000888: 48a5 ldr r0, [pc, #660] ; (8000b20 <main+0x340>) | |
800088a: f000 fe69 bl 8001560 <modm_context_watermark> | |
main(): | |
./main.cpp:108 | |
fiber3.start(); fiber3.watermark_stack(); | |
800088e: 48a5 ldr r0, [pc, #660] ; (8000b24 <main+0x344>) | |
8000890: f7ff fcd2 bl 8000238 <_ZN4modm5fiber4Task5startEv.isra.0> | |
_ZN4modm5fiber4Task15watermark_stackEv(): | |
./modm/src/modm/processing/fiber/task.hpp:137 | |
8000894: 48a3 ldr r0, [pc, #652] ; (8000b24 <main+0x344>) | |
8000896: f000 fe63 bl 8001560 <modm_context_watermark> | |
main(): | |
./main.cpp:109 | |
fiber4.start(); fiber4.watermark_stack(); | |
800089a: 48a3 ldr r0, [pc, #652] ; (8000b28 <main+0x348>) | |
800089c: f7ff fccc bl 8000238 <_ZN4modm5fiber4Task5startEv.isra.0> | |
_ZN4modm5fiber4Task15watermark_stackEv(): | |
./modm/src/modm/processing/fiber/task.hpp:137 | |
80008a0: 48a1 ldr r0, [pc, #644] ; (8000b28 <main+0x348>) | |
80008a2: f000 fe5d bl 8001560 <modm_context_watermark> | |
main(): | |
./main.cpp:110 | |
const modm::PreciseTimestamp start = modm::PreciseClock::now(); | |
80008a6: f000 fc5b bl 8001160 <_ZN4modm6chrono11micro_clock3nowEv> | |
80008aa: 4606 mov r6, r0 | |
./main.cpp:111 | |
modm::fiber::Scheduler::run(); | |
80008ac: f7ff fe42 bl 8000534 <_ZN4modm5fiber9Scheduler3runEv> | |
./main.cpp:112 | |
const auto diff = (modm::PreciseClock::now() - start); | |
80008b0: f000 fc56 bl 8001160 <_ZN4modm6chrono11micro_clock3nowEv> | |
./main.cpp:114 | |
MODM_LOG_INFO << "Benchmark done!" << modm::endl; | |
80008b4: 499d ldr r1, [pc, #628] ; (8000b2c <main+0x34c>) | |
_ZNSt6chronomiImSt5ratioILx1ELx1000000EEmS2_EENSt11common_typeIJNS_8durationIT_T0_EENS4_IT1_T2_EEEE4typeERKS7_RKSA_(): | |
././include/newlib/c++/12.2.1/bits/chrono.h:650 | |
80008b6: 1b86 subs r6, r0, r6 | |
main(): | |
./main.cpp:114 | |
80008b8: 4620 mov r0, r4 | |
80008ba: f7ff fcd2 bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
80008be: 4992 ldr r1, [pc, #584] ; (8000b08 <main+0x328>) | |
80008c0: f7ff fcce bl 8000260 <_ZN4modm8IOStreamlsEPFRS0_S1_E.isra.0> | |
./main.cpp:115 | |
MODM_LOG_INFO << "Executed " << total_counter << " yields in " << diff << modm::endl; | |
80008c4: 499a ldr r1, [pc, #616] ; (8000b30 <main+0x350>) | |
80008c6: 4620 mov r0, r4 | |
80008c8: f7ff fccb bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
80008cc: 4607 mov r7, r0 | |
_ZN4modm8IOStreamlsERKm(): | |
./modm/src/modm/io/iostream.hpp:164 | |
{ writeIntegerMode(v); return *this; } | |
80008ce: f8d8 1000 ldr.w r1, [r8] | |
80008d2: f7ff ff19 bl 8000708 <_ZN4modm8IOStream16writeIntegerModeImEEvT_> | |
main(): | |
./main.cpp:115 | |
80008d6: 4638 mov r0, r7 | |
80008d8: 4996 ldr r1, [pc, #600] ; (8000b34 <main+0x354>) | |
80008da: f7ff fcc2 bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
80008de: 4607 mov r7, r0 | |
_ZN4modm8IOStreamlsERKm(): | |
./modm/src/modm/io/iostream.hpp:164 | |
80008e0: 4631 mov r1, r6 | |
80008e2: f7ff ff11 bl 8000708 <_ZN4modm8IOStream16writeIntegerModeImEEvT_> | |
_ZN4modmlsImSt5ratioILx1ELx1000000EEEERNS_8IOStreamES4_RKNSt6chrono8durationIT_T0_EE(): | |
./modm/src/modm/architecture/interface/clock.hpp:121 | |
modm::IOStream& | |
operator << (modm::IOStream& s, const std::chrono::duration<T, R>& m) | |
{ | |
s << m.count(); | |
if constexpr (std::is_same_v<R, std::nano>) s << "ns"; | |
if constexpr (std::is_same_v<R, std::micro>) s << "us"; | |
80008e6: 4994 ldr r1, [pc, #592] ; (8000b38 <main+0x358>) | |
80008e8: 4638 mov r0, r7 | |
80008ea: f7ff fcba bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
main(): | |
./main.cpp:115 | |
80008ee: 4638 mov r0, r7 | |
80008f0: 4985 ldr r1, [pc, #532] ; (8000b08 <main+0x328>) | |
80008f2: f7ff fcb5 bl 8000260 <_ZN4modm8IOStreamlsEPFRS0_S1_E.isra.0> | |
./main.cpp:116 | |
MODM_LOG_INFO << ((total_counter * 1'000'000ull) / std::chrono::microseconds(diff).count()); | |
80008f6: f8d8 1000 ldr.w r1, [r8] | |
80008fa: 4890 ldr r0, [pc, #576] ; (8000b3c <main+0x35c>) | |
80008fc: 464b mov r3, r9 | |
80008fe: 4632 mov r2, r6 | |
8000900: fba1 0100 umull r0, r1, r1, r0 | |
8000904: f001 f84e bl 80019a4 <__aeabi_uldivmod> | |
8000908: 460b mov r3, r1 | |
800090a: 468a mov sl, r1 | |
_ZN4modm8IOStream16writeIntegerModeIyEEvT_(): | |
./modm/src/modm/io/iostream.hpp:223 | |
if (mode == Mode::Ascii) { | |
800090c: 6861 ldr r1, [r4, #4] | |
main(): | |
./main.cpp:116 | |
800090e: 4602 mov r2, r0 | |
8000910: 4681 mov r9, r0 | |
_ZN4modm8IOStream16writeIntegerModeIyEEvT_(): | |
./modm/src/modm/io/iostream.hpp:223 | |
8000912: 2900 cmp r1, #0 | |
8000914: f040 8093 bne.w 8000a3e <main+0x25e> | |
./modm/src/modm/io/iostream.hpp:224 | |
writeInteger(v); | |
8000918: 4620 mov r0, r4 | |
800091a: f000 fb3a bl 8000f92 <_ZN4modm8IOStream12writeIntegerEy> | |
main(): | |
./main.cpp:117 | |
MODM_LOG_INFO << " yields per second, "; | |
800091e: 4988 ldr r1, [pc, #544] ; (8000b40 <main+0x360>) | |
8000920: 4876 ldr r0, [pc, #472] ; (8000afc <main+0x31c>) | |
8000922: f7ff fc9e bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
_ZNSt6chrono20__duration_cast_implINS_8durationIxSt5ratioILx1ELx1000000000EEEES2_ILx1000ELx1EExLb0ELb1EE6__castImS2_ILx1ELx1000000EEEES4_RKNS1_IT_T0_EE(): | |
././include/newlib/c++/12.2.1/bits/chrono.h:225 | |
8000926: f44f 707a mov.w r0, #1000 ; 0x3e8 | |
main(): | |
./main.cpp:118 | |
MODM_LOG_INFO << (std::chrono::nanoseconds(diff).count() / total_counter); | |
800092a: 2300 movs r3, #0 | |
800092c: fba6 0100 umull r0, r1, r6, r0 | |
8000930: f8d8 2000 ldr.w r2, [r8] | |
8000934: f000 ffe6 bl 8001904 <__aeabi_ldivmod> | |
8000938: 460b mov r3, r1 | |
800093a: 460f mov r7, r1 | |
_ZN4modm8IOStream16writeIntegerModeIxEEvT_(): | |
./modm/src/modm/io/iostream.hpp:223 | |
if (mode == Mode::Ascii) { | |
800093c: 6861 ldr r1, [r4, #4] | |
main(): | |
./main.cpp:118 | |
800093e: 4602 mov r2, r0 | |
8000940: 4606 mov r6, r0 | |
_ZN4modm8IOStream16writeIntegerModeIxEEvT_(): | |
./modm/src/modm/io/iostream.hpp:223 | |
8000942: 2900 cmp r1, #0 | |
8000944: f040 80a9 bne.w 8000a9a <main+0x2ba> | |
./modm/src/modm/io/iostream.hpp:224 | |
writeInteger(v); | |
8000948: 486c ldr r0, [pc, #432] ; (8000afc <main+0x31c>) | |
800094a: f000 fb0b bl 8000f64 <_ZN4modm8IOStream12writeIntegerEx> | |
main(): | |
./main.cpp:119 | |
MODM_LOG_INFO << "ns per yield slice" << modm::endl; | |
800094e: 497d ldr r1, [pc, #500] ; (8000b44 <main+0x364>) | |
8000950: 486a ldr r0, [pc, #424] ; (8000afc <main+0x31c>) | |
8000952: f7ff fc86 bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
8000956: 496c ldr r1, [pc, #432] ; (8000b08 <main+0x328>) | |
8000958: f7ff fc82 bl 8000260 <_ZN4modm8IOStreamlsEPFRS0_S1_E.isra.0> | |
_ZN4modm12CycleCounter6cyclesEv(): | |
./modm/src/modm/driver/time/cycle_counter.hpp:50 | |
/// @return the difference in cycles between start and stop. | |
cycle_t | |
cycles() | |
{ | |
return (stop_ - start_) - overhead; | |
800095c: e9d5 3100 ldrd r3, r1, [r5] | |
8000960: 1ac9 subs r1, r1, r3 | |
8000962: 7a2b ldrb r3, [r5, #8] | |
_ZN4modm8IOStreamlsERKm(): | |
./modm/src/modm/io/iostream.hpp:164 | |
{ writeIntegerMode(v); return *this; } | |
8000964: 4865 ldr r0, [pc, #404] ; (8000afc <main+0x31c>) | |
8000966: 1ac9 subs r1, r1, r3 | |
8000968: f7ff fece bl 8000708 <_ZN4modm8IOStream16writeIntegerModeImEEvT_> | |
main(): | |
./main.cpp:120 | |
MODM_LOG_INFO << counter.cycles() << " cycles = " << counter.nanoseconds(); | |
800096c: 4976 ldr r1, [pc, #472] ; (8000b48 <main+0x368>) | |
800096e: 4863 ldr r0, [pc, #396] ; (8000afc <main+0x31c>) | |
8000970: f7ff fc77 bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
_ZN4modm12CycleCounter6cyclesEv(): | |
./modm/src/modm/driver/time/cycle_counter.hpp:50 | |
8000974: e9d5 3100 ldrd r3, r1, [r5] | |
8000978: 1ac9 subs r1, r1, r3 | |
800097a: 7a2b ldrb r3, [r5, #8] | |
main(): | |
./main.cpp:120 | |
800097c: 4604 mov r4, r0 | |
_ZN4modm12CycleCounter6cyclesEv(): | |
./modm/src/modm/driver/time/cycle_counter.hpp:50 | |
800097e: 1ac9 subs r1, r1, r3 | |
_ZN4modm12CycleCounter11nanosecondsEv(): | |
./modm/src/modm/driver/time/cycle_counter.hpp:71 | |
/// @return the difference in nanoseconds between start and stop. | |
uint32_t | |
nanoseconds() | |
{ | |
return (cycles() * 1'000'000'000ull) / SystemCoreClock; | |
8000980: 4872 ldr r0, [pc, #456] ; (8000b4c <main+0x36c>) | |
8000982: 4b73 ldr r3, [pc, #460] ; (8000b50 <main+0x370>) | |
8000984: fba1 0100 umull r0, r1, r1, r0 | |
8000988: 681a ldr r2, [r3, #0] | |
800098a: 2300 movs r3, #0 | |
800098c: f001 f80a bl 80019a4 <__aeabi_uldivmod> | |
8000990: 4601 mov r1, r0 | |
_ZN4modm8IOStreamlsERKm(): | |
./modm/src/modm/io/iostream.hpp:164 | |
8000992: 4620 mov r0, r4 | |
8000994: f7ff feb8 bl 8000708 <_ZN4modm8IOStream16writeIntegerModeImEEvT_> | |
main(): | |
./main.cpp:121 | |
MODM_LOG_INFO << "ns per single yield" << modm::endl; | |
8000998: 496e ldr r1, [pc, #440] ; (8000b54 <main+0x374>) | |
800099a: 4858 ldr r0, [pc, #352] ; (8000afc <main+0x31c>) | |
800099c: f7ff fc61 bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
80009a0: 4959 ldr r1, [pc, #356] ; (8000b08 <main+0x328>) | |
80009a2: f7ff fc5d bl 8000260 <_ZN4modm8IOStreamlsEPFRS0_S1_E.isra.0> | |
./main.cpp:123 | |
MODM_LOG_INFO << "F1 stack usage = " << fiber1.stack_usage() << modm::endl; | |
80009a6: 496c ldr r1, [pc, #432] ; (8000b58 <main+0x378>) | |
80009a8: 4854 ldr r0, [pc, #336] ; (8000afc <main+0x31c>) | |
80009aa: f7ff fc5a bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
80009ae: 4604 mov r4, r0 | |
_ZNK4modm5fiber4Task11stack_usageEv(): | |
./modm/src/modm/processing/fiber/task.hpp:145 | |
return modm_context_stack_usage(&ctx); | |
80009b0: 485a ldr r0, [pc, #360] ; (8000b1c <main+0x33c>) | |
80009b2: f000 fde9 bl 8001588 <modm_context_stack_usage> | |
80009b6: 4601 mov r1, r0 | |
_ZN4modm8IOStreamlsERKj(): | |
./modm/src/modm/io/iostream.hpp:184 | |
{ writeIntegerMode(static_cast<uint32_t>(v)); return *this; } | |
80009b8: 4620 mov r0, r4 | |
80009ba: f7ff fea5 bl 8000708 <_ZN4modm8IOStream16writeIntegerModeImEEvT_> | |
main(): | |
./main.cpp:123 | |
80009be: 4620 mov r0, r4 | |
80009c0: 4951 ldr r1, [pc, #324] ; (8000b08 <main+0x328>) | |
80009c2: f7ff fc4d bl 8000260 <_ZN4modm8IOStreamlsEPFRS0_S1_E.isra.0> | |
./main.cpp:124 | |
MODM_LOG_INFO << "F2 stack usage = " << fiber2.stack_usage() << modm::endl; | |
80009c6: 4965 ldr r1, [pc, #404] ; (8000b5c <main+0x37c>) | |
80009c8: 484c ldr r0, [pc, #304] ; (8000afc <main+0x31c>) | |
80009ca: f7ff fc4a bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
80009ce: 4604 mov r4, r0 | |
_ZNK4modm5fiber4Task11stack_usageEv(): | |
./modm/src/modm/processing/fiber/task.hpp:145 | |
80009d0: 4853 ldr r0, [pc, #332] ; (8000b20 <main+0x340>) | |
80009d2: f000 fdd9 bl 8001588 <modm_context_stack_usage> | |
80009d6: 4601 mov r1, r0 | |
_ZN4modm8IOStreamlsERKj(): | |
./modm/src/modm/io/iostream.hpp:184 | |
80009d8: 4620 mov r0, r4 | |
80009da: f7ff fe95 bl 8000708 <_ZN4modm8IOStream16writeIntegerModeImEEvT_> | |
main(): | |
./main.cpp:124 | |
80009de: 4620 mov r0, r4 | |
80009e0: 4949 ldr r1, [pc, #292] ; (8000b08 <main+0x328>) | |
80009e2: f7ff fc3d bl 8000260 <_ZN4modm8IOStreamlsEPFRS0_S1_E.isra.0> | |
./main.cpp:125 | |
MODM_LOG_INFO << "F3 stack usage = " << fiber3.stack_usage() << modm::endl; | |
80009e6: 495e ldr r1, [pc, #376] ; (8000b60 <main+0x380>) | |
80009e8: 4844 ldr r0, [pc, #272] ; (8000afc <main+0x31c>) | |
80009ea: f7ff fc3a bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
80009ee: 4604 mov r4, r0 | |
_ZNK4modm5fiber4Task11stack_usageEv(): | |
./modm/src/modm/processing/fiber/task.hpp:145 | |
80009f0: 484c ldr r0, [pc, #304] ; (8000b24 <main+0x344>) | |
80009f2: f000 fdc9 bl 8001588 <modm_context_stack_usage> | |
80009f6: 4601 mov r1, r0 | |
_ZN4modm8IOStreamlsERKj(): | |
./modm/src/modm/io/iostream.hpp:184 | |
80009f8: 4620 mov r0, r4 | |
80009fa: f7ff fe85 bl 8000708 <_ZN4modm8IOStream16writeIntegerModeImEEvT_> | |
main(): | |
./main.cpp:125 | |
80009fe: 4620 mov r0, r4 | |
8000a00: 4941 ldr r1, [pc, #260] ; (8000b08 <main+0x328>) | |
8000a02: f7ff fc2d bl 8000260 <_ZN4modm8IOStreamlsEPFRS0_S1_E.isra.0> | |
./main.cpp:126 | |
MODM_LOG_INFO << "F4 stack usage = " << fiber4.stack_usage() << modm::endl; | |
8000a06: 4957 ldr r1, [pc, #348] ; (8000b64 <main+0x384>) | |
8000a08: 483c ldr r0, [pc, #240] ; (8000afc <main+0x31c>) | |
8000a0a: f7ff fc2a bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
8000a0e: 4604 mov r4, r0 | |
_ZNK4modm5fiber4Task11stack_usageEv(): | |
./modm/src/modm/processing/fiber/task.hpp:145 | |
8000a10: 4845 ldr r0, [pc, #276] ; (8000b28 <main+0x348>) | |
8000a12: f000 fdb9 bl 8001588 <modm_context_stack_usage> | |
8000a16: 4601 mov r1, r0 | |
_ZN4modm8IOStreamlsERKj(): | |
./modm/src/modm/io/iostream.hpp:184 | |
8000a18: 4620 mov r0, r4 | |
8000a1a: f7ff fe75 bl 8000708 <_ZN4modm8IOStream16writeIntegerModeImEEvT_> | |
main(): | |
./main.cpp:126 | |
8000a1e: 493a ldr r1, [pc, #232] ; (8000b08 <main+0x328>) | |
8000a20: 4620 mov r0, r4 | |
8000a22: f7ff fc1d bl 8000260 <_ZN4modm8IOStreamlsEPFRS0_S1_E.isra.0> | |
_ZN4modm5fiber4Task15watermark_stackEv(): | |
./modm/src/modm/processing/fiber/task.hpp:137 | |
modm_context_watermark(&ctx); | |
8000a26: 4850 ldr r0, [pc, #320] ; (8000b68 <main+0x388>) | |
8000a28: f000 fd9a bl 8001560 <modm_context_watermark> | |
8000a2c: 484f ldr r0, [pc, #316] ; (8000b6c <main+0x38c>) | |
8000a2e: f000 fd97 bl 8001560 <modm_context_watermark> | |
main(): | |
./main.cpp:130 | |
fiber_ping.watermark_stack(); | |
fiber_pong.watermark_stack(); | |
fiber_ping.start(); | |
8000a32: 484d ldr r0, [pc, #308] ; (8000b68 <main+0x388>) | |
8000a34: f7ff fc00 bl 8000238 <_ZN4modm5fiber4Task5startEv.isra.0> | |
./main.cpp:131 | |
modm::fiber::Scheduler::run(); | |
8000a38: f7ff fd7c bl 8000534 <_ZN4modm5fiber9Scheduler3runEv> | |
./main.cpp:133 (discriminator 1) | |
while(1) ; | |
8000a3c: e7fe b.n 8000a3c <main+0x25c> | |
_ZN4modm8IOStream16writeIntegerModeIyEEvT_(): | |
./modm/src/modm/io/iostream.hpp:225 | |
} else if (mode == Mode::Binary) { | |
8000a3e: 2902 cmp r1, #2 | |
./modm/src/modm/io/iostream.hpp:226 | |
for (uint8_t ii=t_bits-8; ii < t_bits; ii -= 8) | |
8000a40: f04f 0738 mov.w r7, #56 ; 0x38 | |
./modm/src/modm/io/iostream.hpp:225 | |
} else if (mode == Mode::Binary) { | |
8000a44: d114 bne.n 8000a70 <main+0x290> | |
./modm/src/modm/io/iostream.hpp:227 | |
writeBin(static_cast<std::make_unsigned_t<T>>(v) >> ii); | |
8000a46: f1c7 0220 rsb r2, r7, #32 | |
8000a4a: f1a7 0320 sub.w r3, r7, #32 | |
8000a4e: fa29 f107 lsr.w r1, r9, r7 | |
8000a52: fa0a f202 lsl.w r2, sl, r2 | |
8000a56: 4311 orrs r1, r2 | |
8000a58: fa2a f303 lsr.w r3, sl, r3 | |
8000a5c: 4319 orrs r1, r3 | |
8000a5e: 3f08 subs r7, #8 | |
8000a60: 4620 mov r0, r4 | |
8000a62: b2c9 uxtb r1, r1 | |
8000a64: b2ff uxtb r7, r7 | |
8000a66: f000 fa41 bl 8000eec <_ZN4modm8IOStream8writeBinEh> | |
./modm/src/modm/io/iostream.hpp:226 | |
for (uint8_t ii=t_bits-8; ii < t_bits; ii -= 8) | |
8000a6a: 2ff8 cmp r7, #248 ; 0xf8 | |
8000a6c: d1eb bne.n 8000a46 <main+0x266> | |
8000a6e: e756 b.n 800091e <main+0x13e> | |
./modm/src/modm/io/iostream.hpp:230 | |
writeHex(static_cast<std::make_unsigned_t<T>>(v) >> ii); | |
8000a70: f1c7 0220 rsb r2, r7, #32 | |
8000a74: f1a7 0320 sub.w r3, r7, #32 | |
8000a78: fa29 f107 lsr.w r1, r9, r7 | |
8000a7c: fa0a f202 lsl.w r2, sl, r2 | |
8000a80: 4311 orrs r1, r2 | |
8000a82: fa2a f303 lsr.w r3, sl, r3 | |
8000a86: 4319 orrs r1, r3 | |
8000a88: 3f08 subs r7, #8 | |
8000a8a: 4620 mov r0, r4 | |
8000a8c: b2c9 uxtb r1, r1 | |
8000a8e: b2ff uxtb r7, r7 | |
8000a90: f000 fa20 bl 8000ed4 <_ZN4modm8IOStream8writeHexEh> | |
./modm/src/modm/io/iostream.hpp:229 | |
for (uint8_t ii=t_bits-8; ii < t_bits; ii -= 8) | |
8000a94: 2ff8 cmp r7, #248 ; 0xf8 | |
8000a96: d1eb bne.n 8000a70 <main+0x290> | |
8000a98: e741 b.n 800091e <main+0x13e> | |
_ZN4modm8IOStream16writeIntegerModeIxEEvT_(): | |
./modm/src/modm/io/iostream.hpp:225 | |
} else if (mode == Mode::Binary) { | |
8000a9a: 2902 cmp r1, #2 | |
./modm/src/modm/io/iostream.hpp:226 | |
for (uint8_t ii=t_bits-8; ii < t_bits; ii -= 8) | |
8000a9c: f04f 0438 mov.w r4, #56 ; 0x38 | |
./modm/src/modm/io/iostream.hpp:227 | |
writeBin(static_cast<std::make_unsigned_t<T>>(v) >> ii); | |
8000aa0: f8df 8058 ldr.w r8, [pc, #88] ; 8000afc <main+0x31c> | |
./modm/src/modm/io/iostream.hpp:225 | |
} else if (mode == Mode::Binary) { | |
8000aa4: d114 bne.n 8000ad0 <main+0x2f0> | |
./modm/src/modm/io/iostream.hpp:227 | |
writeBin(static_cast<std::make_unsigned_t<T>>(v) >> ii); | |
8000aa6: f1c4 0220 rsb r2, r4, #32 | |
8000aaa: f1a4 0320 sub.w r3, r4, #32 | |
8000aae: fa26 f104 lsr.w r1, r6, r4 | |
8000ab2: fa07 f202 lsl.w r2, r7, r2 | |
8000ab6: 4311 orrs r1, r2 | |
8000ab8: fa27 f303 lsr.w r3, r7, r3 | |
8000abc: 4319 orrs r1, r3 | |
8000abe: 3c08 subs r4, #8 | |
8000ac0: 4640 mov r0, r8 | |
8000ac2: b2c9 uxtb r1, r1 | |
8000ac4: b2e4 uxtb r4, r4 | |
8000ac6: f000 fa11 bl 8000eec <_ZN4modm8IOStream8writeBinEh> | |
./modm/src/modm/io/iostream.hpp:226 | |
for (uint8_t ii=t_bits-8; ii < t_bits; ii -= 8) | |
8000aca: 2cf8 cmp r4, #248 ; 0xf8 | |
8000acc: d1eb bne.n 8000aa6 <main+0x2c6> | |
8000ace: e73e b.n 800094e <main+0x16e> | |
./modm/src/modm/io/iostream.hpp:230 | |
writeHex(static_cast<std::make_unsigned_t<T>>(v) >> ii); | |
8000ad0: f1c4 0220 rsb r2, r4, #32 | |
8000ad4: f1a4 0320 sub.w r3, r4, #32 | |
8000ad8: fa26 f104 lsr.w r1, r6, r4 | |
8000adc: fa07 f202 lsl.w r2, r7, r2 | |
8000ae0: 4311 orrs r1, r2 | |
8000ae2: fa27 f303 lsr.w r3, r7, r3 | |
8000ae6: 4319 orrs r1, r3 | |
8000ae8: 3c08 subs r4, #8 | |
8000aea: 4640 mov r0, r8 | |
8000aec: b2c9 uxtb r1, r1 | |
8000aee: b2e4 uxtb r4, r4 | |
8000af0: f000 f9f0 bl 8000ed4 <_ZN4modm8IOStream8writeHexEh> | |
./modm/src/modm/io/iostream.hpp:229 | |
for (uint8_t ii=t_bits-8; ii < t_bits; ii -= 8) | |
8000af4: 2cf8 cmp r4, #248 ; 0xf8 | |
8000af6: d1eb bne.n 8000ad0 <main+0x2f0> | |
8000af8: e729 b.n 800094e <main+0x16e> | |
8000afa: bf00 nop | |
8000afc: 20000c74 .word 0x20000c74 | |
8000b00: 20000c04 .word 0x20000c04 | |
8000b04: 08001db8 .word 0x08001db8 | |
8000b08: 08000221 .word 0x08000221 | |
8000b0c: 20002368 .word 0x20002368 | |
8000b10: 20002150 .word 0x20002150 | |
8000b14: 08001de0 .word 0x08001de0 | |
8000b18: 08001df3 .word 0x08001df3 | |
8000b1c: 20001f38 .word 0x20001f38 | |
8000b20: 20001d20 .word 0x20001d20 | |
8000b24: 20001b08 .word 0x20001b08 | |
8000b28: 200018f0 .word 0x200018f0 | |
8000b2c: 08001e06 .word 0x08001e06 | |
8000b30: 08001e16 .word 0x08001e16 | |
8000b34: 08001e20 .word 0x08001e20 | |
8000b38: 08001e2c .word 0x08001e2c | |
8000b3c: 000f4240 .word 0x000f4240 | |
8000b40: 08001e2f .word 0x08001e2f | |
8000b44: 08001e44 .word 0x08001e44 | |
8000b48: 08001e57 .word 0x08001e57 | |
8000b4c: 3b9aca00 .word 0x3b9aca00 | |
8000b50: 20000c14 .word 0x20000c14 | |
8000b54: 08001e62 .word 0x08001e62 | |
8000b58: 08001e76 .word 0x08001e76 | |
8000b5c: 08001e88 .word 0x08001e88 | |
8000b60: 08001e9a .word 0x08001e9a | |
8000b64: 08001eac .word 0x08001eac | |
8000b68: 200016d8 .word 0x200016d8 | |
8000b6c: 200014c0 .word 0x200014c0 | |
8000b70: 20000c20 .word 0x20000c20 | |
08000b74 <_GLOBAL__sub_I_f1counter>: | |
_GLOBAL__sub_I_f1counter(): | |
./main.cpp:135 | |
return 0; | |
} | |
8000b74: b537 push {r0, r1, r2, r4, r5, lr} | |
_ZN4modm12CycleCounterC4Ev(): | |
./modm/src/modm/driver/time/cycle_counter.hpp:20 | |
class CycleCounter | |
8000b76: 2204 movs r2, #4 | |
_ZN4modm5fiber4TaskC4ILj512EN8fiber_y1MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartE(): | |
./modm/src/modm/processing/fiber/task.hpp:179 | |
Task::Task(Stack<Size>& stack, T&& closure, Start start) | |
8000b78: 2400 movs r4, #0 | |
_ZN4modm12CycleCounterC4Ev(): | |
./modm/src/modm/driver/time/cycle_counter.hpp:20 | |
8000b7a: 4b36 ldr r3, [pc, #216] ; (8000c54 <_GLOBAL__sub_I_f1counter+0xe0>) | |
_ZN4modm5fiber4TaskC4ILj512EN8fiber_y1MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartE(): | |
./modm/src/modm/processing/fiber/task.hpp:179 | |
8000b7c: 4d36 ldr r5, [pc, #216] ; (8000c58 <_GLOBAL__sub_I_f1counter+0xe4>) | |
_ZN4modm12CycleCounterC4Ev(): | |
./modm/src/modm/driver/time/cycle_counter.hpp:20 | |
8000b7e: 721a strb r2, [r3, #8] | |
_ZN4modm5fiber4TaskC4ILj512EN8fiber_y1MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartE(): | |
./modm/src/modm/processing/fiber/task.hpp:194 | |
modm_context_init(&ctx, stack.memory, stack.memory + stack.words, | |
8000b80: 4b36 ldr r3, [pc, #216] ; (8000c5c <_GLOBAL__sub_I_f1counter+0xe8>) | |
./modm/src/modm/processing/fiber/task.hpp:179 | |
Task::Task(Stack<Size>& stack, T&& closure, Start start) | |
8000b82: 612c str r4, [r5, #16] | |
_ZNSt13__atomic_baseIbEC4Eb(): | |
././include/newlib/c++/12.2.1/bits/atomic_base.h:345 | |
8000b84: 752c strb r4, [r5, #20] | |
_ZN4modm5fiber4TaskC4ILj512EN8fiber_y1MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartE(): | |
./modm/src/modm/processing/fiber/task.hpp:194 | |
modm_context_init(&ctx, stack.memory, stack.memory + stack.words, | |
8000b86: f505 7206 add.w r2, r5, #536 ; 0x218 | |
8000b8a: f105 0118 add.w r1, r5, #24 | |
8000b8e: 4628 mov r0, r5 | |
8000b90: 9300 str r3, [sp, #0] | |
8000b92: 4b33 ldr r3, [pc, #204] ; (8000c60 <_GLOBAL__sub_I_f1counter+0xec>) | |
8000b94: f000 fccb bl 800152e <modm_context_init> | |
./modm/src/modm/processing/fiber/task.hpp:219 | |
if (start == Start::Now) this->start(); | |
8000b98: 4628 mov r0, r5 | |
8000b9a: f7ff fb4d bl 8000238 <_ZN4modm5fiber4Task5startEv.isra.0> | |
_ZN4modm5fiber4TaskC4ILj512EN8fiber_y2MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartE(): | |
./modm/src/modm/processing/fiber/task.hpp:179 | |
Task::Task(Stack<Size>& stack, T&& closure, Start start) | |
8000b9e: 4d31 ldr r5, [pc, #196] ; (8000c64 <_GLOBAL__sub_I_f1counter+0xf0>) | |
./modm/src/modm/processing/fiber/task.hpp:194 | |
modm_context_init(&ctx, stack.memory, stack.memory + stack.words, | |
8000ba0: 4b31 ldr r3, [pc, #196] ; (8000c68 <_GLOBAL__sub_I_f1counter+0xf4>) | |
8000ba2: f505 7206 add.w r2, r5, #536 ; 0x218 | |
8000ba6: f105 0118 add.w r1, r5, #24 | |
8000baa: 4628 mov r0, r5 | |
./modm/src/modm/processing/fiber/task.hpp:179 | |
Task::Task(Stack<Size>& stack, T&& closure, Start start) | |
8000bac: 612c str r4, [r5, #16] | |
_ZNSt13__atomic_baseIbEC4Eb(): | |
././include/newlib/c++/12.2.1/bits/atomic_base.h:345 | |
8000bae: 752c strb r4, [r5, #20] | |
_ZN4modm5fiber4TaskC4ILj512EN8fiber_y2MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartE(): | |
./modm/src/modm/processing/fiber/task.hpp:194 | |
modm_context_init(&ctx, stack.memory, stack.memory + stack.words, | |
8000bb0: 9300 str r3, [sp, #0] | |
8000bb2: 4b2e ldr r3, [pc, #184] ; (8000c6c <_GLOBAL__sub_I_f1counter+0xf8>) | |
8000bb4: f000 fcbb bl 800152e <modm_context_init> | |
./modm/src/modm/processing/fiber/task.hpp:219 | |
if (start == Start::Now) this->start(); | |
8000bb8: 4628 mov r0, r5 | |
8000bba: f7ff fb3d bl 8000238 <_ZN4modm5fiber4Task5startEv.isra.0> | |
_ZN4modm5fiber4TaskC4ILj512ERFvvEEERNS0_5StackIXT_EEEOT0_NS0_5StartE(): | |
./modm/src/modm/processing/fiber/task.hpp:179 | |
Task::Task(Stack<Size>& stack, T&& closure, Start start) | |
8000bbe: 482c ldr r0, [pc, #176] ; (8000c70 <_GLOBAL__sub_I_f1counter+0xfc>) | |
./modm/src/modm/processing/fiber/task.hpp:194 | |
modm_context_init(&ctx, stack.memory, stack.memory + stack.words, | |
8000bc0: 4b2c ldr r3, [pc, #176] ; (8000c74 <_GLOBAL__sub_I_f1counter+0x100>) | |
./modm/src/modm/processing/fiber/task.hpp:179 | |
Task::Task(Stack<Size>& stack, T&& closure, Start start) | |
8000bc2: 6104 str r4, [r0, #16] | |
_ZNSt13__atomic_baseIbEC4Eb(): | |
././include/newlib/c++/12.2.1/bits/atomic_base.h:345 | |
8000bc4: 7504 strb r4, [r0, #20] | |
_ZN4modm5fiber4TaskC4ILj512ERFvvEEERNS0_5StackIXT_EEEOT0_NS0_5StartE(): | |
./modm/src/modm/processing/fiber/task.hpp:194 | |
modm_context_init(&ctx, stack.memory, stack.memory + stack.words, | |
8000bc6: f500 7206 add.w r2, r0, #536 ; 0x218 | |
8000bca: 9300 str r3, [sp, #0] | |
8000bcc: f100 0118 add.w r1, r0, #24 | |
8000bd0: 4b29 ldr r3, [pc, #164] ; (8000c78 <_GLOBAL__sub_I_f1counter+0x104>) | |
8000bd2: f000 fcac bl 800152e <modm_context_init> | |
_ZN4modm5fiber4TaskC4ILj512EN6fiber2MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartE(): | |
./modm/src/modm/processing/fiber/task.hpp:179 | |
Task::Task(Stack<Size>& stack, T&& closure, Start start) | |
8000bd6: 4829 ldr r0, [pc, #164] ; (8000c7c <_GLOBAL__sub_I_f1counter+0x108>) | |
./modm/src/modm/processing/fiber/task.hpp:194 | |
modm_context_init(&ctx, stack.memory, stack.memory + stack.words, | |
8000bd8: 4b29 ldr r3, [pc, #164] ; (8000c80 <_GLOBAL__sub_I_f1counter+0x10c>) | |
./modm/src/modm/processing/fiber/task.hpp:179 | |
Task::Task(Stack<Size>& stack, T&& closure, Start start) | |
8000bda: 6104 str r4, [r0, #16] | |
_ZNSt13__atomic_baseIbEC4Eb(): | |
././include/newlib/c++/12.2.1/bits/atomic_base.h:345 | |
8000bdc: 7504 strb r4, [r0, #20] | |
_ZN4modm5fiber4TaskC4ILj512EN6fiber2MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartE(): | |
./modm/src/modm/processing/fiber/task.hpp:194 | |
modm_context_init(&ctx, stack.memory, stack.memory + stack.words, | |
8000bde: f500 7206 add.w r2, r0, #536 ; 0x218 | |
8000be2: 9300 str r3, [sp, #0] | |
8000be4: f100 0118 add.w r1, r0, #24 | |
8000be8: 4b26 ldr r3, [pc, #152] ; (8000c84 <_GLOBAL__sub_I_f1counter+0x110>) | |
8000bea: f000 fca0 bl 800152e <modm_context_init> | |
_ZN4modm5fiber4TaskC4ILj512EN6fiber3MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartE(): | |
./modm/src/modm/processing/fiber/task.hpp:179 | |
Task::Task(Stack<Size>& stack, T&& closure, Start start) | |
8000bee: 4826 ldr r0, [pc, #152] ; (8000c88 <_GLOBAL__sub_I_f1counter+0x114>) | |
./modm/src/modm/processing/fiber/task.hpp:194 | |
modm_context_init(&ctx, stack.memory, stack.memory + stack.words, | |
8000bf0: 4b26 ldr r3, [pc, #152] ; (8000c8c <_GLOBAL__sub_I_f1counter+0x118>) | |
./modm/src/modm/processing/fiber/task.hpp:179 | |
Task::Task(Stack<Size>& stack, T&& closure, Start start) | |
8000bf2: 6104 str r4, [r0, #16] | |
_ZNSt13__atomic_baseIbEC4Eb(): | |
././include/newlib/c++/12.2.1/bits/atomic_base.h:345 | |
8000bf4: 7504 strb r4, [r0, #20] | |
_ZN4modm5fiber4TaskC4ILj512EN6fiber3MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartE(): | |
./modm/src/modm/processing/fiber/task.hpp:194 | |
modm_context_init(&ctx, stack.memory, stack.memory + stack.words, | |
8000bf6: f500 7206 add.w r2, r0, #536 ; 0x218 | |
8000bfa: 9300 str r3, [sp, #0] | |
8000bfc: f100 0118 add.w r1, r0, #24 | |
8000c00: 4b23 ldr r3, [pc, #140] ; (8000c90 <_GLOBAL__sub_I_f1counter+0x11c>) | |
8000c02: f000 fc94 bl 800152e <modm_context_init> | |
_ZN4modm5fiber4TaskC4ILj512EN6fiber4MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartE(): | |
./modm/src/modm/processing/fiber/task.hpp:179 | |
Task::Task(Stack<Size>& stack, T&& closure, Start start) | |
8000c06: 4823 ldr r0, [pc, #140] ; (8000c94 <_GLOBAL__sub_I_f1counter+0x120>) | |
./modm/src/modm/processing/fiber/task.hpp:217 | |
modm_context_init(&ctx, stack.memory, (uintptr_t*)ptr, caller, ptr); | |
8000c08: 4b23 ldr r3, [pc, #140] ; (8000c98 <_GLOBAL__sub_I_f1counter+0x124>) | |
./modm/src/modm/processing/fiber/task.hpp:205 | |
const uintptr_t ptr = uintptr_t(stack.memory + stack.words) - closure_size; | |
8000c0a: f500 7204 add.w r2, r0, #528 ; 0x210 | |
./modm/src/modm/processing/fiber/task.hpp:179 | |
Task::Task(Stack<Size>& stack, T&& closure, Start start) | |
8000c0e: 6104 str r4, [r0, #16] | |
_ZNSt13__atomic_baseIbEC4Eb(): | |
././include/newlib/c++/12.2.1/bits/atomic_base.h:345 | |
8000c10: 7504 strb r4, [r0, #20] | |
_ZN4modm5fiber4TaskC4ILj512EN6fiber4MUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartE(): | |
./modm/src/modm/processing/fiber/task.hpp:207 | |
::new ((void*)ptr) std::decay_t<T>{std::forward<T>(closure)}; | |
8000c12: f8c0 4210 str.w r4, [r0, #528] ; 0x210 | |
./modm/src/modm/processing/fiber/task.hpp:217 | |
modm_context_init(&ctx, stack.memory, (uintptr_t*)ptr, caller, ptr); | |
8000c16: f100 0118 add.w r1, r0, #24 | |
8000c1a: 9200 str r2, [sp, #0] | |
8000c1c: f000 fc87 bl 800152e <modm_context_init> | |
_ZN4modm5fiber4TaskC4ILj512EN10fiber_pingMUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartE(): | |
./modm/src/modm/processing/fiber/task.hpp:179 | |
Task::Task(Stack<Size>& stack, T&& closure, Start start) | |
8000c20: 481e ldr r0, [pc, #120] ; (8000c9c <_GLOBAL__sub_I_f1counter+0x128>) | |
./modm/src/modm/processing/fiber/task.hpp:194 | |
modm_context_init(&ctx, stack.memory, stack.memory + stack.words, | |
8000c22: 4b1f ldr r3, [pc, #124] ; (8000ca0 <_GLOBAL__sub_I_f1counter+0x12c>) | |
./modm/src/modm/processing/fiber/task.hpp:179 | |
Task::Task(Stack<Size>& stack, T&& closure, Start start) | |
8000c24: 6104 str r4, [r0, #16] | |
_ZNSt13__atomic_baseIbEC4Eb(): | |
././include/newlib/c++/12.2.1/bits/atomic_base.h:345 | |
8000c26: 7504 strb r4, [r0, #20] | |
_ZN4modm5fiber4TaskC4ILj512EN10fiber_pingMUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartE(): | |
./modm/src/modm/processing/fiber/task.hpp:194 | |
modm_context_init(&ctx, stack.memory, stack.memory + stack.words, | |
8000c28: f500 7206 add.w r2, r0, #536 ; 0x218 | |
8000c2c: 9300 str r3, [sp, #0] | |
8000c2e: f100 0118 add.w r1, r0, #24 | |
8000c32: 4b1c ldr r3, [pc, #112] ; (8000ca4 <_GLOBAL__sub_I_f1counter+0x130>) | |
8000c34: f000 fc7b bl 800152e <modm_context_init> | |
_ZN4modm5fiber4TaskC4ILj512EN10fiber_pongMUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartE(): | |
./modm/src/modm/processing/fiber/task.hpp:179 | |
Task::Task(Stack<Size>& stack, T&& closure, Start start) | |
8000c38: 481b ldr r0, [pc, #108] ; (8000ca8 <_GLOBAL__sub_I_f1counter+0x134>) | |
./modm/src/modm/processing/fiber/task.hpp:194 | |
modm_context_init(&ctx, stack.memory, stack.memory + stack.words, | |
8000c3a: 4b1c ldr r3, [pc, #112] ; (8000cac <_GLOBAL__sub_I_f1counter+0x138>) | |
./modm/src/modm/processing/fiber/task.hpp:179 | |
Task::Task(Stack<Size>& stack, T&& closure, Start start) | |
8000c3c: 6104 str r4, [r0, #16] | |
_ZNSt13__atomic_baseIbEC4Eb(): | |
././include/newlib/c++/12.2.1/bits/atomic_base.h:345 | |
8000c3e: 7504 strb r4, [r0, #20] | |
_ZN4modm5fiber4TaskC4ILj512EN10fiber_pongMUlvE_EEERNS0_5StackIXT_EEEOT0_NS0_5StartE(): | |
./modm/src/modm/processing/fiber/task.hpp:194 | |
modm_context_init(&ctx, stack.memory, stack.memory + stack.words, | |
8000c40: f500 7206 add.w r2, r0, #536 ; 0x218 | |
8000c44: 9300 str r3, [sp, #0] | |
8000c46: f100 0118 add.w r1, r0, #24 | |
8000c4a: 4b19 ldr r3, [pc, #100] ; (8000cb0 <_GLOBAL__sub_I_f1counter+0x13c>) | |
8000c4c: f000 fc6f bl 800152e <modm_context_init> | |
_GLOBAL__sub_I_f1counter(): | |
./main.cpp:135 | |
8000c50: b003 add sp, #12 | |
8000c52: bd30 pop {r4, r5, pc} | |
8000c54: 20000c04 .word 0x20000c04 | |
8000c58: 20002368 .word 0x20002368 | |
8000c5c: 080006a1 .word 0x080006a1 | |
8000c60: 08000525 .word 0x08000525 | |
8000c64: 20002150 .word 0x20002150 | |
8000c68: 08000689 .word 0x08000689 | |
8000c6c: 08000515 .word 0x08000515 | |
8000c70: 20001f38 .word 0x20001f38 | |
8000c74: 08000565 .word 0x08000565 | |
8000c78: 08000505 .word 0x08000505 | |
8000c7c: 20001d20 .word 0x20001d20 | |
8000c80: 080006fd .word 0x080006fd | |
8000c84: 080004f5 .word 0x080004f5 | |
8000c88: 20001b08 .word 0x20001b08 | |
8000c8c: 080005ad .word 0x080005ad | |
8000c90: 080004e5 .word 0x080004e5 | |
8000c94: 200018f0 .word 0x200018f0 | |
8000c98: 080005f5 .word 0x080005f5 | |
8000c9c: 200016d8 .word 0x200016d8 | |
8000ca0: 08000799 .word 0x08000799 | |
8000ca4: 080004d5 .word 0x080004d5 | |
8000ca8: 200014c0 .word 0x200014c0 | |
8000cac: 08000751 .word 0x08000751 | |
8000cb0: 080004c5 .word 0x080004c5 | |
08000cb4 <operator_delete>: | |
operator_delete(): | |
./modm/ext/gcc/new_delete.cpp:63 | |
extern "C" modm_weak | |
void operator_delete([[maybe_unused]] void* ptr) | |
{ | |
modm_assert_continue_fail_debug(0, "delete", | |
"operator delete was called without heap implementation!", ptr); | |
} | |
8000cb4: 4770 bx lr | |
08000cb6 <_ZdlPvj>: | |
_ZdlPvj(): | |
./modm/ext/gcc/new_delete.cpp:71 | |
void operator delete (void* ptr) noexcept { operator_delete(ptr); } | |
modm_weak | |
void operator delete[](void* ptr) noexcept { operator_delete(ptr); } | |
modm_weak | |
void operator delete (void* ptr, std::size_t) noexcept { operator_delete(ptr); } | |
8000cb6: b508 push {r3, lr} | |
8000cb8: f7ff fffc bl 8000cb4 <operator_delete> | |
8000cbc: bd08 pop {r3, pc} | |
08000cbe <_ZN4modm8IODevice5writeEPKc>: | |
_ZN4modm8IODevice5writeEPKc(): | |
./modm/src/modm/io/iodevice.hpp:38 | |
virtual void | |
write(char c) = 0; | |
/// Write a C-string | |
virtual inline void | |
write(const char* str) | |
8000cbe: b538 push {r3, r4, r5, lr} | |
8000cc0: 4605 mov r5, r0 | |
8000cc2: 460c mov r4, r1 | |
./modm/src/modm/io/iodevice.hpp:41 (discriminator 1) | |
{ | |
char c; | |
while ( (c = *str++) ) write(c); | |
8000cc4: f814 1b01 ldrb.w r1, [r4], #1 | |
8000cc8: b901 cbnz r1, 8000ccc <_ZN4modm8IODevice5writeEPKc+0xe> | |
./modm/src/modm/io/iodevice.hpp:42 | |
} | |
8000cca: bd38 pop {r3, r4, r5, pc} | |
./modm/src/modm/io/iodevice.hpp:41 (discriminator 2) | |
while ( (c = *str++) ) write(c); | |
8000ccc: 682b ldr r3, [r5, #0] | |
8000cce: 4628 mov r0, r5 | |
8000cd0: 689b ldr r3, [r3, #8] | |
8000cd2: 4798 blx r3 | |
8000cd4: e7f6 b.n 8000cc4 <_ZN4modm8IODevice5writeEPKc+0x6> | |
08000cd6 <_ZN4modm15IODeviceWrapperINS_8platform7Lpuart1ELNS_8IOBufferE1EED1Ev>: | |
_ZN4modm15IODeviceWrapperINS_8platform7Lpuart1ELNS_8IOBufferE1EED2Ev(): | |
./modm/src/modm/io/iodevice_wrapper.hpp:40 | |
* @ingroup modm_io | |
* @tparam Device Peripheral which should be wrapped | |
* @tparam behavior preferred behavior when the Device buffer is full | |
*/ | |
template< class Device, IOBuffer behavior > | |
class IODeviceWrapper : public IODevice | |
8000cd6: 4770 bx lr | |
08000cd8 <_ZN4modm15IODeviceWrapperINS_8platform7Lpuart1ELNS_8IOBufferE1EE4readERc>: | |
_ZN4modm15IODeviceWrapperINS_8platform7Lpuart1ELNS_8IOBufferE1EE4readERc(): | |
./modm/src/modm/io/iodevice_wrapper.hpp:66 | |
} | |
bool | |
read(char& c) override | |
{ | |
return Device::read(reinterpret_cast<uint8_t&>(c)); | |
8000cd8: 4608 mov r0, r1 | |
8000cda: f000 bbeb b.w 80014b4 <_ZN4modm8platform7Lpuart14readERh> | |
08000cde <_ZN4modm15IODeviceWrapperINS_8platform7Lpuart1ELNS_8IOBufferE1EE5flushEv>: | |
_ZN4modm15IODeviceWrapperINS_8platform7Lpuart1ELNS_8IOBufferE1EE5flushEv(): | |
./modm/src/modm/io/iodevice_wrapper.hpp:60 | |
Device::flushWriteBuffer(); | |
8000cde: f000 bbe3 b.w 80014a8 <_ZN4modm8platform7Lpuart116flushWriteBufferEv> | |
08000ce2 <_ZN4modm15IODeviceWrapperINS_8platform7Lpuart1ELNS_8IOBufferE1EE5writeEc>: | |
_ZN4modm15IODeviceWrapperINS_8platform7Lpuart1ELNS_8IOBufferE1EE5writeEc(): | |
./modm/src/modm/io/iodevice_wrapper.hpp:47 | |
write(char c) override | |
8000ce2: b510 push {r4, lr} | |
8000ce4: 460c mov r4, r1 | |
./modm/src/modm/io/iodevice_wrapper.hpp:52 (discriminator 1) | |
written = Device::write(uint8_t(c)); | |
8000ce6: 4620 mov r0, r4 | |
8000ce8: f000 fb9c bl 8001424 <_ZN4modm8platform7Lpuart15writeEh> | |
./modm/src/modm/io/iodevice_wrapper.hpp:54 (discriminator 1) | |
while(behavior == IOBuffer::BlockIfFull and not written); | |
8000cec: 2800 cmp r0, #0 | |
8000cee: d0fa beq.n 8000ce6 <_ZN4modm15IODeviceWrapperINS_8platform7Lpuart1ELNS_8IOBufferE1EE5writeEc+0x4> | |
./modm/src/modm/io/iodevice_wrapper.hpp:55 | |
} | |
8000cf0: bd10 pop {r4, pc} | |
08000cf2 <_ZN4modm15IODeviceWrapperINS_8platform7Lpuart1ELNS_8IOBufferE1EED0Ev>: | |
_ZN4modm15IODeviceWrapperINS_8platform7Lpuart1ELNS_8IOBufferE1EED0Ev(): | |
./modm/src/modm/io/iodevice_wrapper.hpp:40 | |
class IODeviceWrapper : public IODevice | |
8000cf2: b510 push {r4, lr} | |
8000cf4: 4604 mov r4, r0 | |
8000cf6: 2104 movs r1, #4 | |
8000cf8: f7ff ffdd bl 8000cb6 <_ZdlPvj> | |
8000cfc: 4620 mov r0, r4 | |
8000cfe: bd10 pop {r4, pc} | |
08000d00 <_ZN4modm8IOStream8out_charEcPv>: | |
_ZN4modm8IOStream8out_charEcPv(): | |
./modm/src/modm/io/iostream.hpp:262 | |
static void out_char(char c, void* arg) | |
8000d00: 460b mov r3, r1 | |
./modm/src/modm/io/iostream.hpp:263 | |
{ if (c) reinterpret_cast<modm::IOStream*>(arg)->write(c); } | |
8000d02: 4601 mov r1, r0 | |
8000d04: b118 cbz r0, 8000d0e <_ZN4modm8IOStream8out_charEcPv+0xe> | |
_ZN4modm8IOStream5writeEc(): | |
./modm/src/modm/io/iostream.hpp:71 | |
{ device->write(c); return *this; } | |
8000d06: 6818 ldr r0, [r3, #0] | |
8000d08: 6803 ldr r3, [r0, #0] | |
8000d0a: 689b ldr r3, [r3, #8] | |
8000d0c: 4718 bx r3 | |
_ZN4modm8IOStream8out_charEcPv(): | |
./modm/src/modm/io/iostream.hpp:263 | |
{ if (c) reinterpret_cast<modm::IOStream*>(arg)->write(c); } | |
8000d0e: 4770 bx lr | |
08000d10 <_ZN4modm8delay_msEm>: | |
_ZN4modm8delay_msEm(): | |
./modm/src/modm/platform/core/delay_impl.hpp:49 | |
} | |
void delay_us(uint32_t us); | |
inline void delay_ms(uint32_t ms) | |
{ | |
8000d10: b538 push {r3, r4, r5, lr} | |
8000d12: 4604 mov r4, r0 | |
./modm/src/modm/platform/core/delay_impl.hpp:56 | |
{ | |
if (ms <= 1000) { | |
delay_us(ms * 1000); | |
break; | |
} | |
delay_us(1'000'000); | |
8000d14: 4d08 ldr r5, [pc, #32] ; (8000d38 <_ZN4modm8delay_msEm+0x28>) | |
./modm/src/modm/platform/core/delay_impl.hpp:52 | |
if (ms <= 1000) { | |
8000d16: f5b4 7f7a cmp.w r4, #1000 ; 0x3e8 | |
8000d1a: d806 bhi.n 8000d2a <_ZN4modm8delay_msEm+0x1a> | |
./modm/src/modm/platform/core/delay_impl.hpp:53 | |
delay_us(ms * 1000); | |
8000d1c: f44f 707a mov.w r0, #1000 ; 0x3e8 | |
8000d20: 4360 muls r0, r4 | |
./modm/src/modm/platform/core/delay_impl.hpp:59 | |
ms -= 1000; | |
} | |
} | |
8000d22: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} | |
./modm/src/modm/platform/core/delay_impl.hpp:53 | |
delay_us(ms * 1000); | |
8000d26: f000 ba79 b.w 800121c <_ZN4modm8delay_usEm> | |
./modm/src/modm/platform/core/delay_impl.hpp:56 | |
delay_us(1'000'000); | |
8000d2a: 4628 mov r0, r5 | |
8000d2c: f000 fa76 bl 800121c <_ZN4modm8delay_usEm> | |
./modm/src/modm/platform/core/delay_impl.hpp:57 | |
ms -= 1000; | |
8000d30: f5a4 747a sub.w r4, r4, #1000 ; 0x3e8 | |
./modm/src/modm/platform/core/delay_impl.hpp:52 | |
if (ms <= 1000) { | |
8000d34: e7ef b.n 8000d16 <_ZN4modm8delay_msEm+0x6> | |
8000d36: bf00 nop | |
8000d38: 000f4240 .word 0x000f4240 | |
08000d3c <modm_abandon>: | |
modm_abandon(): | |
./modm/src/modm/board/board.cpp:33 | |
loggerDevice.write(c); | |
} | |
modm_extern_c void | |
modm_abandon(const modm::AssertionInfo &info) | |
{ | |
8000d3c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} | |
8000d40: 4605 mov r5, r0 | |
./modm/src/modm/board/board.cpp:34 | |
MODM_LOG_ERROR << "Assertion '" << info.name << "'"; | |
8000d42: 493b ldr r1, [pc, #236] ; (8000e30 <modm_abandon+0xf4>) | |
8000d44: 483b ldr r0, [pc, #236] ; (8000e34 <modm_abandon+0xf8>) | |
8000d46: f7ff fa8c bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
8000d4a: 6829 ldr r1, [r5, #0] | |
8000d4c: f7ff fa89 bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
8000d50: 4939 ldr r1, [pc, #228] ; (8000e38 <modm_abandon+0xfc>) | |
8000d52: f7ff fa86 bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
./modm/src/modm/board/board.cpp:35 | |
if (info.context != uintptr_t(-1)) { | |
8000d56: 686b ldr r3, [r5, #4] | |
8000d58: 3301 adds r3, #1 | |
8000d5a: d017 beq.n 8000d8c <modm_abandon+0x50> | |
./modm/src/modm/board/board.cpp:36 (discriminator 1) | |
MODM_LOG_ERROR << " @ " << (void *) info.context << | |
8000d5c: 4937 ldr r1, [pc, #220] ; (8000e3c <modm_abandon+0x100>) | |
8000d5e: 4835 ldr r0, [pc, #212] ; (8000e34 <modm_abandon+0xf8>) | |
8000d60: f7ff fa7f bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
8000d64: 4604 mov r4, r0 | |
_ZN4modm8IOStreamlsEPKv(): | |
./modm/src/modm/io/iostream.hpp:199 (discriminator 1) | |
{ writePointer(p); return *this; } | |
8000d66: 6869 ldr r1, [r5, #4] | |
8000d68: f000 f8d2 bl 8000f10 <_ZN4modm8IOStream12writePointerEPKv> | |
modm_abandon(): | |
./modm/src/modm/board/board.cpp:37 (discriminator 1) | |
" (" << (uint32_t) info.context << ")"; | |
8000d6c: 4620 mov r0, r4 | |
8000d6e: 4934 ldr r1, [pc, #208] ; (8000e40 <modm_abandon+0x104>) | |
8000d70: f7ff fa77 bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
_ZN4modm8IOStream16writeIntegerModeImEEvT_(): | |
./modm/src/modm/io/iostream.hpp:223 (discriminator 1) | |
if (mode == Mode::Ascii) { | |
8000d74: 6843 ldr r3, [r0, #4] | |
modm_abandon(): | |
./modm/src/modm/board/board.cpp:37 (discriminator 1) | |
8000d76: 4604 mov r4, r0 | |
8000d78: 686e ldr r6, [r5, #4] | |
_ZN4modm8IOStream16writeIntegerModeImEEvT_(): | |
./modm/src/modm/io/iostream.hpp:223 (discriminator 1) | |
8000d7a: 2b00 cmp r3, #0 | |
8000d7c: d13d bne.n 8000dfa <modm_abandon+0xbe> | |
./modm/src/modm/io/iostream.hpp:224 | |
writeInteger(v); | |
8000d7e: 4631 mov r1, r6 | |
8000d80: f000 f8df bl 8000f42 <_ZN4modm8IOStream12writeIntegerEm> | |
modm_abandon(): | |
./modm/src/modm/board/board.cpp:37 | |
8000d84: 4620 mov r0, r4 | |
8000d86: 492f ldr r1, [pc, #188] ; (8000e44 <modm_abandon+0x108>) | |
8000d88: f7ff fa6b bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
_ZN4modm8platform7GpioSetIJNS0_10GpioStaticINS0_6detail6DataA9EEENS2_INS3_6DataB7EEENS2_INS3_6DataC7EEEEE9setOutputEv(): | |
./modm/src/modm/platform/gpio/set.hpp:68 (discriminator 1) | |
if constexpr (mask(2)) GPIOC->MODER = (GPIOC->MODER & ~mask2(2)) | mask2(2, i(Mode::Output)); | |
8000d8c: 250b movs r5, #11 | |
_ZN4modm8platform16SoftwareGpioPortIJNS0_10GpioStaticINS0_6detail6DataA9EEENS2_INS3_6DataB7EEENS2_INS3_6DataC7EEEEE5writeEh(): | |
./modm/src/modm/platform/gpio/software_port.hpp:389 (discriminator 1) | |
if constexpr (28 < width) if constexpr (constexpr auto pos = shift_mask(0, 28); pos >= 0) p |= (data & (1ul << 28)) ? (1ul << pos) : (1ul << (pos + 16)); | |
if constexpr (29 < width) if constexpr (constexpr auto pos = shift_mask(0, 29); pos >= 0) p |= (data & (1ul << 29)) ? (1ul << pos) : (1ul << (pos + 16)); | |
if constexpr (30 < width) if constexpr (constexpr auto pos = shift_mask(0, 30); pos >= 0) p |= (data & (1ul << 30)) ? (1ul << pos) : (1ul << (pos + 16)); | |
if constexpr (31 < width) if constexpr (constexpr auto pos = shift_mask(0, 31); pos >= 0) p |= (data & (1ul << 31)) ? (1ul << pos) : (1ul << (pos + 16)); | |
p ^= inverted(0); | |
GPIOA->BSRR = ((~p & mask(0)) << 16) | p; | |
8000d8e: f04f 7900 mov.w r9, #33554432 ; 0x2000000 | |
_ZN4modm8platform7GpioSetIJNS0_10GpioStaticINS0_6detail6DataA9EEENS2_INS3_6DataB7EEENS2_INS3_6DataC7EEEEE9setOutputEv(): | |
./modm/src/modm/platform/gpio/set.hpp:66 (discriminator 1) | |
if constexpr (mask(0)) GPIOA->MODER = (GPIOA->MODER & ~mask2(0)) | mask2(0, i(Mode::Output)); | |
8000d92: 4c2d ldr r4, [pc, #180] ; (8000e48 <modm_abandon+0x10c>) | |
modm_abandon(): | |
./modm/src/modm/board/board.cpp:42 (discriminator 1) | |
} | |
#if MODM_ASSERTION_INFO_HAS_DESCRIPTION | |
MODM_LOG_ERROR << " failed!\n " << info.description << "\nAbandoning...\n"; | |
#else | |
MODM_LOG_ERROR << " failed!\nAbandoning...\n"; | |
8000d94: 492d ldr r1, [pc, #180] ; (8000e4c <modm_abandon+0x110>) | |
8000d96: 4827 ldr r0, [pc, #156] ; (8000e34 <modm_abandon+0xf8>) | |
8000d98: f7ff fa63 bl 8000262 <_ZN4modm8IOStreamlsEPKc> | |
_ZN4modm8platform7GpioSetIJNS0_10GpioStaticINS0_6detail6DataA9EEENS2_INS3_6DataB7EEENS2_INS3_6DataC7EEEEE9setOutputEv(): | |
./modm/src/modm/platform/gpio/set.hpp:66 (discriminator 1) | |
8000d9c: 6823 ldr r3, [r4, #0] | |
./modm/src/modm/platform/gpio/set.hpp:67 (discriminator 1) | |
if constexpr (mask(1)) GPIOB->MODER = (GPIOB->MODER & ~mask2(1)) | mask2(1, i(Mode::Output)); | |
8000d9e: 4a2c ldr r2, [pc, #176] ; (8000e50 <modm_abandon+0x114>) | |
./modm/src/modm/platform/gpio/set.hpp:66 (discriminator 1) | |
if constexpr (mask(0)) GPIOA->MODER = (GPIOA->MODER & ~mask2(0)) | mask2(0, i(Mode::Output)); | |
8000da0: f423 2340 bic.w r3, r3, #786432 ; 0xc0000 | |
8000da4: f443 2380 orr.w r3, r3, #262144 ; 0x40000 | |
8000da8: 6023 str r3, [r4, #0] | |
./modm/src/modm/platform/gpio/set.hpp:67 (discriminator 1) | |
if constexpr (mask(1)) GPIOB->MODER = (GPIOB->MODER & ~mask2(1)) | mask2(1, i(Mode::Output)); | |
8000daa: 6813 ldr r3, [r2, #0] | |
8000dac: f423 4340 bic.w r3, r3, #49152 ; 0xc000 | |
8000db0: f443 4380 orr.w r3, r3, #16384 ; 0x4000 | |
8000db4: 6013 str r3, [r2, #0] | |
./modm/src/modm/platform/gpio/set.hpp:68 (discriminator 1) | |
if constexpr (mask(2)) GPIOC->MODER = (GPIOC->MODER & ~mask2(2)) | mask2(2, i(Mode::Output)); | |
8000db6: f8d2 3400 ldr.w r3, [r2, #1024] ; 0x400 | |
8000dba: f423 4340 bic.w r3, r3, #49152 ; 0xc000 | |
8000dbe: f443 4380 orr.w r3, r3, #16384 ; 0x4000 | |
8000dc2: f8c2 3400 str.w r3, [r2, #1024] ; 0x400 | |
_ZN4modm8platform16SoftwareGpioPortIJNS0_10GpioStaticINS0_6detail6DataA9EEENS2_INS3_6DataB7EEENS2_INS3_6DataC7EEEEE5writeEh(): | |
./modm/src/modm/platform/gpio/software_port.hpp:425 | |
if constexpr (28 < width) if constexpr (constexpr auto pos = shift_mask(1, 28); pos >= 0) p |= (data & (1ul << 28)) ? (1ul << pos) : (1ul << (pos + 16)); | |
if constexpr (29 < width) if constexpr (constexpr auto pos = shift_mask(1, 29); pos >= 0) p |= (data & (1ul << 29)) ? (1ul << pos) : (1ul << (pos + 16)); | |
if constexpr (30 < width) if constexpr (constexpr auto pos = shift_mask(1, 30); pos >= 0) p |= (data & (1ul << 30)) ? (1ul << pos) : (1ul << (pos + 16)); | |
if constexpr (31 < width) if constexpr (constexpr auto pos = shift_mask(1, 31); pos >= 0) p |= (data & (1ul << 31)) ? (1ul << pos) : (1ul << (pos + 16)); | |
p ^= inverted(1); | |
GPIOB->BSRR = ((~p & mask(1)) << 16) | p; | |
8000dc6: f44f 0600 mov.w r6, #8388608 ; 0x800000 | |
./modm/src/modm/platform/gpio/software_port.hpp:461 | |
if constexpr (28 < width) if constexpr (constexpr auto pos = shift_mask(2, 28); pos >= 0) p |= (data & (1ul << 28)) ? (1ul << pos) : (1ul << (pos + 16)); | |
if constexpr (29 < width) if constexpr (constexpr auto pos = shift_mask(2, 29); pos >= 0) p |= (data & (1ul << 29)) ? (1ul << pos) : (1ul << (pos + 16)); | |
if constexpr (30 < width) if constexpr (constexpr auto pos = shift_mask(2, 30); pos >= 0) p |= (data & (1ul << 30)) ? (1ul << pos) : (1ul << (pos + 16)); | |
if constexpr (31 < width) if constexpr (constexpr auto pos = shift_mask(2, 31); pos >= 0) p |= (data & (1ul << 31)) ? (1ul << pos) : (1ul << (pos + 16)); | |
p ^= inverted(2); | |
GPIOC->BSRR = ((~p & mask(2)) << 16) | p; | |
8000dca: 2380 movs r3, #128 ; 0x80 | |
./modm/src/modm/platform/gpio/software_port.hpp:425 | |
GPIOB->BSRR = ((~p & mask(1)) << 16) | p; | |
8000dcc: f8df 8080 ldr.w r8, [pc, #128] ; 8000e50 <modm_abandon+0x114> | |
./modm/src/modm/platform/gpio/software_port.hpp:461 | |
GPIOC->BSRR = ((~p & mask(2)) << 16) | p; | |
8000dd0: 4f20 ldr r7, [pc, #128] ; (8000e54 <modm_abandon+0x118>) | |
./modm/src/modm/platform/gpio/software_port.hpp:389 | |
GPIOA->BSRR = ((~p & mask(0)) << 16) | p; | |
8000dd2: f8c4 9018 str.w r9, [r4, #24] | |
modm_abandon(): | |
./modm/src/modm/board/board.cpp:48 | |
#endif | |
Board::Leds::setOutput(); | |
for(int times=10; times>=0; times--) | |
{ | |
Board::Leds::write(1); | |
modm::delay_ms(20); | |
8000dd6: 2014 movs r0, #20 | |
_ZN4modm8platform16SoftwareGpioPortIJNS0_10GpioStaticINS0_6detail6DataA9EEENS2_INS3_6DataB7EEENS2_INS3_6DataC7EEEEE5writeEh(): | |
./modm/src/modm/platform/gpio/software_port.hpp:425 | |
GPIOB->BSRR = ((~p & mask(1)) << 16) | p; | |
8000dd8: f8c8 6018 str.w r6, [r8, #24] | |
./modm/src/modm/platform/gpio/software_port.hpp:461 | |
GPIOC->BSRR = ((~p & mask(2)) << 16) | p; | |
8000ddc: 61bb str r3, [r7, #24] | |
modm_abandon(): | |
./modm/src/modm/board/board.cpp:48 | |
8000dde: f7ff ff97 bl 8000d10 <_ZN4modm8delay_msEm> | |
_ZN4modm8platform16SoftwareGpioPortIJNS0_10GpioStaticINS0_6detail6DataA9EEENS2_INS3_6DataB7EEENS2_INS3_6DataC7EEEEE5writeEh(): | |
./modm/src/modm/platform/gpio/software_port.hpp:389 | |
GPIOA->BSRR = ((~p & mask(0)) << 16) | p; | |
8000de2: f8c4 9018 str.w r9, [r4, #24] | |
modm_abandon(): | |
./modm/src/modm/board/board.cpp:50 | |
Board::Leds::write(0); | |
modm::delay_ms(180); | |
8000de6: 20b4 movs r0, #180 ; 0xb4 | |
_ZN4modm8platform16SoftwareGpioPortIJNS0_10GpioStaticINS0_6detail6DataA9EEENS2_INS3_6DataB7EEENS2_INS3_6DataC7EEEEE5writeEh(): | |
./modm/src/modm/platform/gpio/software_port.hpp:425 | |
GPIOB->BSRR = ((~p & mask(1)) << 16) | p; | |
8000de8: f8c8 6018 str.w r6, [r8, #24] | |
./modm/src/modm/platform/gpio/software_port.hpp:461 | |
GPIOC->BSRR = ((~p & mask(2)) << 16) | p; | |
8000dec: 61be str r6, [r7, #24] | |
modm_abandon(): | |
./modm/src/modm/board/board.cpp:50 | |
8000dee: f7ff ff8f bl 8000d10 <_ZN4modm8delay_msEm> | |
./modm/src/modm/board/board.cpp:45 | |
for(int times=10; times>=0; times--) | |
8000df2: 3d01 subs r5, #1 | |
8000df4: d1e7 bne.n 8000dc6 <modm_abandon+0x8a> | |
./modm/src/modm/board/board.cpp:56 | |
} | |
// Do not flush here otherwise you may deadlock due to waiting on the UART | |
// interrupt which may never be executed when abandoning in a higher | |
// priority Interrupt!!! | |
// MODM_LOG_ERROR << modm::flush; | |
} | |
8000df6: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} | |
_ZN4modm8IOStream16writeIntegerModeImEEvT_(): | |
./modm/src/modm/io/iostream.hpp:225 | |
} else if (mode == Mode::Binary) { | |
8000dfa: 2b02 cmp r3, #2 | |
./modm/src/modm/io/iostream.hpp:226 | |
for (uint8_t ii=t_bits-8; ii < t_bits; ii -= 8) | |
8000dfc: f04f 0518 mov.w r5, #24 | |
./modm/src/modm/io/iostream.hpp:225 | |
} else if (mode == Mode::Binary) { | |
8000e00: d10a bne.n 8000e18 <modm_abandon+0xdc> | |
./modm/src/modm/io/iostream.hpp:227 | |
writeBin(static_cast<std::make_unsigned_t<T>>(v) >> ii); | |
8000e02: fa26 f105 lsr.w r1, r6, r5 | |
8000e06: 3d08 subs r5, #8 | |
8000e08: 4620 mov r0, r4 | |
8000e0a: b2c9 uxtb r1, r1 | |
8000e0c: b2ed uxtb r5, r5 | |
8000e0e: f000 f86d bl 8000eec <_ZN4modm8IOStream8writeBinEh> | |
./modm/src/modm/io/iostream.hpp:226 | |
for (uint8_t ii=t_bits-8; ii < t_bits; ii -= 8) | |
8000e12: 2df8 cmp r5, #248 ; 0xf8 | |
8000e14: d1f5 bne.n 8000e02 <modm_abandon+0xc6> | |
8000e16: e7b5 b.n 8000d84 <modm_abandon+0x48> | |
./modm/src/modm/io/iostream.hpp:230 | |
writeHex(static_cast<std::make_unsigned_t<T>>(v) >> ii); | |
8000e18: fa26 f105 lsr.w r1, r6, r5 | |
8000e1c: 3d08 subs r5, #8 | |
8000e1e: 4620 mov r0, r4 | |
8000e20: b2c9 uxtb r1, r1 | |
8000e22: b2ed uxtb r5, r5 | |
8000e24: f000 f856 bl 8000ed4 <_ZN4modm8IOStream8writeHexEh> | |
./modm/src/modm/io/iostream.hpp:229 | |
for (uint8_t ii=t_bits-8; ii < t_bits; ii -= 8) | |
8000e28: 2df8 cmp r5, #248 ; 0xf8 | |
8000e2a: d1f5 bne.n 8000e18 <modm_abandon+0xdc> | |
8000e2c: e7aa b.n 8000d84 <modm_abandon+0x48> | |
8000e2e: bf00 nop | |
8000e30: 08001ec4 .word 0x08001ec4 | |
8000e34: 20000c3c .word 0x20000c3c | |
8000e38: 08001ece .word 0x08001ece | |
8000e3c: 08001ed0 .word 0x08001ed0 | |
8000e40: 08001ed4 .word 0x08001ed4 | |
8000e44: 08001ed7 .word 0x08001ed7 | |
8000e48: 42020000 .word 0x42020000 | |
8000e4c: 08001ed9 .word 0x08001ed9 | |
8000e50: 42020400 .word 0x42020400 | |
8000e54: 42020800 .word 0x42020800 | |
08000e58 <_GLOBAL__sub_I_loggerDevice>: | |
_ZN4modm8IOStreamC4ERNS_8IODeviceE(): | |
./modm/src/modm/io/iostream.hpp:65 | |
device(&odevice) | |
8000e58: 2300 movs r3, #0 | |
8000e5a: f06f 4100 mvn.w r1, #2147483648 ; 0x80000000 | |
_GLOBAL__sub_I_loggerDevice(): | |
./modm/src/modm/board/board.cpp:56 | |
8000e5e: b510 push {r4, lr} | |
_ZN4modm8IOStreamC4ERNS_8IODeviceE(): | |
./modm/src/modm/io/iostream.hpp:65 | |
8000e60: 4a11 ldr r2, [pc, #68] ; (8000ea8 <_GLOBAL__sub_I_loggerDevice+0x50>) | |
8000e62: 4c12 ldr r4, [pc, #72] ; (8000eac <_GLOBAL__sub_I_loggerDevice+0x54>) | |
8000e64: 4812 ldr r0, [pc, #72] ; (8000eb0 <_GLOBAL__sub_I_loggerDevice+0x58>) | |
8000e66: e9c2 3304 strd r3, r3, [r2, #16] | |
8000e6a: e9c2 0202 strd r0, r2, [r2, #8] | |
8000e6e: 6014 str r4, [r2, #0] | |
8000e70: 6053 str r3, [r2, #4] | |
8000e72: 6191 str r1, [r2, #24] | |
8000e74: 4a0f ldr r2, [pc, #60] ; (8000eb4 <_GLOBAL__sub_I_loggerDevice+0x5c>) | |
8000e76: e9c2 4300 strd r4, r3, [r2] | |
8000e7a: e9c2 0202 strd r0, r2, [r2, #8] | |
8000e7e: e9c2 3304 strd r3, r3, [r2, #16] | |
8000e82: 6191 str r1, [r2, #24] | |
8000e84: 4a0c ldr r2, [pc, #48] ; (8000eb8 <_GLOBAL__sub_I_loggerDevice+0x60>) | |
8000e86: e9c2 4300 strd r4, r3, [r2] | |
8000e8a: e9c2 0202 strd r0, r2, [r2, #8] | |
8000e8e: e9c2 3304 strd r3, r3, [r2, #16] | |
8000e92: 6191 str r1, [r2, #24] | |
8000e94: 4a09 ldr r2, [pc, #36] ; (8000ebc <_GLOBAL__sub_I_loggerDevice+0x64>) | |
8000e96: e9c2 4300 strd r4, r3, [r2] | |
8000e9a: e9c2 0202 strd r0, r2, [r2, #8] | |
8000e9e: e9c2 3304 strd r3, r3, [r2, #16] | |
8000ea2: 6191 str r1, [r2, #24] | |
_GLOBAL__sub_I_loggerDevice(): | |
./modm/src/modm/board/board.cpp:56 | |
8000ea4: bd10 pop {r4, pc} | |
8000ea6: bf00 nop | |
8000ea8: 20000c90 .word 0x20000c90 | |
8000eac: 20000c00 .word 0x20000c00 | |
8000eb0: 08000d01 .word 0x08000d01 | |
8000eb4: 20000c74 .word 0x20000c74 | |
8000eb8: 20000c58 .word 0x20000c58 | |
8000ebc: 20000c3c .word 0x20000c3c | |
08000ec0 <_ZZN4modm8IOStream8writeHexEhENKUlhE_clEh.isra.0>: | |
_ZZN4modm8IOStream8writeHexEhENKUlhE_clEh.isra.0(): | |
./modm/src/modm/io/iostream.cpp:66 | |
void | |
IOStream::writeHex(uint8_t value) | |
{ | |
const auto fn_nibble = [this](uint8_t nibble) | |
{ | |
device->write( nibble + (nibble > 9 ? 'A' - 10 : '0') ); | |
8000ec0: 6800 ldr r0, [r0, #0] | |
8000ec2: 2909 cmp r1, #9 | |
8000ec4: 6803 ldr r3, [r0, #0] | |
8000ec6: 689a ldr r2, [r3, #8] | |
8000ec8: bf8c ite hi | |
8000eca: 2337 movhi r3, #55 ; 0x37 | |
8000ecc: 2330 movls r3, #48 ; 0x30 | |
8000ece: 4419 add r1, r3 | |
8000ed0: b2c9 uxtb r1, r1 | |
8000ed2: 4710 bx r2 | |
08000ed4 <_ZN4modm8IOStream8writeHexEh>: | |
_ZN4modm8IOStream8writeHexEh(): | |
./modm/src/modm/io/iostream.cpp:63 | |
{ | |
8000ed4: b538 push {r3, r4, r5, lr} | |
8000ed6: 4605 mov r5, r0 | |
8000ed8: 460c mov r4, r1 | |
./modm/src/modm/io/iostream.cpp:68 | |
}; | |
fn_nibble(value >> 4); | |
8000eda: 0909 lsrs r1, r1, #4 | |
8000edc: f7ff fff0 bl 8000ec0 <_ZZN4modm8IOStream8writeHexEhENKUlhE_clEh.isra.0> | |
./modm/src/modm/io/iostream.cpp:69 | |
fn_nibble(value & 0xF); | |
8000ee0: 4628 mov r0, r5 | |
8000ee2: f004 010f and.w r1, r4, #15 | |
8000ee6: f7ff ffeb bl 8000ec0 <_ZZN4modm8IOStream8writeHexEhENKUlhE_clEh.isra.0> | |
./modm/src/modm/io/iostream.cpp:70 | |
} | |
8000eea: bd38 pop {r3, r4, r5, pc} | |
08000eec <_ZN4modm8IOStream8writeBinEh>: | |
_ZN4modm8IOStream8writeBinEh(): | |
./modm/src/modm/io/iostream.cpp:75 | |
// ---------------------------------------------------------------------------- | |
void | |
IOStream::writeBin(uint8_t value) | |
{ | |
8000eec: b570 push {r4, r5, r6, lr} | |
8000eee: 4606 mov r6, r0 | |
8000ef0: 460c mov r4, r1 | |
8000ef2: 2508 movs r5, #8 | |
./modm/src/modm/io/iostream.cpp:78 | |
for (uint_fast8_t ii = 0; ii < 8; ii++) | |
{ | |
device->write(value & 0x80 ? '1' : '0'); | |
8000ef4: 6830 ldr r0, [r6, #0] | |
8000ef6: f014 0f80 tst.w r4, #128 ; 0x80 | |
8000efa: 6803 ldr r3, [r0, #0] | |
8000efc: bf14 ite ne | |
8000efe: 2131 movne r1, #49 ; 0x31 | |
8000f00: 2130 moveq r1, #48 ; 0x30 | |
8000f02: 689b ldr r3, [r3, #8] | |
8000f04: 4798 blx r3 | |
./modm/src/modm/io/iostream.cpp:79 | |
value <<= 1; | |
8000f06: 0064 lsls r4, r4, #1 | |
./modm/src/modm/io/iostream.cpp:76 | |
for (uint_fast8_t ii = 0; ii < 8; ii++) | |
8000f08: 3d01 subs r5, #1 | |
./modm/src/modm/io/iostream.cpp:79 | |
value <<= 1; | |
8000f0a: b2e4 uxtb r4, r4 | |
./modm/src/modm/io/iostream.cpp:76 | |
for (uint_fast8_t ii = 0; ii < 8; ii++) | |
8000f0c: d1f2 bne.n 8000ef4 <_ZN4modm8IOStream8writeBinEh+0x8> | |
./modm/src/modm/io/iostream.cpp:81 | |
} | |
} | |
8000f0e: bd70 pop {r4, r5, r6, pc} | |
08000f10 <_ZN4modm8IOStream12writePointerEPKv>: | |
_ZN4modm8IOStream12writePointerEPKv(): | |
./modm/src/modm/io/iostream.cpp:86 | |
// ---------------------------------------------------------------------------- | |
void | |
IOStream::writePointer(const void* p) | |
{ | |
8000f10: b570 push {r4, r5, r6, lr} | |
8000f12: 4605 mov r5, r0 | |
./modm/src/modm/io/iostream.cpp:87 | |
device->write('0'); | |
8000f14: 6800 ldr r0, [r0, #0] | |
./modm/src/modm/io/iostream.cpp:86 | |
{ | |
8000f16: 460e mov r6, r1 | |
./modm/src/modm/io/iostream.cpp:87 | |
device->write('0'); | |
8000f18: 6803 ldr r3, [r0, #0] | |
8000f1a: 2130 movs r1, #48 ; 0x30 | |
8000f1c: 689b ldr r3, [r3, #8] | |
8000f1e: 4798 blx r3 | |
./modm/src/modm/io/iostream.cpp:88 | |
device->write('x'); | |
8000f20: 6828 ldr r0, [r5, #0] | |
8000f22: 2178 movs r1, #120 ; 0x78 | |
8000f24: 6803 ldr r3, [r0, #0] | |
./modm/src/modm/io/iostream.cpp:98 | |
writeHex(value >> 8); | |
writeHex(value); | |
#elif MODM_SIZEOF_POINTER == 4 | |
for (uint8_t ii=24; ii < 32; ii -= 8) | |
8000f26: 2418 movs r4, #24 | |
./modm/src/modm/io/iostream.cpp:88 | |
device->write('x'); | |
8000f28: 689b ldr r3, [r3, #8] | |
8000f2a: 4798 blx r3 | |
./modm/src/modm/io/iostream.cpp:99 (discriminator 3) | |
writeHex(value >> ii); | |
8000f2c: fa26 f104 lsr.w r1, r6, r4 | |
8000f30: 3c08 subs r4, #8 | |
8000f32: 4628 mov r0, r5 | |
8000f34: b2c9 uxtb r1, r1 | |
8000f36: b2e4 uxtb r4, r4 | |
8000f38: f7ff ffcc bl 8000ed4 <_ZN4modm8IOStream8writeHexEh> | |
./modm/src/modm/io/iostream.cpp:98 (discriminator 3) | |
for (uint8_t ii=24; ii < 32; ii -= 8) | |
8000f3c: 2cf8 cmp r4, #248 ; 0xf8 | |
8000f3e: d1f5 bne.n 8000f2c <_ZN4modm8IOStream12writePointerEPKv+0x1c> | |
./modm/src/modm/io/iostream.cpp:107 | |
for (uint8_t ii=56; ii < 64; ii -= 8) | |
writeHex(value >> ii); | |
#endif | |
} | |
8000f40: bd70 pop {r4, r5, r6, pc} | |
08000f42 <_ZN4modm8IOStream12writeIntegerEm>: | |
_ZN4modm8IOStream12writeIntegerEm(): | |
./modm/src/modm/io/iostream_printf.cpp:83 | |
value < 0, 10, 0, 0, FLAGS_LONG); | |
} | |
void | |
IOStream::writeInteger(uint32_t value) | |
{ | |
8000f42: b57f push {r0, r1, r2, r3, r4, r5, r6, lr} | |
./modm/src/modm/io/iostream_printf.cpp:84 | |
print_integer(&output_gadget, value, false, 10, 0, 0, FLAGS_LONG); | |
8000f44: 2300 movs r3, #0 | |
./modm/src/modm/io/iostream_printf.cpp:83 | |
{ | |
8000f46: 460a mov r2, r1 | |
./modm/src/modm/io/iostream_printf.cpp:84 | |
print_integer(&output_gadget, value, false, 10, 0, 0, FLAGS_LONG); | |
8000f48: f44f 7100 mov.w r1, #512 ; 0x200 | |
8000f4c: e9cd 3103 strd r3, r1, [sp, #12] | |
8000f50: 210a movs r1, #10 | |
8000f52: 9302 str r3, [sp, #8] | |
8000f54: e9cd 3100 strd r3, r1, [sp] | |
8000f58: 3008 adds r0, #8 | |
8000f5a: f000 fb97 bl 800168c <print_integer> | |
./modm/src/modm/io/iostream_printf.cpp:85 | |
} | |
8000f5e: b007 add sp, #28 | |
8000f60: f85d fb04 ldr.w pc, [sp], #4 | |
08000f64 <_ZN4modm8IOStream12writeIntegerEx>: | |
_ZN4modm8IOStream12writeIntegerEx(): | |
./modm/src/modm/io/iostream_printf.cpp:89 | |
void | |
IOStream::writeInteger(int64_t value) | |
{ | |
8000f64: b510 push {r4, lr} | |
./modm/src/modm/io/iostream_printf.cpp:90 | |
print_integer(&output_gadget, uint64_t(value < 0 ? -value : value), | |
8000f66: 2b00 cmp r3, #0 | |
./modm/src/modm/io/iostream_printf.cpp:89 | |
{ | |
8000f68: 4619 mov r1, r3 | |
8000f6a: b086 sub sp, #24 | |
./modm/src/modm/io/iostream_printf.cpp:90 | |
print_integer(&output_gadget, uint64_t(value < 0 ? -value : value), | |
8000f6c: da02 bge.n 8000f74 <_ZN4modm8IOStream12writeIntegerEx+0x10> | |
8000f6e: 4252 negs r2, r2 | |
8000f70: eb63 0343 sbc.w r3, r3, r3, lsl #1 | |
8000f74: 2400 movs r4, #0 | |
8000f76: f44f 6c80 mov.w ip, #1024 ; 0x400 | |
8000f7a: 9402 str r4, [sp, #8] | |
8000f7c: e9cd 4c03 strd r4, ip, [sp, #12] | |
8000f80: 240a movs r4, #10 | |
8000f82: 0fc9 lsrs r1, r1, #31 | |
8000f84: 9401 str r4, [sp, #4] | |
8000f86: 9100 str r1, [sp, #0] | |
8000f88: 3008 adds r0, #8 | |
8000f8a: f000 fb7f bl 800168c <print_integer> | |
./modm/src/modm/io/iostream_printf.cpp:92 | |
value < 0, 10, 0, 0, FLAGS_LONG_LONG); | |
} | |
8000f8e: b006 add sp, #24 | |
8000f90: bd10 pop {r4, pc} | |
08000f92 <_ZN4modm8IOStream12writeIntegerEy>: | |
_ZN4modm8IOStream12writeIntegerEy(): | |
./modm/src/modm/io/iostream_printf.cpp:96 | |
void | |
IOStream::writeInteger(uint64_t value) | |
{ | |
8000f92: b510 push {r4, lr} | |
./modm/src/modm/io/iostream_printf.cpp:97 | |
print_integer(&output_gadget, value, false, 10, 0, 0, FLAGS_LONG_LONG); | |
8000f94: 2100 movs r1, #0 | |
8000f96: f44f 6480 mov.w r4, #1024 ; 0x400 | |
./modm/src/modm/io/iostream_printf.cpp:96 | |
{ | |
8000f9a: b086 sub sp, #24 | |
./modm/src/modm/io/iostream_printf.cpp:97 | |
print_integer(&output_gadget, value, false, 10, 0, 0, FLAGS_LONG_LONG); | |
8000f9c: e9cd 1403 strd r1, r4, [sp, #12] | |
8000fa0: 240a movs r4, #10 | |
8000fa2: 9102 str r1, [sp, #8] | |
8000fa4: e9cd 1400 strd r1, r4, [sp] | |
8000fa8: 3008 adds r0, #8 | |
8000faa: f000 fb6f bl 800168c <print_integer> | |
./modm/src/modm/io/iostream_printf.cpp:98 | |
} | |
8000fae: b006 add sp, #24 | |
8000fb0: bd10 pop {r4, pc} | |
... | |
08000fb4 <_ZN4modm8platform3Rcc24enableInternalClockMHz48Em>: | |
_ZN4modm8platform3Rcc24enableInternalClockMHz48Em(): | |
./modm/src/modm/platform/clock/rcc.cpp:34 | |
// ---------------------------------------------------------------------------- | |
bool | |
Rcc::enableInternalClockMHz48(uint32_t waitCycles) | |
{ | |
bool retval; | |
RCC->CRRCR |= RCC_CRRCR_HSI48ON; | |
8000fb4: 4a09 ldr r2, [pc, #36] ; (8000fdc <_ZN4modm8platform3Rcc24enableInternalClockMHz48Em+0x28>) | |
8000fb6: f8d2 3098 ldr.w r3, [r2, #152] ; 0x98 | |
8000fba: f043 0301 orr.w r3, r3, #1 | |
8000fbe: f8c2 3098 str.w r3, [r2, #152] ; 0x98 | |
./modm/src/modm/platform/clock/rcc.cpp:35 (discriminator 7) | |
while (not (retval = (RCC->CRRCR & RCC_CRRCR_HSI48RDY)) and --waitCycles) | |
8000fc2: f8d2 3098 ldr.w r3, [r2, #152] ; 0x98 | |
8000fc6: f013 0302 ands.w r3, r3, #2 | |
8000fca: d105 bne.n 8000fd8 <_ZN4modm8platform3Rcc24enableInternalClockMHz48Em+0x24> | |
./modm/src/modm/platform/clock/rcc.cpp:35 (discriminator 1) | |
8000fcc: 3801 subs r0, #1 | |
8000fce: d1f8 bne.n 8000fc2 <_ZN4modm8platform3Rcc24enableInternalClockMHz48Em+0xe> | |
./modm/src/modm/platform/clock/rcc.cpp:38 | |
; | |
return retval; | |
} | |
8000fd0: 3800 subs r0, #0 | |
8000fd2: bf18 it ne | |
8000fd4: 2001 movne r0, #1 | |
8000fd6: 4770 bx lr | |
./modm/src/modm/platform/clock/rcc.cpp:35 | |
while (not (retval = (RCC->CRRCR & RCC_CRRCR_HSI48RDY)) and --waitCycles) | |
8000fd8: 4618 mov r0, r3 | |
8000fda: e7f9 b.n 8000fd0 <_ZN4modm8platform3Rcc24enableInternalClockMHz48Em+0x1c> | |
8000fdc: 40021000 .word 0x40021000 | |
08000fe0 <_ZN4modm8platform3Rcc29enableMultiSpeedInternalClockENS1_12MsiFrequencyEm>: | |
_ZN4modm8platform3Rcc29enableMultiSpeedInternalClockENS1_12MsiFrequencyEm(): | |
./modm/src/modm/platform/clock/rcc.cpp:53 | |
bool | |
Rcc::enableMultiSpeedInternalClock(MsiFrequency msi_frequency, uint32_t waitCycles) | |
{ | |
bool retval; | |
RCC->CR = (RCC->CR & ~RCC_CR_MSIRANGE) | static_cast<uint32_t>(msi_frequency) | RCC_CR_MSIRGSEL | RCC_CR_MSION; | |
8000fe0: 4a09 ldr r2, [pc, #36] ; (8001008 <_ZN4modm8platform3Rcc29enableMultiSpeedInternalClockENS1_12MsiFrequencyEm+0x28>) | |
8000fe2: 6813 ldr r3, [r2, #0] | |
8000fe4: f023 03f0 bic.w r3, r3, #240 ; 0xf0 | |
8000fe8: 4303 orrs r3, r0 | |
8000fea: f043 0309 orr.w r3, r3, #9 | |
8000fee: 6013 str r3, [r2, #0] | |
./modm/src/modm/platform/clock/rcc.cpp:54 (discriminator 7) | |
while (not (retval = (RCC->CR & RCC_CR_MSIRDY)) and --waitCycles) | |
8000ff0: 6813 ldr r3, [r2, #0] | |
8000ff2: f013 0302 ands.w r3, r3, #2 | |
8000ff6: d105 bne.n 8001004 <_ZN4modm8platform3Rcc29enableMultiSpeedInternalClockENS1_12MsiFrequencyEm+0x24> | |
./modm/src/modm/platform/clock/rcc.cpp:54 (discriminator 1) | |
8000ff8: 3901 subs r1, #1 | |
8000ffa: d1f9 bne.n 8000ff0 <_ZN4modm8platform3Rcc29enableMultiSpeedInternalClockENS1_12MsiFrequencyEm+0x10> | |
./modm/src/modm/platform/clock/rcc.cpp:57 | |
; | |
return retval; | |
} | |
8000ffc: 1e08 subs r0, r1, #0 | |
8000ffe: bf18 it ne | |
8001000: 2001 movne r0, #1 | |
8001002: 4770 bx lr | |
./modm/src/modm/platform/clock/rcc.cpp:54 | |
while (not (retval = (RCC->CR & RCC_CR_MSIRDY)) and --waitCycles) | |
8001004: 4619 mov r1, r3 | |
8001006: e7f9 b.n 8000ffc <_ZN4modm8platform3Rcc29enableMultiSpeedInternalClockENS1_12MsiFrequencyEm+0x1c> | |
8001008: 40021000 .word 0x40021000 | |
0800100c <_ZN4modm8platform3Rcc9enablePllENS1_9PllSourceERKNS1_10PllFactorsEm>: | |
_ZN4modm8platform3Rcc9enablePllENS1_9PllSourceERKNS1_10PllFactorsEm(): | |
./modm/src/modm/platform/clock/rcc.cpp:111 | |
return retval; | |
} | |
bool | |
Rcc::enablePll(PllSource source, const PllFactors& pllFactors, uint32_t waitCycles) | |
{ | |
800100c: b570 push {r4, r5, r6, lr} | |
./modm/src/modm/platform/clock/rcc.cpp:113 | |
// Read reserved values and clear all other values | |
uint32_t tmp = RCC->PLLCFGR & ~( | |
800100e: 4c1b ldr r4, [pc, #108] ; (800107c <_ZN4modm8platform3Rcc9enablePllENS1_9PllSourceERKNS1_10PllFactorsEm+0x70>) | |
./modm/src/modm/platform/clock/rcc.cpp:115 | |
RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | | |
RCC_PLLCFGR_PLLREN | RCC_PLLCFGR_PLLR); | |
8001010: 4d1b ldr r5, [pc, #108] ; (8001080 <_ZN4modm8platform3Rcc9enablePllENS1_9PllSourceERKNS1_10PllFactorsEm+0x74>) | |
./modm/src/modm/platform/clock/rcc.cpp:113 | |
uint32_t tmp = RCC->PLLCFGR & ~( | |
8001012: 68e6 ldr r6, [r4, #12] | |
./modm/src/modm/platform/clock/rcc.cpp:124 | |
// PLLM factor is user defined VCO input frequency must be configured between 4MHz and 16Mhz | |
tmp |= (uint32_t(pllFactors.pllM - 1) << RCC_PLLCFGR_PLLM_Pos) & RCC_PLLCFGR_PLLM; | |
// PLLN factor is user defined: between 64 and 344 MHz | |
tmp |= (uint32_t(pllFactors.pllN) << RCC_PLLCFGR_PLLN_Pos) & RCC_PLLCFGR_PLLN; | |
8001014: 884b ldrh r3, [r1, #2] | |
./modm/src/modm/platform/clock/rcc.cpp:115 | |
RCC_PLLCFGR_PLLREN | RCC_PLLCFGR_PLLR); | |
8001016: 4035 ands r5, r6 | |
8001018: 4305 orrs r5, r0 | |
./modm/src/modm/platform/clock/rcc.cpp:121 | |
tmp |= (uint32_t(pllFactors.pllM - 1) << RCC_PLLCFGR_PLLM_Pos) & RCC_PLLCFGR_PLLM; | |
800101a: 7808 ldrb r0, [r1, #0] | |
./modm/src/modm/platform/clock/rcc.cpp:124 | |
tmp |= (uint32_t(pllFactors.pllN) << RCC_PLLCFGR_PLLN_Pos) & RCC_PLLCFGR_PLLN; | |
800101c: 021b lsls r3, r3, #8 | |
./modm/src/modm/platform/clock/rcc.cpp:121 | |
tmp |= (uint32_t(pllFactors.pllM - 1) << RCC_PLLCFGR_PLLM_Pos) & RCC_PLLCFGR_PLLM; | |
800101e: 3801 subs r0, #1 | |
./modm/src/modm/platform/clock/rcc.cpp:124 | |
tmp |= (uint32_t(pllFactors.pllN) << RCC_PLLCFGR_PLLN_Pos) & RCC_PLLCFGR_PLLN; | |
8001020: f403 43fe and.w r3, r3, #32512 ; 0x7f00 | |
./modm/src/modm/platform/clock/rcc.cpp:121 | |
tmp |= (uint32_t(pllFactors.pllM - 1) << RCC_PLLCFGR_PLLM_Pos) & RCC_PLLCFGR_PLLM; | |
8001024: 0100 lsls r0, r0, #4 | |
8001026: 432b orrs r3, r5 | |
8001028: b2c0 uxtb r0, r0 | |
./modm/src/modm/platform/clock/rcc.cpp:124 | |
tmp |= (uint32_t(pllFactors.pllN) << RCC_PLLCFGR_PLLN_Pos) & RCC_PLLCFGR_PLLN; | |
800102a: 4318 orrs r0, r3 | |
./modm/src/modm/platform/clock/rcc.cpp:127 | |
// PLLR divider for CPU frequency | |
tmp |= ((uint32_t(pllFactors.pllR / 2) - 1) << RCC_PLLCFGR_PLLR_Pos) & RCC_PLLCFGR_PLLR; | |
800102c: 790b ldrb r3, [r1, #4] | |
./modm/src/modm/platform/clock/rcc.cpp:129 | |
// PLLQ (21) divider for USB frequency; (00: PLLQ = 2, 01: PLLQ = 4, etc.) | |
if (pllFactors.pllQ != 0xff) { | |
800102e: 7949 ldrb r1, [r1, #5] | |
./modm/src/modm/platform/clock/rcc.cpp:127 | |
tmp |= ((uint32_t(pllFactors.pllR / 2) - 1) << RCC_PLLCFGR_PLLR_Pos) & RCC_PLLCFGR_PLLR; | |
8001030: 085b lsrs r3, r3, #1 | |
8001032: 3b01 subs r3, #1 | |
8001034: 065b lsls r3, r3, #25 | |
8001036: f003 63c0 and.w r3, r3, #100663296 ; 0x6000000 | |
./modm/src/modm/platform/clock/rcc.cpp:129 | |
if (pllFactors.pllQ != 0xff) { | |
800103a: 29ff cmp r1, #255 ; 0xff | |
./modm/src/modm/platform/clock/rcc.cpp:127 | |
tmp |= ((uint32_t(pllFactors.pllR / 2) - 1) << RCC_PLLCFGR_PLLR_Pos) & RCC_PLLCFGR_PLLR; | |
800103c: ea43 0300 orr.w r3, r3, r0 | |
./modm/src/modm/platform/clock/rcc.cpp:129 | |
if (pllFactors.pllQ != 0xff) { | |
8001040: d009 beq.n 8001056 <_ZN4modm8platform3Rcc9enablePllENS1_9PllSourceERKNS1_10PllFactorsEm+0x4a> | |
./modm/src/modm/platform/clock/rcc.cpp:131 | |
tmp &= ~RCC_PLLCFGR_PLLQ; | |
tmp |= (((uint32_t) (pllFactors.pllQ / 2) - 1) << RCC_PLLCFGR_PLLQ_Pos) & RCC_PLLCFGR_PLLQ; | |
8001042: 0849 lsrs r1, r1, #1 | |
8001044: 3901 subs r1, #1 | |
8001046: 0549 lsls r1, r1, #21 | |
./modm/src/modm/platform/clock/rcc.cpp:130 | |
tmp &= ~RCC_PLLCFGR_PLLQ; | |
8001048: f423 03c0 bic.w r3, r3, #6291456 ; 0x600000 | |
./modm/src/modm/platform/clock/rcc.cpp:131 | |
tmp |= (((uint32_t) (pllFactors.pllQ / 2) - 1) << RCC_PLLCFGR_PLLQ_Pos) & RCC_PLLCFGR_PLLQ; | |
800104c: f401 01c0 and.w r1, r1, #6291456 ; 0x600000 | |
8001050: 430b orrs r3, r1 | |
./modm/src/modm/platform/clock/rcc.cpp:133 | |
// enable pll USB clock output | |
tmp |= RCC_PLLCFGR_PLLQEN; | |
8001052: f443 1380 orr.w r3, r3, #1048576 ; 0x100000 | |
./modm/src/modm/platform/clock/rcc.cpp:136 | |
} | |
// enable pll CPU clock output | |
tmp |= RCC_PLLCFGR_PLLREN; | |
8001056: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 | |
./modm/src/modm/platform/clock/rcc.cpp:138 | |
RCC->PLLCFGR = tmp; | |
800105a: 60e3 str r3, [r4, #12] | |
./modm/src/modm/platform/clock/rcc.cpp:141 | |
// enable pll | |
RCC->CR |= RCC_CR_PLLON; | |
800105c: 6823 ldr r3, [r4, #0] | |
800105e: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 | |
8001062: 6023 str r3, [r4, #0] | |
./modm/src/modm/platform/clock/rcc.cpp:143 (discriminator 7) | |
while (not (tmp = (RCC->CR & RCC_CR_PLLRDY)) and --waitCycles) | |
8001064: 6823 ldr r3, [r4, #0] | |
8001066: f013 7300 ands.w r3, r3, #33554432 ; 0x2000000 | |
800106a: d105 bne.n 8001078 <_ZN4modm8platform3Rcc9enablePllENS1_9PllSourceERKNS1_10PllFactorsEm+0x6c> | |
./modm/src/modm/platform/clock/rcc.cpp:143 (discriminator 1) | |
800106c: 3a01 subs r2, #1 | |
800106e: d1f9 bne.n 8001064 <_ZN4modm8platform3Rcc9enablePllENS1_9PllSourceERKNS1_10PllFactorsEm+0x58> | |
./modm/src/modm/platform/clock/rcc.cpp:147 | |
; | |
return tmp; | |
} | |
8001070: 1e10 subs r0, r2, #0 | |
8001072: bf18 it ne | |
8001074: 2001 movne r0, #1 | |
8001076: bd70 pop {r4, r5, r6, pc} | |
./modm/src/modm/platform/clock/rcc.cpp:143 | |
while (not (tmp = (RCC->CR & RCC_CR_PLLRDY)) and --waitCycles) | |
8001078: 461a mov r2, r3 | |
800107a: e7f9 b.n 8001070 <_ZN4modm8platform3Rcc9enablePllENS1_9PllSourceERKNS1_10PllFactorsEm+0x64> | |
800107c: 40021000 .word 0x40021000 | |
8001080: f8ff800c .word 0xf8ff800c | |
08001084 <_ZN4modm8platform3Rcc17setVoltageScalingENS1_14VoltageScalingEm>: | |
_ZN4modm8platform3Rcc17setVoltageScalingENS1_14VoltageScalingEm(): | |
./modm/src/modm/platform/clock/rcc.cpp:165 | |
{ | |
// TODO: check if low power mode is active and reject changing range if active | |
// Implemented according to STHAL HAL_PWREx_ControlVoltageScaling() | |
// TODO: The reference manual describes a more complicated procedure | |
// but the CubeHal also does not implement that ... | |
const auto currentSetting = PWR->CR1 & PWR_CR1_VOS; | |
8001084: 4a09 ldr r2, [pc, #36] ; (80010ac <_ZN4modm8platform3Rcc17setVoltageScalingENS1_14VoltageScalingEm+0x28>) | |
8001086: 6813 ldr r3, [r2, #0] | |
8001088: f403 63c0 and.w r3, r3, #1536 ; 0x600 | |
./modm/src/modm/platform/clock/rcc.cpp:166 | |
if (voltage == static_cast<VoltageScaling>(currentSetting)) { | |
800108c: 4283 cmp r3, r0 | |
800108e: d101 bne.n 8001094 <_ZN4modm8platform3Rcc17setVoltageScalingENS1_14VoltageScalingEm+0x10> | |
./modm/src/modm/platform/clock/rcc.cpp:167 | |
return true; | |
8001090: 2001 movs r0, #1 | |
8001092: 4770 bx lr | |
./modm/src/modm/platform/clock/rcc.cpp:169 | |
} | |
PWR->CR1 = (PWR->CR1 & ~PWR_CR1_VOS) | uint32_t(voltage); | |
8001094: 6813 ldr r3, [r2, #0] | |
8001096: f423 63c0 bic.w r3, r3, #1536 ; 0x600 | |
800109a: 4318 orrs r0, r3 | |
800109c: 6010 str r0, [r2, #0] | |
./modm/src/modm/platform/clock/rcc.cpp:170 | |
while (PWR->SR2 & PWR_SR2_VOSF) | |
800109e: 6953 ldr r3, [r2, #20] | |
80010a0: 055b lsls r3, r3, #21 | |
80010a2: d5f5 bpl.n 8001090 <_ZN4modm8platform3Rcc17setVoltageScalingENS1_14VoltageScalingEm+0xc> | |
./modm/src/modm/platform/clock/rcc.cpp:171 | |
if (--waitCycles == 0) return false; | |
80010a4: 3901 subs r1, #1 | |
80010a6: d1fa bne.n 800109e <_ZN4modm8platform3Rcc17setVoltageScalingENS1_14VoltageScalingEm+0x1a> | |
80010a8: 4608 mov r0, r1 | |
./modm/src/modm/platform/clock/rcc.cpp:173 | |
return true; | |
} | |
80010aa: 4770 bx lr | |
80010ac: 40007000 .word 0x40007000 | |
080010b0 <_ZN4modm8platform3Rcc17enableSystemClockENS1_17SystemClockSourceEm>: | |
_ZN4modm8platform3Rcc17enableSystemClockENS1_17SystemClockSourceEm(): | |
./modm/src/modm/platform/clock/rcc.cpp:177 | |
bool | |
Rcc::enableSystemClock(SystemClockSource src, uint32_t waitCycles) | |
{ | |
RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_SW) | uint32_t(src); | |
80010b0: 4a08 ldr r2, [pc, #32] ; (80010d4 <_ZN4modm8platform3Rcc17enableSystemClockENS1_17SystemClockSourceEm+0x24>) | |
80010b2: 6893 ldr r3, [r2, #8] | |
80010b4: f023 0303 bic.w r3, r3, #3 | |
80010b8: 4303 orrs r3, r0 | |
80010ba: 6093 str r3, [r2, #8] | |
./modm/src/modm/platform/clock/rcc.cpp:180 | |
// Wait till the main PLL is used as system clock source | |
src = SystemClockSource(uint32_t(src) << RCC_CFGR_SWS_Pos); | |
80010bc: 0080 lsls r0, r0, #2 | |
./modm/src/modm/platform/clock/rcc.cpp:181 | |
while ((RCC->CFGR & RCC_CFGR_SWS) != uint32_t(src)) | |
80010be: 6893 ldr r3, [r2, #8] | |
80010c0: f003 030c and.w r3, r3, #12 | |
80010c4: 4283 cmp r3, r0 | |
80010c6: d101 bne.n 80010cc <_ZN4modm8platform3Rcc17enableSystemClockENS1_17SystemClockSourceEm+0x1c> | |
./modm/src/modm/platform/clock/rcc.cpp:184 | |
if (not --waitCycles) return false; | |
return true; | |
80010c8: 2001 movs r0, #1 | |
80010ca: 4770 bx lr | |
./modm/src/modm/platform/clock/rcc.cpp:182 | |
if (not --waitCycles) return false; | |
80010cc: 3901 subs r1, #1 | |
80010ce: d1f6 bne.n 80010be <_ZN4modm8platform3Rcc17enableSystemClockENS1_17SystemClockSourceEm+0xe> | |
80010d0: 4608 mov r0, r1 | |
./modm/src/modm/platform/clock/rcc.cpp:185 | |
} | |
80010d2: 4770 bx lr | |
80010d4: 40021000 .word 0x40021000 | |
080010d8 <SysTick_Handler>: | |
SysTick_Handler(): | |
./modm/src/modm/platform/clock/systick_timer.cpp:26 | |
static volatile bool interrupt{}; | |
extern "C" void | |
SysTick_Handler(void) | |
{ | |
milli_time += systick_step; | |
80010d8: 4a06 ldr r2, [pc, #24] ; (80010f4 <SysTick_Handler+0x1c>) | |
80010da: 6813 ldr r3, [r2, #0] | |
80010dc: 33fa adds r3, #250 ; 0xfa | |
80010de: 6013 str r3, [r2, #0] | |
./modm/src/modm/platform/clock/systick_timer.cpp:27 | |
micro_time += systick_step * 1'000ul; | |
80010e0: 4a05 ldr r2, [pc, #20] ; (80010f8 <SysTick_Handler+0x20>) | |
80010e2: 6813 ldr r3, [r2, #0] | |
80010e4: f503 3374 add.w r3, r3, #249856 ; 0x3d000 | |
80010e8: 3390 adds r3, #144 ; 0x90 | |
80010ea: 6013 str r3, [r2, #0] | |
./modm/src/modm/platform/clock/systick_timer.cpp:28 | |
interrupt = true; | |
80010ec: 2201 movs r2, #1 | |
80010ee: 4b03 ldr r3, [pc, #12] ; (80010fc <SysTick_Handler+0x24>) | |
80010f0: 701a strb r2, [r3, #0] | |
./modm/src/modm/platform/clock/systick_timer.cpp:29 | |
} | |
80010f2: 4770 bx lr | |
80010f4: 20000cb4 .word 0x20000cb4 | |
80010f8: 20000cb0 .word 0x20000cb0 | |
80010fc: 20000cac .word 0x20000cac | |
08001100 <_ZN4modm8platform12SysTickTimer6enableEmb>: | |
_ZN4modm8platform12SysTickTimer6enableEmb(): | |
./modm/src/modm/platform/clock/systick_timer.cpp:39 | |
// ---------------------------------------------------------------------------- | |
void | |
modm::platform::SysTickTimer::enable([[maybe_unused]] uint32_t reload, | |
[[maybe_unused]] bool use_processor_clock) | |
{ | |
SysTick->CTRL = 0; | |
8001100: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 | |
8001104: 2200 movs r2, #0 | |
./modm/src/modm/platform/clock/systick_timer.cpp:38 | |
{ | |
8001106: b510 push {r4, lr} | |
./modm/ext/cmsis/core/core_cm33.h:2595 | |
} | |
else | |
{ | |
SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); | |
8001108: 24e0 movs r4, #224 ; 0xe0 | |
./modm/src/modm/platform/clock/systick_timer.cpp:39 | |
SysTick->CTRL = 0; | |
800110a: 611a str r2, [r3, #16] | |
__NVIC_SetPriority(): | |
./modm/ext/cmsis/core/core_cm33.h:2595 | |
800110c: 4a05 ldr r2, [pc, #20] ; (8001124 <_ZN4modm8platform12SysTickTimer6enableEmb+0x24>) | |
800110e: f882 4023 strb.w r4, [r2, #35] ; 0x23 | |
_ZN4modm8platform12SysTickTimer6enableEmb(): | |
./modm/src/modm/platform/clock/systick_timer.cpp:44 | |
// Lower systick interrupt priority to lowest level | |
NVIC_SetPriority(SysTick_IRQn, systick_priority); | |
SysTick->LOAD = reload; | |
8001112: 6158 str r0, [r3, #20] | |
./modm/src/modm/platform/clock/systick_timer.cpp:45 | |
SysTick->VAL = reload; | |
8001114: 6198 str r0, [r3, #24] | |
./modm/src/modm/platform/clock/systick_timer.cpp:46 | |
if (use_processor_clock) { | |
8001116: b111 cbz r1, 800111e <_ZN4modm8platform12SysTickTimer6enableEmb+0x1e> | |
./modm/src/modm/platform/clock/systick_timer.cpp:47 | |
SysTick->CTRL = SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_CLKSOURCE_Msk; | |
8001118: 2207 movs r2, #7 | |
./modm/src/modm/platform/clock/systick_timer.cpp:49 | |
} else { | |
SysTick->CTRL = SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_TICKINT_Msk; | |
800111a: 611a str r2, [r3, #16] | |
./modm/src/modm/platform/clock/systick_timer.cpp:51 | |
} | |
} | |
800111c: bd10 pop {r4, pc} | |
./modm/src/modm/platform/clock/systick_timer.cpp:49 | |
SysTick->CTRL = SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_TICKINT_Msk; | |
800111e: 2203 movs r2, #3 | |
8001120: e7fb b.n 800111a <_ZN4modm8platform12SysTickTimer6enableEmb+0x1a> | |
8001122: bf00 nop | |
8001124: e000ed00 .word 0xe000ed00 | |
08001128 <_ZN4modm6chrono11milli_clock3nowEv>: | |
_ZN4modm6chrono11milli_clock3nowEv(): | |
./modm/src/modm/platform/clock/systick_timer.cpp:62 | |
} | |
// ---------------------------------------------------------------------------- | |
modm::chrono::milli_clock::time_point modm_weak | |
modm::chrono::milli_clock::now() noexcept | |
{ | |
8001128: b570 push {r4, r5, r6, lr} | |
./modm/src/modm/platform/clock/systick_timer.cpp:68 | |
uint32_t val, ms; | |
do // We cannot use an atomic lock here, the counter still overflows even | |
{ // if the interrupt hasn't happened yet. | |
interrupt = false; | |
val = SysTick->VAL; | |
800112a: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 | |
./modm/src/modm/platform/clock/systick_timer.cpp:67 | |
interrupt = false; | |
800112e: f04f 0600 mov.w r6, #0 | |
8001132: 4a08 ldr r2, [pc, #32] ; (8001154 <_ZN4modm6chrono11milli_clock3nowEv+0x2c>) | |
./modm/src/modm/platform/clock/systick_timer.cpp:69 | |
ms = milli_time; | |
8001134: 4d08 ldr r5, [pc, #32] ; (8001158 <_ZN4modm6chrono11milli_clock3nowEv+0x30>) | |
./modm/src/modm/platform/clock/systick_timer.cpp:67 (discriminator 1) | |
interrupt = false; | |
8001136: 7016 strb r6, [r2, #0] | |
./modm/src/modm/platform/clock/systick_timer.cpp:68 (discriminator 1) | |
val = SysTick->VAL; | |
8001138: 6999 ldr r1, [r3, #24] | |
./modm/src/modm/platform/clock/systick_timer.cpp:69 (discriminator 1) | |
ms = milli_time; | |
800113a: 6828 ldr r0, [r5, #0] | |
./modm/src/modm/platform/clock/systick_timer.cpp:71 (discriminator 1) | |
} | |
while(interrupt); | |
800113c: 7814 ldrb r4, [r2, #0] | |
800113e: 2c00 cmp r4, #0 | |
8001140: d1f9 bne.n 8001136 <_ZN4modm6chrono11milli_clock3nowEv+0xe> | |
./modm/src/modm/platform/clock/systick_timer.cpp:73 | |
const auto diff = SysTick->LOAD - val; | |
const auto ms_per_Ncycles = platform::SysTickTimer::ms_per_Ncycles; | |
8001142: 4a06 ldr r2, [pc, #24] ; (800115c <_ZN4modm6chrono11milli_clock3nowEv+0x34>) | |
./modm/src/modm/platform/clock/systick_timer.cpp:72 | |
const auto diff = SysTick->LOAD - val; | |
8001144: 695b ldr r3, [r3, #20] | |
./modm/src/modm/platform/clock/systick_timer.cpp:76 | |
constexpr auto Ncycles = platform::SysTickTimer::Ncycles; | |
ms += (uint64_t(diff) * uint64_t(ms_per_Ncycles)) >> Ncycles; | |
8001146: 6812 ldr r2, [r2, #0] | |
./modm/src/modm/platform/clock/systick_timer.cpp:72 | |
const auto diff = SysTick->LOAD - val; | |
8001148: 1a5b subs r3, r3, r1 | |
./modm/src/modm/platform/clock/systick_timer.cpp:76 | |
ms += (uint64_t(diff) * uint64_t(ms_per_Ncycles)) >> Ncycles; | |
800114a: fba2 2303 umull r2, r3, r2, r3 | |
./modm/src/modm/platform/clock/systick_timer.cpp:78 | |
return time_point{duration{ms}}; | |
} | |
800114e: 4418 add r0, r3 | |
8001150: bd70 pop {r4, r5, r6, pc} | |
8001152: bf00 nop | |
8001154: 20000cac .word 0x20000cac | |
8001158: 20000cb4 .word 0x20000cb4 | |
800115c: 20000c38 .word 0x20000c38 | |
08001160 <_ZN4modm6chrono11micro_clock3nowEv>: | |
_ZN4modm6chrono11micro_clock3nowEv(): | |
./modm/src/modm/platform/clock/systick_timer.cpp:82 | |
modm::chrono::micro_clock::time_point modm_weak | |
modm::chrono::micro_clock::now() noexcept | |
{ | |
8001160: b570 push {r4, r5, r6, lr} | |
./modm/src/modm/platform/clock/systick_timer.cpp:88 | |
uint32_t val, us; | |
do // We cannot use an atomic lock here, the counter still overflows even | |
{ // if the interrupt hasn't happened yet. | |
interrupt = false; | |
val = SysTick->VAL; | |
8001162: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 | |
./modm/src/modm/platform/clock/systick_timer.cpp:87 | |
interrupt = false; | |
8001166: f04f 0600 mov.w r6, #0 | |
800116a: 4a08 ldr r2, [pc, #32] ; (800118c <_ZN4modm6chrono11micro_clock3nowEv+0x2c>) | |
./modm/src/modm/platform/clock/systick_timer.cpp:89 | |
us = micro_time; | |
800116c: 4d08 ldr r5, [pc, #32] ; (8001190 <_ZN4modm6chrono11micro_clock3nowEv+0x30>) | |
./modm/src/modm/platform/clock/systick_timer.cpp:87 (discriminator 1) | |
interrupt = false; | |
800116e: 7016 strb r6, [r2, #0] | |
./modm/src/modm/platform/clock/systick_timer.cpp:88 (discriminator 1) | |
val = SysTick->VAL; | |
8001170: 6999 ldr r1, [r3, #24] | |
./modm/src/modm/platform/clock/systick_timer.cpp:89 (discriminator 1) | |
us = micro_time; | |
8001172: 6828 ldr r0, [r5, #0] | |
./modm/src/modm/platform/clock/systick_timer.cpp:91 (discriminator 1) | |
} | |
while(interrupt); | |
8001174: 7814 ldrb r4, [r2, #0] | |
8001176: 2c00 cmp r4, #0 | |
8001178: d1f9 bne.n 800116e <_ZN4modm6chrono11micro_clock3nowEv+0xe> | |
./modm/src/modm/platform/clock/systick_timer.cpp:93 | |
const auto diff = SysTick->LOAD - val; | |
const auto us_per_Ncycles = platform::SysTickTimer::us_per_Ncycles; | |
800117a: 4a06 ldr r2, [pc, #24] ; (8001194 <_ZN4modm6chrono11micro_clock3nowEv+0x34>) | |
./modm/src/modm/platform/clock/systick_timer.cpp:92 | |
const auto diff = SysTick->LOAD - val; | |
800117c: 695b ldr r3, [r3, #20] | |
./modm/src/modm/platform/clock/systick_timer.cpp:97 | |
constexpr auto Ncycles = platform::SysTickTimer::Ncycles; | |
// use a 32x32=64bit multiplication | |
us += (uint64_t(diff) * uint64_t(us_per_Ncycles)) >> Ncycles; | |
800117e: 6812 ldr r2, [r2, #0] | |
./modm/src/modm/platform/clock/systick_timer.cpp:92 | |
const auto diff = SysTick->LOAD - val; | |
8001180: 1a5b subs r3, r3, r1 | |
./modm/src/modm/platform/clock/systick_timer.cpp:97 | |
us += (uint64_t(diff) * uint64_t(us_per_Ncycles)) >> Ncycles; | |
8001182: fba2 2303 umull r2, r3, r2, r3 | |
./modm/src/modm/platform/clock/systick_timer.cpp:99 | |
return time_point{duration{us}}; | |
8001186: 4418 add r0, r3 | |
8001188: bd70 pop {r4, r5, r6, pc} | |
800118a: bf00 nop | |
800118c: 20000cac .word 0x20000cac | |
8001190: 20000cb0 .word 0x20000cb0 | |
8001194: 20000c34 .word 0x20000c34 | |
08001198 <modm_assert_report>: | |
modm_assert_report(): | |
./modm/src/modm/platform/core/assert.cpp:27 | |
extern "C" | |
{ | |
void | |
modm_assert_report(_modm_assertion_info *cinfo) | |
{ | |
8001198: b5f8 push {r3, r4, r5, r6, r7, lr} | |
800119a: 4605 mov r5, r0 | |
./modm/src/modm/platform/core/assert.cpp:29 | |
auto info = reinterpret_cast<modm::AssertionInfo *>(cinfo); | |
AbandonmentBehavior behavior(info->behavior); | |
800119c: 7a04 ldrb r4, [r0, #8] | |
./modm/src/modm/platform/core/assert.cpp:31 | |
for (const AssertionHandler *handler = &__assertion_table_start; | |
800119e: 4e11 ldr r6, [pc, #68] ; (80011e4 <modm_assert_report+0x4c>) | |
./modm/src/modm/platform/core/assert.cpp:32 | |
handler < &__assertion_table_end; handler++) | |
80011a0: 4f11 ldr r7, [pc, #68] ; (80011e8 <modm_assert_report+0x50>) | |
80011a2: 42be cmp r6, r7 | |
80011a4: d316 bcc.n 80011d4 <modm_assert_report+0x3c> | |
./modm/src/modm/platform/core/assert.cpp:39 | |
behavior |= (*handler)(*info); | |
} | |
info->behavior = behavior; | |
behavior.reset(Abandonment::Debug); | |
if ((behavior == Abandonment::DontCare) or | |
80011a6: f004 037f and.w r3, r4, #127 ; 0x7f | |
80011aa: 2b01 cmp r3, #1 | |
./modm/src/modm/platform/core/assert.cpp:37 | |
info->behavior = behavior; | |
80011ac: 722c strb r4, [r5, #8] | |
./modm/src/modm/platform/core/assert.cpp:39 | |
if ((behavior == Abandonment::DontCare) or | |
80011ae: d001 beq.n 80011b4 <modm_assert_report+0x1c> | |
./modm/src/modm/platform/core/assert.cpp:39 (discriminator 2) | |
80011b0: 0763 lsls r3, r4, #29 | |
80011b2: d516 bpl.n 80011e2 <modm_assert_report+0x4a> | |
./modm/src/modm/platform/core/assert.cpp:42 (discriminator 3) | |
(behavior & Abandonment::Fail)) | |
{ | |
modm_abandon(*info); | |
80011b4: 4628 mov r0, r5 | |
80011b6: f7ff fdc1 bl 8000d3c <modm_abandon> | |
./modm/ext/cmsis/core/cmsis_gcc.h:271 (discriminator 3) | |
__ASM volatile ("dsb 0xF":::"memory"); | |
80011ba: f3bf 8f4f dsb sy | |
./modm/ext/cmsis/core/core_cm33.h:2716 (discriminator 3) | |
__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) | |
{ | |
__DSB(); /* Ensure all outstanding memory accesses included | |
buffered write are completed before reset */ | |
SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | | |
(SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | | |
80011be: 490b ldr r1, [pc, #44] ; (80011ec <modm_assert_report+0x54>) | |
__NVIC_SystemReset(): | |
./modm/ext/cmsis/core/core_cm33.h:2716 (discriminator 3) | |
80011c0: 4b0b ldr r3, [pc, #44] ; (80011f0 <modm_assert_report+0x58>) | |
80011c2: 68ca ldr r2, [r1, #12] | |
80011c4: f402 62e0 and.w r2, r2, #1792 ; 0x700 | |
80011c8: 4313 orrs r3, r2 | |
./modm/ext/cmsis/core/core_cm33.h:2715 (discriminator 3) | |
SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | | |
80011ca: 60cb str r3, [r1, #12] | |
modm_assert_report(): | |
./modm/ext/cmsis/core/cmsis_gcc.h:271 (discriminator 3) | |
80011cc: f3bf 8f4f dsb sy | |
__NVIC_SystemReset(): | |
./modm/ext/cmsis/core/core_cm33.h:2722 | |
SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ | |
__DSB(); /* Ensure completion of memory access */ | |
for(;;) /* wait until reset */ | |
{ | |
__NOP(); | |
80011d0: bf00 nop | |
./modm/ext/cmsis/core/core_cm33.h:2720 | |
for(;;) /* wait until reset */ | |
80011d2: e7fd b.n 80011d0 <modm_assert_report+0x38> | |
modm_assert_report(): | |
./modm/src/modm/platform/core/assert.cpp:34 | |
behavior |= (*handler)(*info); | |
80011d4: 4628 mov r0, r5 | |
80011d6: f856 3b04 ldr.w r3, [r6], #4 | |
80011da: 4798 blx r3 | |
_ZN4modm14FlagsOperatorsINS_11AbandonmentEhEoRERKS2_(): | |
./modm/src/modm/architecture/interface/register.hpp:183 | |
/// @{ | |
/// bitwise **AND** with multiple bits | |
FlagsOperators& operator&=(FlagsOperators const &o) { return (value &= o.value, *this); } | |
/// bitwise **OR** with multiple bits | |
FlagsOperators& operator|=(FlagsOperators const &o) { return (value |= o.value, *this); } | |
80011dc: 4304 orrs r4, r0 | |
80011de: b2e4 uxtb r4, r4 | |
modm_assert_report(): | |
./modm/src/modm/platform/core/assert.cpp:31 | |
for (const AssertionHandler *handler = &__assertion_table_start; | |
80011e0: e7df b.n 80011a2 <modm_assert_report+0xa> | |
./modm/src/modm/platform/core/assert.cpp:45 | |
NVIC_SystemReset(); | |
} | |
} | |
80011e2: bdf8 pop {r3, r4, r5, r6, r7, pc} | |
80011e4: 08001f34 .word 0x08001f34 | |
80011e8: 08001f34 .word 0x08001f34 | |
80011ec: e000ed00 .word 0xe000ed00 | |
80011f0: 05fa0004 .word 0x05fa0004 | |
080011f4 <_Z15modm_dwt_enablev>: | |
_Z15modm_dwt_enablev(): | |
./modm/src/modm/platform/core/delay.cpp:41 | |
void | |
modm_dwt_enable(void) | |
{ | |
// Enable Tracing Debug Unit | |
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk; | |
80011f4: 4a07 ldr r2, [pc, #28] ; (8001214 <_Z15modm_dwt_enablev+0x20>) | |
80011f6: f8d2 30fc ldr.w r3, [r2, #252] ; 0xfc | |
80011fa: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 | |
80011fe: f8c2 30fc str.w r3, [r2, #252] ; 0xfc | |
./modm/src/modm/platform/core/delay.cpp:43 | |
// Reset counter to 0 | |
DWT->CYCCNT = 0; | |
8001202: 2200 movs r2, #0 | |
8001204: 4b04 ldr r3, [pc, #16] ; (8001218 <_Z15modm_dwt_enablev+0x24>) | |
8001206: 605a str r2, [r3, #4] | |
./modm/src/modm/platform/core/delay.cpp:45 | |
// Enable CPU cycle counter | |
DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk; | |
8001208: 681a ldr r2, [r3, #0] | |
800120a: f042 0201 orr.w r2, r2, #1 | |
800120e: 601a str r2, [r3, #0] | |
./modm/src/modm/platform/core/delay.cpp:46 | |
} | |
8001210: 4770 bx lr | |
8001212: bf00 nop | |
8001214: e000ed00 .word 0xe000ed00 | |
8001218: e0001000 .word 0xe0001000 | |
0800121c <_ZN4modm8delay_usEm>: | |
_ZN4modm8delay_usEm(): | |
./modm/src/modm/platform/core/delay.cpp:19 | |
const uint32_t start = DWT->CYCCNT; | |
800121c: 4a05 ldr r2, [pc, #20] ; (8001234 <_ZN4modm8delay_usEm+0x18>) | |
800121e: 6851 ldr r1, [r2, #4] | |
./modm/src/modm/platform/core/delay.cpp:27 | |
const uint32_t unshifted_cycles = platform::delay_fcpu_MHz * us; | |
8001220: 4b05 ldr r3, [pc, #20] ; (8001238 <_ZN4modm8delay_usEm+0x1c>) | |
8001222: 881b ldrh r3, [r3, #0] | |
8001224: 4358 muls r0, r3 | |
./modm/src/modm/platform/core/delay.cpp:29 | |
const uint32_t cycles = unshifted_cycles >> platform::delay_fcpu_MHz_shift; | |
8001226: 0940 lsrs r0, r0, #5 | |
./modm/src/modm/platform/core/delay.cpp:32 | |
const uint32_t now = DWT->CYCCNT; | |
8001228: 6853 ldr r3, [r2, #4] | |
./modm/src/modm/platform/core/delay.cpp:33 | |
if (now - start >= cycles) break; | |
800122a: 1a5b subs r3, r3, r1 | |
800122c: 4283 cmp r3, r0 | |
800122e: d3fb bcc.n 8001228 <_ZN4modm8delay_usEm+0xc> | |
./modm/src/modm/platform/core/delay.cpp:35 | |
} | |
8001230: 4770 bx lr | |
8001232: bf00 nop | |
8001234: e0001000 .word 0xe0001000 | |
8001238: 20000c12 .word 0x20000c12 | |
0800123c <__modm_initialize_memory>: | |
__modm_initialize_memory(): | |
./modm/src/modm/platform/core/no_heap.c:19 | |
modm_weak | |
void __modm_initialize_memory(void) | |
{ | |
/* tumbleweed */ | |
} | |
800123c: 4770 bx lr | |
... | |
08001240 <Reset_Handler>: | |
Reset_Handler(): | |
/home/chris/modm/examples/generic/fiber/modm/src/modm/platform/core/reset_handler.sx:20 | |
.align 4 | |
.type Reset_Handler, %function | |
.func Reset_Handler | |
Reset_Handler: | |
// Some bootloaders do not reset the stack pointer back to the VTOR entry | |
ldr r0,=__main_stack_top | |
8001240: 4807 ldr r0, [pc, #28] ; (8001260 <Reset_Handler+0x20>) | |
/home/chris/modm/examples/generic/fiber/modm/src/modm/platform/core/reset_handler.sx:21 | |
mov sp,r0 | |
8001242: 4685 mov sp, r0 | |
/home/chris/modm/examples/generic/fiber/modm/src/modm/platform/core/reset_handler.sx:22 | |
ldr r0,=__main_stack_limit | |
8001244: 4807 ldr r0, [pc, #28] ; (8001264 <Reset_Handler+0x24>) | |
/home/chris/modm/examples/generic/fiber/modm/src/modm/platform/core/reset_handler.sx:23 | |
msr msplim,r0 | |
8001246: f380 880a msr MSPLIM, r0 | |
/home/chris/modm/examples/generic/fiber/modm/src/modm/platform/core/reset_handler.sx:26 | |
// Enable FPU early so the compiler may use FPU registers for copying | |
// SCB->CPACR = ((3UL << 10*2) | (3UL << 11*2)); | |
ldr r0,=0xe000ed88 | |
800124a: 4807 ldr r0, [pc, #28] ; (8001268 <Reset_Handler+0x28>) | |
/home/chris/modm/examples/generic/fiber/modm/src/modm/platform/core/reset_handler.sx:27 | |
ldr r1,=0x00f00000 | |
800124c: f44f 0170 mov.w r1, #15728640 ; 0xf00000 | |
/home/chris/modm/examples/generic/fiber/modm/src/modm/platform/core/reset_handler.sx:28 | |
str r1, [r0, #0] | |
8001250: 6001 str r1, [r0, #0] | |
/home/chris/modm/examples/generic/fiber/modm/src/modm/platform/core/reset_handler.sx:29 | |
bl __modm_initialize_platform | |
8001252: f000 f891 bl 8001378 <__modm_initialize_platform> | |
/home/chris/modm/examples/generic/fiber/modm/src/modm/platform/core/reset_handler.sx:30 | |
bl modm_initialize_platform | |
8001256: f000 f818 bl 800128a <modm_initialize_platform> | |
/home/chris/modm/examples/generic/fiber/modm/src/modm/platform/core/reset_handler.sx:31 | |
b __modm_startup | |
800125a: f000 b817 b.w 800128c <__modm_startup> | |
800125e: 0000 .short 0x0000 | |
/home/chris/modm/examples/generic/fiber/modm/src/modm/platform/core/reset_handler.sx:20 | |
ldr r0,=__main_stack_top | |
8001260: 20000c00 .word 0x20000c00 | |
/home/chris/modm/examples/generic/fiber/modm/src/modm/platform/core/reset_handler.sx:22 | |
ldr r0,=__main_stack_limit | |
8001264: 2000006c .word 0x2000006c | |
/home/chris/modm/examples/generic/fiber/modm/src/modm/platform/core/reset_handler.sx:26 | |
ldr r0,=0xe000ed88 | |
8001268: e000ed88 .word 0xe000ed88 | |
0800126c <table_copy>: | |
table_copy(): | |
./modm/src/modm/platform/core/startup.c:64 | |
} | |
// Copies the section defined by a table of {loadaddr, dest start, dest end} | |
static inline void | |
table_copy(const uint32_t *const start, const uint32_t *const end) | |
{ | |
800126c: b530 push {r4, r5, lr} | |
./modm/src/modm/platform/core/startup.c:66 | |
uint32_t **table = (uint32_t **)start; | |
while(table < (uint32_t **)end) | |
800126e: 4288 cmp r0, r1 | |
8001270: d300 bcc.n 8001274 <table_copy+0x8> | |
./modm/src/modm/platform/core/startup.c:74 | |
uint32_t *dest = table[1]; // destination start | |
while (dest < table[2]) // destination end | |
*(dest++) = *(src++); | |
table += 3; | |
} | |
} | |
8001272: bd30 pop {r4, r5, pc} | |
./modm/src/modm/platform/core/startup.c:68 | |
const uint32_t *src = table[0]; // load address | |
8001274: e890 001c ldmia.w r0, {r2, r3, r4} | |
./modm/src/modm/platform/core/startup.c:70 | |
while (dest < table[2]) // destination end | |
8001278: 429c cmp r4, r3 | |
800127a: d801 bhi.n 8001280 <table_copy+0x14> | |
./modm/src/modm/platform/core/startup.c:72 | |
table += 3; | |
800127c: 300c adds r0, #12 | |
800127e: e7f6 b.n 800126e <table_copy+0x2> | |
./modm/src/modm/platform/core/startup.c:71 | |
*(dest++) = *(src++); | |
8001280: f852 5b04 ldr.w r5, [r2], #4 | |
8001284: f843 5b04 str.w r5, [r3], #4 | |
8001288: e7f6 b.n 8001278 <table_copy+0xc> | |
0800128a <modm_initialize_platform>: | |
modm_initialize_platform(): | |
./modm/src/modm/platform/core/startup.c:24 | |
modm_weak void modm_initialize_platform(void) {} | |
800128a: 4770 bx lr | |
0800128c <__modm_startup>: | |
__modm_startup(): | |
./modm/src/modm/platform/core/startup.c:93 | |
} | |
// ---------------------------------------------------------------------------- | |
// Called by Reset_Handler in reset_handler.s | |
void __modm_startup(void) | |
{ | |
800128c: b538 push {r3, r4, r5, lr} | |
./modm/src/modm/platform/core/startup.c:95 | |
// Copy and zero all internal memory | |
table_copy(__table_copy_intern_start, __table_copy_intern_end); | |
800128e: 492b ldr r1, [pc, #172] ; (800133c <__modm_startup+0xb0>) | |
8001290: 482b ldr r0, [pc, #172] ; (8001340 <__modm_startup+0xb4>) | |
8001292: f7ff ffeb bl 800126c <table_copy> | |
table_zero(): | |
./modm/src/modm/platform/core/startup.c:80 | |
uint32_t **table = (uint32_t **)start; | |
8001296: 4c2b ldr r4, [pc, #172] ; (8001344 <__modm_startup+0xb8>) | |
./modm/src/modm/platform/core/startup.c:81 | |
while(table < (uint32_t **)end) | |
8001298: 4d2b ldr r5, [pc, #172] ; (8001348 <__modm_startup+0xbc>) | |
800129a: 42ac cmp r4, r5 | |
800129c: d327 bcc.n 80012ee <__modm_startup+0x62> | |
__modm_startup(): | |
./modm/src/modm/platform/core/startup.c:99 | |
table_zero(__table_zero_intern_start, __table_zero_intern_end); | |
// Set the vector table location | |
SCB->VTOR = (uint32_t)__vector_table_rom_start; | |
800129e: 4b2b ldr r3, [pc, #172] ; (800134c <__modm_startup+0xc0>) | |
80012a0: 4a2b ldr r2, [pc, #172] ; (8001350 <__modm_startup+0xc4>) | |
table_call(): | |
./modm/src/modm/platform/core/startup.c:57 | |
for (const FunctionPointer *entry = start; entry < end; entry++) | |
80012a2: 4c2c ldr r4, [pc, #176] ; (8001354 <__modm_startup+0xc8>) | |
__modm_startup(): | |
./modm/src/modm/platform/core/startup.c:99 | |
SCB->VTOR = (uint32_t)__vector_table_rom_start; | |
80012a4: 609a str r2, [r3, #8] | |
./modm/src/modm/platform/core/startup.c:101 | |
// Enable trapping of divide by zero for UDIV/SDIV instructions. | |
SCB->CCR |= SCB_CCR_DIV_0_TRP_Msk; | |
80012a6: 695a ldr r2, [r3, #20] | |
table_call(): | |
./modm/src/modm/platform/core/startup.c:57 | |
for (const FunctionPointer *entry = start; entry < end; entry++) | |
80012a8: 4d2b ldr r5, [pc, #172] ; (8001358 <__modm_startup+0xcc>) | |
__modm_startup(): | |
./modm/src/modm/platform/core/startup.c:101 | |
SCB->CCR |= SCB_CCR_DIV_0_TRP_Msk; | |
80012aa: f042 0210 orr.w r2, r2, #16 | |
80012ae: 615a str r2, [r3, #20] | |
table_call(): | |
./modm/src/modm/platform/core/startup.c:57 | |
for (const FunctionPointer *entry = start; entry < end; entry++) | |
80012b0: 42ac cmp r4, r5 | |
80012b2: d32b bcc.n 800130c <__modm_startup+0x80> | |
__modm_startup(): | |
./modm/src/modm/platform/core/startup.c:106 | |
// Call all hardware initialize hooks | |
table_call(__hardware_init_start, __hardware_init_end); | |
// Copy and zero all external memory | |
table_copy(__table_copy_extern_start, __table_copy_extern_end); | |
80012b4: 4929 ldr r1, [pc, #164] ; (800135c <__modm_startup+0xd0>) | |
80012b6: 482a ldr r0, [pc, #168] ; (8001360 <__modm_startup+0xd4>) | |
80012b8: f7ff ffd8 bl 800126c <table_copy> | |
table_zero(): | |
./modm/src/modm/platform/core/startup.c:80 | |
uint32_t **table = (uint32_t **)start; | |
80012bc: 4c29 ldr r4, [pc, #164] ; (8001364 <__modm_startup+0xd8>) | |
./modm/src/modm/platform/core/startup.c:81 | |
while(table < (uint32_t **)end) | |
80012be: 4d2a ldr r5, [pc, #168] ; (8001368 <__modm_startup+0xdc>) | |
80012c0: 42ac cmp r4, r5 | |
80012c2: d327 bcc.n 8001314 <__modm_startup+0x88> | |
__modm_startup(): | |
./modm/src/modm/platform/core/startup.c:111 | |
table_zero(__table_zero_extern_start, __table_zero_extern_end); | |
// Initialize heap as implemented by the heap option | |
extern void __modm_initialize_memory(void); | |
__modm_initialize_memory(); | |
80012c4: f7ff ffba bl 800123c <__modm_initialize_memory> | |
table_call(): | |
./modm/src/modm/platform/core/startup.c:57 | |
for (const FunctionPointer *entry = start; entry < end; entry++) | |
80012c8: 4c28 ldr r4, [pc, #160] ; (800136c <__modm_startup+0xe0>) | |
80012ca: 4d29 ldr r5, [pc, #164] ; (8001370 <__modm_startup+0xe4>) | |
80012cc: 42ac cmp r4, r5 | |
80012ce: d330 bcc.n 8001332 <__modm_startup+0xa6> | |
__modm_startup(): | |
./modm/src/modm/platform/core/startup.c:118 | |
// Call all constructors of static objects | |
table_call(__init_array_start, __init_array_end); | |
// Call the application's entry point | |
extern int main(void); | |
main(); | |
80012d0: f7ff fa86 bl 80007e0 <main> | |
__DSB(): | |
./modm/ext/cmsis/core/cmsis_gcc.h:271 | |
80012d4: f3bf 8f4f dsb sy | |
__NVIC_SystemReset(): | |
./modm/ext/cmsis/core/core_cm33.h:2716 | |
(SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | | |
80012d8: 491c ldr r1, [pc, #112] ; (800134c <__modm_startup+0xc0>) | |
./modm/ext/cmsis/core/core_cm33.h:2715 | |
SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | | |
80012da: 4b26 ldr r3, [pc, #152] ; (8001374 <__modm_startup+0xe8>) | |
./modm/ext/cmsis/core/core_cm33.h:2716 | |
(SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | | |
80012dc: 68ca ldr r2, [r1, #12] | |
80012de: f402 62e0 and.w r2, r2, #1792 ; 0x700 | |
./modm/ext/cmsis/core/core_cm33.h:2715 | |
SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | | |
80012e2: 4313 orrs r3, r2 | |
80012e4: 60cb str r3, [r1, #12] | |
__DSB(): | |
./modm/ext/cmsis/core/cmsis_gcc.h:271 | |
80012e6: f3bf 8f4f dsb sy | |
__NVIC_SystemReset(): | |
./modm/ext/cmsis/core/core_cm33.h:2722 | |
__NOP(); | |
80012ea: bf00 nop | |
./modm/ext/cmsis/core/core_cm33.h:2720 | |
for(;;) /* wait until reset */ | |
80012ec: e7fd b.n 80012ea <__modm_startup+0x5e> | |
table_zero(): | |
./modm/src/modm/platform/core/startup.c:85 | |
*(dest++) = 0; | |
80012ee: e9d4 0300 ldrd r0, r3, [r4] | |
80012f2: 1cda adds r2, r3, #3 | |
80012f4: 1a12 subs r2, r2, r0 | |
80012f6: 1ec1 subs r1, r0, #3 | |
80012f8: f022 0203 bic.w r2, r2, #3 | |
80012fc: 4299 cmp r1, r3 | |
80012fe: bf88 it hi | |
8001300: 2200 movhi r2, #0 | |
8001302: 2100 movs r1, #0 | |
8001304: f000 fcde bl 8001cc4 <memset> | |
./modm/src/modm/platform/core/startup.c:86 | |
table += 2; | |
8001308: 3408 adds r4, #8 | |
800130a: e7c6 b.n 800129a <__modm_startup+0xe> | |
table_call(): | |
./modm/src/modm/platform/core/startup.c:58 | |
(*entry)(); | |
800130c: f854 3b04 ldr.w r3, [r4], #4 | |
8001310: 4798 blx r3 | |
./modm/src/modm/platform/core/startup.c:57 | |
for (const FunctionPointer *entry = start; entry < end; entry++) | |
8001312: e7cd b.n 80012b0 <__modm_startup+0x24> | |
table_zero(): | |
./modm/src/modm/platform/core/startup.c:85 | |
*(dest++) = 0; | |
8001314: e9d4 0300 ldrd r0, r3, [r4] | |
8001318: 1cda adds r2, r3, #3 | |
800131a: 1a12 subs r2, r2, r0 | |
800131c: 1ec1 subs r1, r0, #3 | |
800131e: f022 0203 bic.w r2, r2, #3 | |
8001322: 4299 cmp r1, r3 | |
8001324: bf88 it hi | |
8001326: 2200 movhi r2, #0 | |
8001328: 2100 movs r1, #0 | |
800132a: f000 fccb bl 8001cc4 <memset> | |
./modm/src/modm/platform/core/startup.c:86 | |
table += 2; | |
800132e: 3408 adds r4, #8 | |
8001330: e7c6 b.n 80012c0 <__modm_startup+0x34> | |
table_call(): | |
./modm/src/modm/platform/core/startup.c:58 | |
(*entry)(); | |
8001332: f854 3b04 ldr.w r3, [r4], #4 | |
8001336: 4798 blx r3 | |
./modm/src/modm/platform/core/startup.c:57 | |
for (const FunctionPointer *entry = start; entry < end; entry++) | |
8001338: e7c8 b.n 80012cc <__modm_startup+0x40> | |
800133a: bf00 nop | |
800133c: 08001f98 .word 0x08001f98 | |
8001340: 08001f5c .word 0x08001f5c | |
8001344: 08001f4c .word 0x08001f4c | |
8001348: 08001f5c .word 0x08001f5c | |
800134c: e000ed00 .word 0xe000ed00 | |
8001350: 08000000 .word 0x08000000 | |
8001354: 08001f2c .word 0x08001f2c | |
8001358: 08001f34 .word 0x08001f34 | |
800135c: 08001f98 .word 0x08001f98 | |
8001360: 08001f98 .word 0x08001f98 | |
8001364: 08001f98 .word 0x08001f98 | |
8001368: 08001f98 .word 0x08001f98 | |
800136c: 08001f20 .word 0x08001f20 | |
8001370: 08001f2c .word 0x08001f2c | |
8001374: 05fa0004 .word 0x05fa0004 | |
08001378 <__modm_initialize_platform>: | |
__modm_initialize_platform(): | |
./modm/src/modm/platform/core/startup_platform.c:32 | |
*/ | |
void | |
__modm_initialize_platform(void) | |
{ | |
// Enable SYSCFG | |
RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN; | |
8001378: 4b07 ldr r3, [pc, #28] ; (8001398 <__modm_initialize_platform+0x20>) | |
800137a: 6e1a ldr r2, [r3, #96] ; 0x60 | |
800137c: f042 0201 orr.w r2, r2, #1 | |
8001380: 661a str r2, [r3, #96] ; 0x60 | |
./modm/src/modm/platform/core/startup_platform.c:34 | |
#ifdef PWR_CR2_IOSV | |
RCC->APB1ENR1 |= RCC_APB1ENR1_PWREN; | |
8001382: 6d9a ldr r2, [r3, #88] ; 0x58 | |
8001384: f042 5280 orr.w r2, r2, #268435456 ; 0x10000000 | |
8001388: 659a str r2, [r3, #88] ; 0x58 | |
./modm/src/modm/platform/core/startup_platform.c:38 | |
#endif | |
#ifdef PWR_CR2_IOSV | |
// Enable VDDIO2 | |
PWR->CR2 |= PWR_CR2_IOSV; | |
800138a: 4a04 ldr r2, [pc, #16] ; (800139c <__modm_initialize_platform+0x24>) | |
800138c: 6853 ldr r3, [r2, #4] | |
800138e: f443 7300 orr.w r3, r3, #512 ; 0x200 | |
8001392: 6053 str r3, [r2, #4] | |
./modm/src/modm/platform/core/startup_platform.c:40 | |
#endif | |
8001394: 4770 bx lr | |
8001396: bf00 nop | |
8001398: 40021000 .word 0x40021000 | |
800139c: 40007000 .word 0x40007000 | |
080013a0 <Undefined_Handler>: | |
Undefined_Handler(): | |
./modm/src/modm/platform/core/vectors.c:278 | |
// Explicitly include this BELOW the vector table to *not deal* with potential | |
// re-#defines of interrupt vector names! Bad vendors!! BAD!!! | |
#include <modm/platform/device.hpp> | |
#include <modm/architecture/interface/assert.h> | |
void Undefined_Handler(void) | |
{ | |
80013a0: b51f push {r0, r1, r2, r3, r4, lr} | |
__get_IPSR(): | |
./modm/ext/cmsis/core/cmsis_gcc.h:1031 | |
__ASM volatile ("MRS %0, ipsr" : "=r" (result) ); | |
80013a2: f3ef 8205 mrs r2, IPSR | |
Undefined_Handler(): | |
./modm/src/modm/platform/core/vectors.c:279 | |
const int32_t irqn = ((int32_t)__get_IPSR()) - 16; | |
80013a6: 3a10 subs r2, #16 | |
./modm/src/modm/platform/core/vectors.c:282 | |
// Set the currently executing interrupt to the lowest priority to allow | |
// reporting of the assertion failure and disable it from firing again. | |
NVIC_SetPriority((IRQn_Type)irqn, (1ul << __NVIC_PRIO_BITS) - 1ul); | |
80013a8: b253 sxtb r3, r2 | |
__NVIC_SetPriority(): | |
./modm/ext/cmsis/core/core_cm33.h:2589 | |
if ((int32_t)(IRQn) >= 0) | |
80013aa: 2b00 cmp r3, #0 | |
80013ac: db1c blt.n 80013e8 <Undefined_Handler+0x48> | |
./modm/ext/cmsis/core/core_cm33.h:2591 | |
NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); | |
80013ae: 20e0 movs r0, #224 ; 0xe0 | |
80013b0: 4c11 ldr r4, [pc, #68] ; (80013f8 <Undefined_Handler+0x58>) | |
80013b2: 18e1 adds r1, r4, r3 | |
80013b4: f881 0300 strb.w r0, [r1, #768] ; 0x300 | |
__NVIC_DisableIRQ(): | |
./modm/ext/cmsis/core/core_cm33.h:2432 | |
NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); | |
80013b8: 2001 movs r0, #1 | |
80013ba: 0959 lsrs r1, r3, #5 | |
80013bc: f003 031f and.w r3, r3, #31 | |
80013c0: 4098 lsls r0, r3 | |
80013c2: f101 0320 add.w r3, r1, #32 | |
80013c6: f844 0023 str.w r0, [r4, r3, lsl #2] | |
__DSB(): | |
./modm/ext/cmsis/core/cmsis_gcc.h:271 | |
__ASM volatile ("dsb 0xF":::"memory"); | |
80013ca: f3bf 8f4f dsb sy | |
__ISB(): | |
./modm/ext/cmsis/core/cmsis_gcc.h:260 | |
__ASM volatile ("isb 0xF":::"memory"); | |
80013ce: f3bf 8f6f isb sy | |
Undefined_Handler(): | |
./modm/src/modm/platform/core/vectors.c:284 | |
NVIC_DisableIRQ((IRQn_Type)irqn); | |
modm_assert_continue_fail(0, "nvic.undef", | |
80013d2: 4b0a ldr r3, [pc, #40] ; (80013fc <Undefined_Handler+0x5c>) | |
80013d4: a801 add r0, sp, #4 | |
80013d6: e9cd 3201 strd r3, r2, [sp, #4] | |
80013da: 2301 movs r3, #1 | |
80013dc: f88d 300c strb.w r3, [sp, #12] | |
80013e0: f7ff feda bl 8001198 <modm_assert_report> | |
./modm/src/modm/platform/core/vectors.c:286 | |
"An undefined NVIC interrupt was raised!", irqn); | |
} | |
80013e4: b004 add sp, #16 | |
80013e6: bd10 pop {r4, pc} | |
__NVIC_SetPriority(): | |
./modm/ext/cmsis/core/core_cm33.h:2595 | |
SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); | |
80013e8: 4905 ldr r1, [pc, #20] ; (8001400 <Undefined_Handler+0x60>) | |
80013ea: f003 030f and.w r3, r3, #15 | |
80013ee: 4419 add r1, r3 | |
80013f0: 23e0 movs r3, #224 ; 0xe0 | |
80013f2: 760b strb r3, [r1, #24] | |
__NVIC_DisableIRQ(): | |
./modm/ext/cmsis/core/core_cm33.h:2430 | |
if ((int32_t)(IRQn) >= 0) | |
80013f4: e7ed b.n 80013d2 <Undefined_Handler+0x32> | |
80013f6: bf00 nop | |
80013f8: e000e100 .word 0xe000e100 | |
80013fc: 08001f14 .word 0x08001f14 | |
8001400: e000ecfc .word 0xe000ecfc | |
08001404 <_Z16modm_gpio_enablev>: | |
_Z16modm_gpio_enablev(): | |
./modm/src/modm/platform/gpio/enable.cpp:20 | |
void | |
modm_gpio_enable(void) | |
{ | |
// Enable GPIO clock | |
RCC->AHB2ENR |= | |
8001404: 4b06 ldr r3, [pc, #24] ; (8001420 <_Z16modm_gpio_enablev+0x1c>) | |
8001406: 6cda ldr r2, [r3, #76] ; 0x4c | |
8001408: f042 02ff orr.w r2, r2, #255 ; 0xff | |
800140c: 64da str r2, [r3, #76] ; 0x4c | |
./modm/src/modm/platform/gpio/enable.cpp:30 | |
RCC_AHB2ENR_GPIOEEN | | |
RCC_AHB2ENR_GPIOFEN | | |
RCC_AHB2ENR_GPIOGEN | | |
RCC_AHB2ENR_GPIOHEN; | |
// Reset GPIO peripheral | |
RCC->AHB2RSTR |= | |
800140e: 6ada ldr r2, [r3, #44] ; 0x2c | |
8001410: f042 02ff orr.w r2, r2, #255 ; 0xff | |
8001414: 62da str r2, [r3, #44] ; 0x2c | |
./modm/src/modm/platform/gpio/enable.cpp:39 | |
RCC_AHB2RSTR_GPIODRST | | |
RCC_AHB2RSTR_GPIOERST | | |
RCC_AHB2RSTR_GPIOFRST | | |
RCC_AHB2RSTR_GPIOGRST | | |
RCC_AHB2RSTR_GPIOHRST; | |
RCC->AHB2RSTR &= ~( | |
8001416: 6ada ldr r2, [r3, #44] ; 0x2c | |
8001418: f022 02ff bic.w r2, r2, #255 ; 0xff | |
800141c: 62da str r2, [r3, #44] ; 0x2c | |
./modm/src/modm/platform/gpio/enable.cpp:48 | |
RCC_AHB2RSTR_GPIODRST | | |
RCC_AHB2RSTR_GPIOERST | | |
RCC_AHB2RSTR_GPIOFRST | | |
RCC_AHB2RSTR_GPIOGRST | | |
RCC_AHB2RSTR_GPIOHRST); | |
} | |
800141e: 4770 bx lr | |
8001420: 40021000 .word 0x40021000 | |
08001424 <_ZN4modm8platform7Lpuart15writeEh>: | |
_ZNK4modm6atomic5QueueIhLj2048EE7isEmptyEv(): | |
./modm/src/modm/architecture/driver/atomic/queue_impl.hpp:52 | |
template<typename T, std::size_t N> | |
bool | |
modm::atomic::Queue<T, N>::isEmpty() const | |
{ | |
return (this->head == this->tail); | |
8001424: 4a15 ldr r2, [pc, #84] ; (800147c <_ZN4modm8platform7Lpuart15writeEh+0x58>) | |
8001426: 8811 ldrh r1, [r2, #0] | |
8001428: 8853 ldrh r3, [r2, #2] | |
800142a: b289 uxth r1, r1 | |
800142c: b29b uxth r3, r3 | |
_ZN4modm8platform7Lpuart15writeEh(): | |
./modm/src/modm/platform/uart/lpuart_1.cpp:55 | |
} | |
bool | |
Lpuart1::write(uint8_t data) | |
{ | |
if(txBuffer.isEmpty() && LpuartHal1::isTransmitRegisterEmpty()) { | |
800142e: 4299 cmp r1, r3 | |
8001430: d106 bne.n 8001440 <_ZN4modm8platform7Lpuart15writeEh+0x1c> | |
_ZN4modm8platform10LpuartHal123isTransmitRegisterEmptyEv(): | |
./modm/src/modm/platform/uart/lpuart_hal_1_impl.hpp:137 | |
} | |
bool | |
LpuartHal1::isTransmitRegisterEmpty() | |
{ | |
return LPUART1->ISR & USART_ISR_TXE; | |
8001432: 4b13 ldr r3, [pc, #76] ; (8001480 <_ZN4modm8platform7Lpuart15writeEh+0x5c>) | |
8001434: 69d9 ldr r1, [r3, #28] | |
_ZN4modm8platform7Lpuart15writeEh(): | |
./modm/src/modm/platform/uart/lpuart_1.cpp:55 | |
8001436: 0609 lsls r1, r1, #24 | |
8001438: d502 bpl.n 8001440 <_ZN4modm8platform7Lpuart15writeEh+0x1c> | |
_ZN4modm8platform10LpuartHal15writeEt(): | |
./modm/src/modm/platform/uart/lpuart_hal_1_impl.hpp:93 | |
LPUART1->TDR = data; | |
800143a: 6298 str r0, [r3, #40] ; 0x28 | |
_ZN4modm8platform7Lpuart15writeEh(): | |
./modm/src/modm/platform/uart/lpuart_1.cpp:65 | |
// Disable interrupts while enabling the transmit interrupt | |
atomic::Lock lock; | |
// Transmit Data Register Empty Interrupt Enable | |
LpuartHal1::enableInterrupt(Interrupt::TxEmpty); | |
} | |
return true; | |
800143c: 2001 movs r0, #1 | |
800143e: 4770 bx lr | |
_ZN4modm6atomic5QueueIhLj2048EE4pushERKh(): | |
./modm/src/modm/architecture/driver/atomic/queue_impl.hpp:100 (discriminator 4) | |
template<typename T, std::size_t N> | |
bool | |
modm::atomic::Queue<T, N>::push(const T& value) | |
{ | |
Index tmphead = this->head + 1; | |
8001440: 8813 ldrh r3, [r2, #0] | |
./modm/src/modm/architecture/driver/atomic/queue_impl.hpp:104 (discriminator 4) | |
if (tmphead >= (N+1)) { | |
tmphead = 0; | |
} | |
if (tmphead == this->tail) { | |
8001442: 8851 ldrh r1, [r2, #2] | |
./modm/src/modm/architecture/driver/atomic/queue_impl.hpp:100 (discriminator 4) | |
Index tmphead = this->head + 1; | |
8001444: 3301 adds r3, #1 | |
8001446: b29b uxth r3, r3 | |
./modm/src/modm/architecture/driver/atomic/queue_impl.hpp:102 (discriminator 4) | |
tmphead = 0; | |
8001448: f5b3 6f00 cmp.w r3, #2048 ; 0x800 | |
800144c: bf88 it hi | |
800144e: 2300 movhi r3, #0 | |
./modm/src/modm/architecture/driver/atomic/queue_impl.hpp:104 (discriminator 4) | |
if (tmphead == this->tail) { | |
8001450: b289 uxth r1, r1 | |
8001452: 4299 cmp r1, r3 | |
8001454: d00f beq.n 8001476 <_ZN4modm8platform7Lpuart15writeEh+0x52> | |
./modm/src/modm/architecture/driver/atomic/queue_impl.hpp:108 | |
return false; | |
} | |
else { | |
this->buffer[this->head] = value; | |
8001456: 8811 ldrh r1, [r2, #0] | |
./modm/src/modm/architecture/driver/atomic/queue_impl.hpp:109 | |
this->head = tmphead; | |
8001458: 8013 strh r3, [r2, #0] | |
./modm/src/modm/architecture/driver/atomic/queue_impl.hpp:108 | |
this->buffer[this->head] = value; | |
800145a: fa12 f181 uxtah r1, r2, r1 | |
800145e: 7108 strb r0, [r1, #4] | |
_ZN4modm8platform7Lpuart15writeEh(): | |
./modm/ext/cmsis/core/cmsis_gcc.h:1208 | |
__ASM volatile ("MRS %0, primask" : "=r" (result) ); | |
8001460: f3ef 8110 mrs r1, PRIMASK | |
./modm/ext/cmsis/core/cmsis_gcc.h:962 | |
__ASM volatile ("cpsid i" : : : "memory"); | |
8001464: b672 cpsid i | |
_ZN4modm8platform10LpuartHal115enableInterruptENS_5FlagsINS0_8UartBase9InterruptEmEE(): | |
./modm/src/modm/platform/uart/lpuart_hal_1_impl.hpp:170 | |
} | |
void | |
LpuartHal1::enableInterrupt(Interrupt_t interrupt) | |
{ | |
LPUART1->CR1 |= interrupt.value; | |
8001466: 4a06 ldr r2, [pc, #24] ; (8001480 <_ZN4modm8platform7Lpuart15writeEh+0x5c>) | |
8001468: 6813 ldr r3, [r2, #0] | |
800146a: f043 0380 orr.w r3, r3, #128 ; 0x80 | |
800146e: 6013 str r3, [r2, #0] | |
_ZN4modm8platform7Lpuart15writeEh(): | |
./modm/ext/cmsis/core/cmsis_gcc.h:1236 | |
__ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); | |
8001470: f381 8810 msr PRIMASK, r1 | |
8001474: e7e2 b.n 800143c <_ZN4modm8platform7Lpuart15writeEh+0x18> | |
./modm/src/modm/platform/uart/lpuart_1.cpp:59 | |
return false; | |
8001476: 2000 movs r0, #0 | |
./modm/src/modm/platform/uart/lpuart_1.cpp:66 | |
} | |
8001478: 4770 bx lr | |
800147a: bf00 nop | |
800147c: 20000cb8 .word 0x20000cb8 | |
8001480: 40008000 .word 0x40008000 | |
08001484 <_ZN4modm8platform7Lpuart115isWriteFinishedEv>: | |
_ZNK4modm6atomic5QueueIhLj2048EE7isEmptyEv(): | |
./modm/src/modm/architecture/driver/atomic/queue_impl.hpp:52 | |
return (this->head == this->tail); | |
8001484: 4b06 ldr r3, [pc, #24] ; (80014a0 <_ZN4modm8platform7Lpuart115isWriteFinishedEv+0x1c>) | |
8001486: 881a ldrh r2, [r3, #0] | |
8001488: 885b ldrh r3, [r3, #2] | |
800148a: b292 uxth r2, r2 | |
800148c: b29b uxth r3, r3 | |
_ZN4modm8platform7Lpuart115isWriteFinishedEv(): | |
./modm/src/modm/platform/uart/lpuart_1.cpp:84 | |
} | |
bool | |
Lpuart1::isWriteFinished() | |
{ | |
return txBuffer.isEmpty() && LpuartHal1::isTransmitRegisterEmpty(); | |
800148e: 429a cmp r2, r3 | |
_ZN4modm8platform10LpuartHal123isTransmitRegisterEmptyEv(): | |
./modm/src/modm/platform/uart/lpuart_hal_1_impl.hpp:137 | |
return LPUART1->ISR & USART_ISR_TXE; | |
8001490: bf03 ittte eq | |
8001492: 4b04 ldreq r3, [pc, #16] ; (80014a4 <_ZN4modm8platform7Lpuart115isWriteFinishedEv+0x20>) | |
8001494: 69d8 ldreq r0, [r3, #28] | |
_ZN4modm8platform7Lpuart115isWriteFinishedEv(): | |
./modm/src/modm/platform/uart/lpuart_1.cpp:84 | |
8001496: f3c0 10c0 ubfxeq r0, r0, #7, #1 | |
800149a: 2000 movne r0, #0 | |
./modm/src/modm/platform/uart/lpuart_1.cpp:85 | |
} | |
800149c: 4770 bx lr | |
800149e: bf00 nop | |
80014a0: 20000cb8 .word 0x20000cb8 | |
80014a4: 40008000 .word 0x40008000 | |
080014a8 <_ZN4modm8platform7Lpuart116flushWriteBufferEv>: | |
_ZN4modm8platform7Lpuart116flushWriteBufferEv(): | |
./modm/src/modm/platform/uart/lpuart_1.cpp:48 | |
{ | |
80014a8: b508 push {r3, lr} | |
./modm/src/modm/platform/uart/lpuart_1.cpp:49 (discriminator 1) | |
while(!isWriteFinished()); | |
80014aa: f7ff ffeb bl 8001484 <_ZN4modm8platform7Lpuart115isWriteFinishedEv> | |
80014ae: 2800 cmp r0, #0 | |
80014b0: d0fb beq.n 80014aa <_ZN4modm8platform7Lpuart116flushWriteBufferEv+0x2> | |
./modm/src/modm/platform/uart/lpuart_1.cpp:50 | |
} | |
80014b2: bd08 pop {r3, pc} | |
080014b4 <_ZN4modm8platform7Lpuart14readERh>: | |
_ZN4modm8platform7Lpuart14readERh(): | |
./modm/src/modm/platform/uart/lpuart_1.cpp:108 | |
return count; | |
} | |
bool | |
Lpuart1::read(uint8_t &data) | |
{ | |
80014b4: 4602 mov r2, r0 | |
_ZN4modm8platform10LpuartHal125isReceiveRegisterNotEmptyEv(): | |
./modm/src/modm/platform/uart/lpuart_hal_1_impl.hpp:131 | |
return LPUART1->ISR & USART_ISR_RXNE; | |
80014b6: 4904 ldr r1, [pc, #16] ; (80014c8 <_ZN4modm8platform7Lpuart14readERh+0x14>) | |
80014b8: 69c8 ldr r0, [r1, #28] | |
_ZN4modm8platform7Lpuart14readERh(): | |
./modm/src/modm/platform/uart/lpuart_1.cpp:109 | |
if(LpuartHal1::isReceiveRegisterNotEmpty()) { | |
80014ba: f010 0020 ands.w r0, r0, #32 | |
_ZN4modm8platform10LpuartHal14readERh(): | |
./modm/src/modm/platform/uart/lpuart_hal_1_impl.hpp:99 | |
data = LPUART1->RDR; | |
80014be: bf1e ittt ne | |
80014c0: 6a4b ldrne r3, [r1, #36] ; 0x24 | |
_ZN4modm8platform7Lpuart14readERh(): | |
./modm/src/modm/platform/uart/lpuart_1.cpp:111 | |
LpuartHal1::read(data); | |
return true; | |
80014c2: 2001 movne r0, #1 | |
_ZN4modm8platform10LpuartHal14readERh(): | |
./modm/src/modm/platform/uart/lpuart_hal_1_impl.hpp:99 | |
80014c4: 7013 strbne r3, [r2, #0] | |
_ZN4modm8platform7Lpuart14readERh(): | |
./modm/src/modm/platform/uart/lpuart_1.cpp:115 | |
} else { | |
return false; | |
} | |
} | |
80014c6: 4770 bx lr | |
80014c8: 40008000 .word 0x40008000 | |
080014cc <LPUART1_IRQHandler>: | |
_ZN4modm8platform10LpuartHal123isTransmitRegisterEmptyEv(): | |
./modm/src/modm/platform/uart/lpuart_hal_1_impl.hpp:137 | |
return LPUART1->ISR & USART_ISR_TXE; | |
80014cc: 4b10 ldr r3, [pc, #64] ; (8001510 <LPUART1_IRQHandler+0x44>) | |
80014ce: 69da ldr r2, [r3, #28] | |
LPUART1_IRQHandler(): | |
./modm/src/modm/platform/uart/lpuart_1.cpp:166 | |
} // namespace modm::platform | |
MODM_ISR(LPUART1) | |
{ | |
using namespace modm::platform; | |
if (LpuartHal1::isTransmitRegisterEmpty()) { | |
80014d0: 0612 lsls r2, r2, #24 | |
80014d2: d50a bpl.n 80014ea <LPUART1_IRQHandler+0x1e> | |
_ZNK4modm6atomic5QueueIhLj2048EE7isEmptyEv(): | |
./modm/src/modm/architecture/driver/atomic/queue_impl.hpp:52 | |
80014d4: 4a0f ldr r2, [pc, #60] ; (8001514 <LPUART1_IRQHandler+0x48>) | |
80014d6: 8810 ldrh r0, [r2, #0] | |
80014d8: 8851 ldrh r1, [r2, #2] | |
80014da: b280 uxth r0, r0 | |
80014dc: b289 uxth r1, r1 | |
LPUART1_IRQHandler(): | |
./modm/src/modm/platform/uart/lpuart_1.cpp:167 | |
if (txBuffer.isEmpty()) { | |
80014de: 4288 cmp r0, r1 | |
80014e0: d107 bne.n 80014f2 <LPUART1_IRQHandler+0x26> | |
_ZN4modm8platform10LpuartHal116disableInterruptENS_5FlagsINS0_8UartBase9InterruptEmEE(): | |
./modm/src/modm/platform/uart/lpuart_hal_1_impl.hpp:176 | |
} | |
void | |
LpuartHal1::disableInterrupt(Interrupt_t interrupt) | |
{ | |
LPUART1->CR1 &= ~interrupt.value; | |
80014e2: 681a ldr r2, [r3, #0] | |
80014e4: f022 0280 bic.w r2, r2, #128 ; 0x80 | |
80014e8: 601a str r2, [r3, #0] | |
_ZN4modm8platform10LpuartHal125acknowledgeInterruptFlagsENS_5FlagsINS0_8UartBase13InterruptFlagEmEE(): | |
./modm/src/modm/platform/uart/lpuart_hal_1_impl.hpp:190 | |
void | |
LpuartHal1::acknowledgeInterruptFlags(InterruptFlag_t flags) | |
{ | |
// Flags are cleared by writing a one to the flag position. | |
// Writing a zero is (hopefully) ignored. | |
LPUART1->ICR = flags.value; | |
80014ea: 2208 movs r2, #8 | |
80014ec: 4b08 ldr r3, [pc, #32] ; (8001510 <LPUART1_IRQHandler+0x44>) | |
80014ee: 621a str r2, [r3, #32] | |
LPUART1_IRQHandler(): | |
./modm/src/modm/platform/uart/lpuart_1.cpp:177 | |
LpuartHal1::write(txBuffer.get()); | |
txBuffer.pop(); | |
} | |
} | |
LpuartHal1::acknowledgeInterruptFlags(LpuartHal1::InterruptFlag::OverrunError); | |
} | |
80014f0: 4770 bx lr | |
_ZNK4modm6atomic5QueueIhLj2048EE3getEv(): | |
./modm/src/modm/architecture/driver/atomic/queue_impl.hpp:93 | |
return this->buffer[this->tail]; | |
80014f2: 8851 ldrh r1, [r2, #2] | |
LPUART1_IRQHandler(): | |
./modm/src/modm/platform/uart/lpuart_1.cpp:172 | |
LpuartHal1::write(txBuffer.get()); | |
80014f4: fa12 f181 uxtah r1, r2, r1 | |
_ZN4modm8platform10LpuartHal15writeEt(): | |
./modm/src/modm/platform/uart/lpuart_hal_1_impl.hpp:93 | |
LPUART1->TDR = data; | |
80014f8: 7909 ldrb r1, [r1, #4] | |
80014fa: 6299 str r1, [r3, #40] ; 0x28 | |
_ZN4modm6atomic5QueueIhLj2048EE3popEv(): | |
./modm/src/modm/architecture/driver/atomic/queue_impl.hpp:118 | |
template<typename T, std::size_t N> | |
void | |
modm::atomic::Queue<T, N>::pop() | |
{ | |
Index tmptail = this->tail + 1; | |
80014fc: 8853 ldrh r3, [r2, #2] | |
80014fe: 3301 adds r3, #1 | |
8001500: b29b uxth r3, r3 | |
./modm/src/modm/architecture/driver/atomic/queue_impl.hpp:120 | |
if (tmptail >= (N+1)) { | |
tmptail = 0; | |
8001502: f5b3 6f00 cmp.w r3, #2048 ; 0x800 | |
8001506: bf88 it hi | |
8001508: 2300 movhi r3, #0 | |
./modm/src/modm/architecture/driver/atomic/queue_impl.hpp:122 | |
} | |
this->tail = tmptail; | |
800150a: 8053 strh r3, [r2, #2] | |
./modm/src/modm/architecture/driver/atomic/queue_impl.hpp:123 | |
} | |
800150c: e7ed b.n 80014ea <LPUART1_IRQHandler+0x1e> | |
800150e: bf00 nop | |
8001510: 40008000 .word 0x40008000 | |
8001514: 20000cb8 .word 0x20000cb8 | |
08001518 <_GLOBAL__sub_I__ZN4modm8platform7Lpuart113writeBlockingEh>: | |
_ZN4modm6atomic5QueueIhLj2048EEC4Ev(): | |
./modm/src/modm/architecture/driver/atomic/queue_impl.hpp:21 | |
head(0), tail(0) | |
8001518: 2200 movs r2, #0 | |
800151a: 4b02 ldr r3, [pc, #8] ; (8001524 <_GLOBAL__sub_I__ZN4modm8platform7Lpuart113writeBlockingEh+0xc>) | |
800151c: 801a strh r2, [r3, #0] | |
800151e: 805a strh r2, [r3, #2] | |
_GLOBAL__sub_I__ZN4modm8platform7Lpuart113writeBlockingEh(): | |
./modm/src/modm/platform/uart/lpuart_1.cpp:177 | |
} | |
8001520: 4770 bx lr | |
8001522: bf00 nop | |
8001524: 20000cb8 .word 0x20000cb8 | |
08001528 <_ZN12_GLOBAL__N_118modm_context_entryEv>: | |
_ZN12_GLOBAL__N_118modm_context_entryEv(): | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:73 | |
constexpr uintptr_t StackWatermark = 0xf00d'cafe; | |
void modm_naked | |
modm_context_entry() | |
{ | |
asm volatile | |
8001528: 9800 ldr r0, [sp, #0] | |
800152a: f8dd f004 ldr.w pc, [sp, #4] | |
0800152e <modm_context_init>: | |
modm_context_init(): | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:88 | |
modm_context_init(modm_context_t *ctx, | |
uintptr_t *bottom, uintptr_t *top, | |
uintptr_t fn, uintptr_t fn_arg) | |
{ | |
ctx->bottom = bottom; | |
ctx->top = top; | |
800152e: e9c0 1201 strd r1, r2, [r0, #4] | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:91 | |
ctx->sp = top; | |
*--ctx->sp = fn; | |
8001532: f842 3c04 str.w r3, [r2, #-4] | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:92 | |
*--ctx->sp = fn_arg; | |
8001536: f1a2 0308 sub.w r3, r2, #8 | |
800153a: 6003 str r3, [r0, #0] | |
800153c: 9b00 ldr r3, [sp, #0] | |
800153e: f842 3c08 str.w r3, [r2, #-8] | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:93 | |
} | |
8001542: 4770 bx lr | |
08001544 <modm_context_reset>: | |
modm_context_reset(): | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:98 | |
void | |
modm_context_reset(modm_context_t *ctx) | |
{ | |
*ctx->bottom = StackWatermark; | |
8001544: 6843 ldr r3, [r0, #4] | |
8001546: 4a04 ldr r2, [pc, #16] ; (8001558 <modm_context_reset+0x14>) | |
8001548: 601a str r2, [r3, #0] | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:100 | |
ctx->sp = ctx->top - StackWordsStorage; | |
800154a: 6883 ldr r3, [r0, #8] | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:101 | |
*--ctx->sp = (uintptr_t) modm_context_entry; | |
800154c: 4a03 ldr r2, [pc, #12] ; (800155c <modm_context_reset+0x18>) | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:102 | |
ctx->sp -= StackWordsRegisters - StackWordsReset; | |
800154e: 3b6c subs r3, #108 ; 0x6c | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:101 | |
*--ctx->sp = (uintptr_t) modm_context_entry; | |
8001550: 661a str r2, [r3, #96] ; 0x60 | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:102 | |
ctx->sp -= StackWordsRegisters - StackWordsReset; | |
8001552: 6003 str r3, [r0, #0] | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:103 | |
} | |
8001554: 4770 bx lr | |
8001556: bf00 nop | |
8001558: f00dcafe .word 0xf00dcafe | |
800155c: 08001529 .word 0x08001529 | |
08001560 <modm_context_watermark>: | |
modm_context_watermark(): | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:109 | |
void | |
modm_context_watermark(modm_context_t *ctx) | |
{ | |
// clear the register file on the stack | |
for (auto *word = ctx->top - StackWordsAll; | |
8001560: 6883 ldr r3, [r0, #8] | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:111 | |
word < ctx->top - StackWordsStorage - StackWordsReset; word++) | |
*word = 0; | |
8001562: 2260 movs r2, #96 ; 0x60 | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:109 | |
for (auto *word = ctx->top - StackWordsAll; | |
8001564: 3b6c subs r3, #108 ; 0x6c | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:111 | |
*word = 0; | |
8001566: 2100 movs r1, #0 | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:107 | |
{ | |
8001568: b510 push {r4, lr} | |
800156a: 4604 mov r4, r0 | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:111 | |
*word = 0; | |
800156c: 4618 mov r0, r3 | |
800156e: f000 fba9 bl 8001cc4 <memset> | |
8001572: 4603 mov r3, r0 | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:114 | |
// then color the whole stack *below* the register file | |
for (auto *word = ctx->bottom; word < ctx->top - StackWordsAll; word++) | |
8001574: 6862 ldr r2, [r4, #4] | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:115 | |
*word = StackWatermark; | |
8001576: 4903 ldr r1, [pc, #12] ; (8001584 <modm_context_watermark+0x24>) | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:114 (discriminator 1) | |
for (auto *word = ctx->bottom; word < ctx->top - StackWordsAll; word++) | |
8001578: 429a cmp r2, r3 | |
800157a: d300 bcc.n 800157e <modm_context_watermark+0x1e> | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:116 | |
} | |
800157c: bd10 pop {r4, pc} | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:115 (discriminator 3) | |
*word = StackWatermark; | |
800157e: f842 1b04 str.w r1, [r2], #4 | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:114 (discriminator 3) | |
for (auto *word = ctx->bottom; word < ctx->top - StackWordsAll; word++) | |
8001582: e7f9 b.n 8001578 <modm_context_watermark+0x18> | |
8001584: f00dcafe .word 0xf00dcafe | |
08001588 <modm_context_stack_usage>: | |
modm_context_stack_usage(): | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:120 | |
size_t | |
modm_context_stack_usage(const modm_context_t *ctx) | |
{ | |
8001588: b510 push {r4, lr} | |
800158a: e9d0 2301 ldrd r2, r3, [r0, #4] | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:122 | |
for (auto *word = ctx->bottom; word < ctx->top; word++) | |
if (StackWatermark != *word) | |
800158e: 4806 ldr r0, [pc, #24] ; (80015a8 <modm_context_stack_usage+0x20>) | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:121 (discriminator 1) | |
for (auto *word = ctx->bottom; word < ctx->top; word++) | |
8001590: 4293 cmp r3, r2 | |
8001592: 4611 mov r1, r2 | |
8001594: d801 bhi.n 800159a <modm_context_stack_usage+0x12> | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:124 | |
return (ctx->top - word) * StackSizeWord; | |
return 0; | |
8001596: 2000 movs r0, #0 | |
8001598: e004 b.n 80015a4 <modm_context_stack_usage+0x1c> | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:122 | |
if (StackWatermark != *word) | |
800159a: 680c ldr r4, [r1, #0] | |
800159c: 3204 adds r2, #4 | |
800159e: 4284 cmp r4, r0 | |
80015a0: d0f6 beq.n 8001590 <modm_context_stack_usage+0x8> | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:123 | |
return (ctx->top - word) * StackSizeWord; | |
80015a2: 1a58 subs r0, r3, r1 | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:125 | |
} | |
80015a4: bd10 pop {r4, pc} | |
80015a6: bf00 nop | |
80015a8: f00dcafe .word 0xf00dcafe | |
080015ac <modm_context_start>: | |
modm_context_start(): | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:144 | |
"pop {r4-r11, pc} \n\t" | |
void modm_naked | |
modm_context_start(modm_context_t*) | |
{ | |
asm volatile | |
80015ac: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} | |
80015b0: ed2d 8b10 vpush {d8-d15} | |
80015b4: f3ef 8114 mrs r1, CONTROL | |
80015b8: f041 0102 orr.w r1, r1, #2 | |
80015bc: f381 8814 msr CONTROL, r1 | |
80015c0: e890 0006 ldmia.w r0, {r1, r2} | |
80015c4: 468d mov sp, r1 | |
80015c6: f382 880b msr PSPLIM, r2 | |
80015ca: ecbd 8b10 vpop {d8-d15} | |
80015ce: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} | |
080015d2 <modm_context_jump>: | |
modm_context_jump(): | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:162 | |
} | |
void modm_naked | |
modm_context_jump(modm_context_t*, modm_context_t*) | |
{ | |
asm volatile | |
80015d2: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} | |
80015d6: ed2d 8b10 vpush {d8-d15} | |
80015da: f8c0 d000 str.w sp, [r0] | |
80015de: c906 ldmia r1, {r1, r2} | |
80015e0: 468d mov sp, r1 | |
80015e2: f382 880b msr PSPLIM, r2 | |
80015e6: ecbd 8b10 vpop {d8-d15} | |
80015ea: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} | |
080015ee <modm_context_end>: | |
modm_context_end(): | |
./modm/src/modm/processing/fiber/context_arm_m.cpp:177 | |
} | |
void modm_naked | |
modm_context_end() | |
{ | |
asm volatile | |
80015ee: f3ef 8014 mrs r0, CONTROL | |
80015f2: f020 0002 bic.w r0, r0, #2 | |
80015f6: f380 8814 msr CONTROL, r0 | |
80015fa: ecbd 8b10 vpop {d8-d15} | |
80015fe: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} | |
08001602 <putchar_via_gadget>: | |
putchar_via_gadget(): | |
./modm/ext/printf/printf.c:324 | |
// Note: This function currently assumes it is not passed a '\0' c, | |
// or alternatively, that '\0' can be passed to the function in the output | |
// gadget. The former assumption holds within the printf library. It also | |
// assumes that the output gadget has been properly initialized. | |
static inline void putchar_via_gadget(output_gadget_t* gadget, char c) | |
{ | |
8001602: 4603 mov r3, r0 | |
./modm/ext/printf/printf.c:325 | |
printf_size_t write_pos = gadget->pos++; | |
8001604: 68da ldr r2, [r3, #12] | |
./modm/ext/printf/printf.c:324 | |
{ | |
8001606: 4608 mov r0, r1 | |
./modm/ext/printf/printf.c:325 | |
printf_size_t write_pos = gadget->pos++; | |
8001608: 1c51 adds r1, r2, #1 | |
./modm/ext/printf/printf.c:324 | |
{ | |
800160a: b410 push {r4} | |
./modm/ext/printf/printf.c:325 | |
printf_size_t write_pos = gadget->pos++; | |
800160c: 60d9 str r1, [r3, #12] | |
./modm/ext/printf/printf.c:328 | |
// We're _always_ increasing pos, so as to count how may characters | |
// _would_ have been written if not for the max_chars limitation | |
if (write_pos >= gadget->max_chars) { | |
800160e: 6919 ldr r1, [r3, #16] | |
8001610: 428a cmp r2, r1 | |
8001612: d208 bcs.n 8001626 <putchar_via_gadget+0x24> | |
./modm/ext/printf/printf.c:331 | |
return; | |
} | |
if (gadget->function != NULL) { | |
8001614: 681c ldr r4, [r3, #0] | |
8001616: b124 cbz r4, 8001622 <putchar_via_gadget+0x20> | |
./modm/ext/printf/printf.c:333 | |
// No check for c == '\0' . | |
gadget->function(c, gadget->extra_function_arg); | |
8001618: 6859 ldr r1, [r3, #4] | |
800161a: 4623 mov r3, r4 | |
./modm/ext/printf/printf.c:340 | |
else { | |
// it must be the case that gadget->buffer != NULL , due to the constraint | |
// on output_gadget_t ; and note we're relying on write_pos being non-negative. | |
gadget->buffer[write_pos] = c; | |
} | |
} | |
800161c: f85d 4b04 ldr.w r4, [sp], #4 | |
./modm/ext/printf/printf.c:333 | |
gadget->function(c, gadget->extra_function_arg); | |
8001620: 4718 bx r3 | |
./modm/ext/printf/printf.c:338 | |
gadget->buffer[write_pos] = c; | |
8001622: 689b ldr r3, [r3, #8] | |
8001624: 5498 strb r0, [r3, r2] | |
./modm/ext/printf/printf.c:340 | |
} | |
8001626: f85d 4b04 ldr.w r4, [sp], #4 | |
800162a: 4770 bx lr | |
0800162c <out_rev_>: | |
out_rev_(): | |
./modm/ext/printf/printf.c:433 | |
} | |
// output the specified string in reverse, taking care of any zero-padding | |
static void out_rev_(output_gadget_t* output, const char* buf, printf_size_t len, printf_size_t width, printf_flags_t flags) | |
{ | |
800162c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} | |
8001630: f8dd a020 ldr.w sl, [sp, #32] | |
8001634: 4605 mov r5, r0 | |
./modm/ext/printf/printf.c:437 | |
const printf_size_t start_pos = output->pos; | |
// pad spaces up to given width | |
if (!(flags & FLAGS_LEFT) && !(flags & FLAGS_ZEROPAD)) { | |
8001636: f01a 0f03 tst.w sl, #3 | |
./modm/ext/printf/printf.c:433 | |
{ | |
800163a: 460f mov r7, r1 | |
800163c: 4614 mov r4, r2 | |
800163e: 461e mov r6, r3 | |
./modm/ext/printf/printf.c:434 | |
const printf_size_t start_pos = output->pos; | |
8001640: f8d0 800c ldr.w r8, [r0, #12] | |
./modm/ext/printf/printf.c:437 | |
if (!(flags & FLAGS_LEFT) && !(flags & FLAGS_ZEROPAD)) { | |
8001644: d010 beq.n 8001668 <out_rev_+0x3c> | |
8001646: 443c add r4, r7 | |
./modm/ext/printf/printf.c:444 | |
putchar_via_gadget(output, ' '); | |
} | |
} | |
// reverse string | |
while (len) { | |
8001648: 42bc cmp r4, r7 | |
800164a: d10f bne.n 800166c <out_rev_+0x40> | |
./modm/ext/printf/printf.c:449 | |
putchar_via_gadget(output, buf[--len]); | |
} | |
// append pad spaces up to given width | |
if (flags & FLAGS_LEFT) { | |
800164c: f01a 0f02 tst.w sl, #2 | |
8001650: d116 bne.n 8001680 <out_rev_+0x54> | |
./modm/ext/printf/printf.c:454 | |
while (output->pos - start_pos < width) { | |
putchar_via_gadget(output, ' '); | |
} | |
} | |
} | |
8001652: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} | |
./modm/ext/printf/printf.c:439 (discriminator 3) | |
putchar_via_gadget(output, ' '); | |
8001656: 2120 movs r1, #32 | |
8001658: 4628 mov r0, r5 | |
800165a: f7ff ffd2 bl 8001602 <putchar_via_gadget> | |
./modm/ext/printf/printf.c:438 (discriminator 3) | |
for (printf_size_t i = len; i < width; i++) { | |
800165e: f109 0901 add.w r9, r9, #1 | |
./modm/ext/printf/printf.c:438 (discriminator 1) | |
8001662: 45b1 cmp r9, r6 | |
8001664: d3f7 bcc.n 8001656 <out_rev_+0x2a> | |
8001666: e7ee b.n 8001646 <out_rev_+0x1a> | |
./modm/ext/printf/printf.c:438 | |
8001668: 4691 mov r9, r2 | |
800166a: e7fa b.n 8001662 <out_rev_+0x36> | |
./modm/ext/printf/printf.c:445 | |
putchar_via_gadget(output, buf[--len]); | |
800166c: 4628 mov r0, r5 | |
800166e: f814 1d01 ldrb.w r1, [r4, #-1]! | |
8001672: f7ff ffc6 bl 8001602 <putchar_via_gadget> | |
8001676: e7e7 b.n 8001648 <out_rev_+0x1c> | |
./modm/ext/printf/printf.c:451 | |
putchar_via_gadget(output, ' '); | |
8001678: 2120 movs r1, #32 | |
800167a: 4628 mov r0, r5 | |
800167c: f7ff ffc1 bl 8001602 <putchar_via_gadget> | |
./modm/ext/printf/printf.c:450 | |
while (output->pos - start_pos < width) { | |
8001680: 68eb ldr r3, [r5, #12] | |
8001682: eba3 0308 sub.w r3, r3, r8 | |
8001686: 42b3 cmp r3, r6 | |
8001688: d3f6 bcc.n 8001678 <out_rev_+0x4c> | |
800168a: e7e2 b.n 8001652 <out_rev_+0x26> | |
0800168c <print_integer>: | |
print_integer(): | |
./modm/ext/printf/printf.c:527 | |
out_rev_(output, buf, len, width, flags); | |
} | |
// An internal itoa-like function | |
void print_integer(output_gadget_t* output, printf_unsigned_value_t value, bool negative, numeric_base_t base, printf_size_t precision, printf_size_t width, printf_flags_t flags) | |
{ | |
800168c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} | |
8001690: 4698 mov r8, r3 | |
8001692: b08d sub sp, #52 ; 0x34 | |
./modm/ext/printf/printf.c:531 | |
char buf[PRINTF_INTEGER_BUFFER_SIZE]; | |
printf_size_t len = 0U; | |
if (!value) { | |
8001694: ea52 0308 orrs.w r3, r2, r8 | |
./modm/ext/printf/printf.c:527 | |
{ | |
8001698: 4691 mov r9, r2 | |
800169a: e9dd 7419 ldrd r7, r4, [sp, #100] ; 0x64 | |
800169e: f89d a058 ldrb.w sl, [sp, #88] ; 0x58 | |
80016a2: f89d 605c ldrb.w r6, [sp, #92] ; 0x5c | |
80016a6: 9002 str r0, [sp, #8] | |
./modm/ext/printf/printf.c:531 | |
if (!value) { | |
80016a8: d121 bne.n 80016ee <print_integer+0x62> | |
./modm/ext/printf/printf.c:532 | |
if ( !(flags & FLAGS_PRECISION) ) { | |
80016aa: 0525 lsls r5, r4, #20 | |
80016ac: d419 bmi.n 80016e2 <print_integer+0x56> | |
./modm/ext/printf/printf.c:533 | |
buf[len++] = '0'; | |
80016ae: 2330 movs r3, #48 ; 0x30 | |
80016b0: 2501 movs r5, #1 | |
80016b2: f88d 3010 strb.w r3, [sp, #16] | |
./modm/ext/printf/printf.c:534 | |
flags &= ~FLAGS_HASH; | |
80016b6: f024 0410 bic.w r4, r4, #16 | |
print_integer_finalization(): | |
./modm/ext/printf/printf.c:465 | |
if (!(flags & FLAGS_LEFT)) { | |
80016ba: f014 0f02 tst.w r4, #2 | |
80016be: a904 add r1, sp, #16 | |
80016c0: d15a bne.n 8001778 <print_integer+0xec> | |
./modm/ext/printf/printf.c:466 | |
if (width && (flags & FLAGS_ZEROPAD) && (negative || (flags & (FLAGS_PLUS | FLAGS_SPACE)))) { | |
80016c2: f004 0301 and.w r3, r4, #1 | |
80016c6: b147 cbz r7, 80016da <print_integer+0x4e> | |
80016c8: 2b00 cmp r3, #0 | |
80016ca: d055 beq.n 8001778 <print_integer+0xec> | |
80016cc: f1ba 0f00 cmp.w sl, #0 | |
80016d0: d102 bne.n 80016d8 <print_integer+0x4c> | |
80016d2: f014 0f0c tst.w r4, #12 | |
80016d6: d000 beq.n 80016da <print_integer+0x4e> | |
./modm/ext/printf/printf.c:467 | |
width--; | |
80016d8: 3f01 subs r7, #1 | |
./modm/ext/printf/printf.c:469 | |
while ((flags & FLAGS_ZEROPAD) && (len < width) && (len < PRINTF_INTEGER_BUFFER_SIZE)) { | |
80016da: 462a mov r2, r5 | |
80016dc: b393 cbz r3, 8001744 <print_integer+0xb8> | |
./modm/ext/printf/printf.c:470 | |
buf[len++] = '0'; | |
80016de: 2330 movs r3, #48 ; 0x30 | |
80016e0: e02c b.n 800173c <print_integer+0xb0> | |
print_integer(): | |
./modm/ext/printf/printf.c:539 | |
// We drop this flag this since either the alternative and regular modes of the specifier | |
// don't differ on 0 values, or (in the case of octal) we've already provided the special | |
// handling for this mode. | |
} | |
else if (base == BASE_HEX) { | |
80016e2: 2e10 cmp r6, #16 | |
80016e4: d101 bne.n 80016ea <print_integer+0x5e> | |
./modm/ext/printf/printf.c:540 | |
flags &= ~FLAGS_HASH; | |
80016e6: f024 0410 bic.w r4, r4, #16 | |
./modm/ext/printf/printf.c:529 | |
printf_size_t len = 0U; | |
80016ea: 2500 movs r5, #0 | |
80016ec: e7e5 b.n 80016ba <print_integer+0x2e> | |
80016ee: f014 0f20 tst.w r4, #32 | |
80016f2: bf14 ite ne | |
80016f4: 2341 movne r3, #65 ; 0x41 | |
80016f6: 2361 moveq r3, #97 ; 0x61 | |
80016f8: 2500 movs r5, #0 | |
./modm/ext/printf/printf.c:548 | |
} | |
} | |
else { | |
do { | |
const char digit = (char)(value % base); | |
buf[len++] = (char)(digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10); | |
80016fa: 3b0a subs r3, #10 | |
80016fc: f10d 0b10 add.w fp, sp, #16 | |
8001700: 9303 str r3, [sp, #12] | |
./modm/ext/printf/printf.c:547 | |
const char digit = (char)(value % base); | |
8001702: 4641 mov r1, r8 | |
8001704: 4632 mov r2, r6 | |
8001706: 2300 movs r3, #0 | |
8001708: 4648 mov r0, r9 | |
800170a: f000 f94b bl 80019a4 <__aeabi_uldivmod> | |
./modm/ext/printf/printf.c:548 | |
buf[len++] = (char)(digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10); | |
800170e: b253 sxtb r3, r2 | |
8001710: b2d2 uxtb r2, r2 | |
8001712: 2a09 cmp r2, #9 | |
8001714: bf8a itet hi | |
8001716: 9a03 ldrhi r2, [sp, #12] | |
8001718: 3330 addls r3, #48 ; 0x30 | |
800171a: 189b addhi r3, r3, r2 | |
./modm/ext/printf/printf.c:550 | |
value /= base; | |
} while (value && (len < PRINTF_INTEGER_BUFFER_SIZE)); | |
800171c: 45b1 cmp r9, r6 | |
./modm/ext/printf/printf.c:548 | |
buf[len++] = (char)(digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10); | |
800171e: b2db uxtb r3, r3 | |
./modm/ext/printf/printf.c:550 | |
} while (value && (len < PRINTF_INTEGER_BUFFER_SIZE)); | |
8001720: f178 0800 sbcs.w r8, r8, #0 | |
./modm/ext/printf/printf.c:548 | |
buf[len++] = (char)(digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10); | |
8001724: f105 0501 add.w r5, r5, #1 | |
8001728: f80b 3b01 strb.w r3, [fp], #1 | |
./modm/ext/printf/printf.c:550 | |
} while (value && (len < PRINTF_INTEGER_BUFFER_SIZE)); | |
800172c: d3c5 bcc.n 80016ba <print_integer+0x2e> | |
./modm/ext/printf/printf.c:550 (discriminator 1) | |
800172e: 2d20 cmp r5, #32 | |
8001730: d0c3 beq.n 80016ba <print_integer+0x2e> | |
./modm/ext/printf/printf.c:549 | |
value /= base; | |
8001732: 4681 mov r9, r0 | |
8001734: 4688 mov r8, r1 | |
8001736: e7e4 b.n 8001702 <print_integer+0x76> | |
print_integer_finalization(): | |
./modm/ext/printf/printf.c:470 | |
buf[len++] = '0'; | |
8001738: 548b strb r3, [r1, r2] | |
800173a: 3201 adds r2, #1 | |
./modm/ext/printf/printf.c:469 | |
while ((flags & FLAGS_ZEROPAD) && (len < width) && (len < PRINTF_INTEGER_BUFFER_SIZE)) { | |
800173c: 4297 cmp r7, r2 | |
800173e: d901 bls.n 8001744 <print_integer+0xb8> | |
8001740: 2a20 cmp r2, #32 | |
8001742: d1f9 bne.n 8001738 <print_integer+0xac> | |
./modm/ext/printf/printf.c:475 | |
buf[len++] = '0'; | |
8001744: 2330 movs r3, #48 ; 0x30 | |
8001746: e001 b.n 800174c <print_integer+0xc0> | |
8001748: 548b strb r3, [r1, r2] | |
800174a: 3201 adds r2, #1 | |
./modm/ext/printf/printf.c:474 | |
while ((len < precision) && (len < PRINTF_INTEGER_BUFFER_SIZE)) { | |
800174c: 9818 ldr r0, [sp, #96] ; 0x60 | |
800174e: 4290 cmp r0, r2 | |
8001750: d935 bls.n 80017be <print_integer+0x132> | |
8001752: 2a20 cmp r2, #32 | |
8001754: d1f8 bne.n 8001748 <print_integer+0xbc> | |
./modm/ext/printf/printf.c:478 | |
if (base == BASE_OCTAL && (len > unpadded_len)) { | |
8001756: 2e08 cmp r6, #8 | |
8001758: d110 bne.n 800177c <print_integer+0xf0> | |
800175a: 2d20 cmp r5, #32 | |
800175c: d03d beq.n 80017da <print_integer+0x14e> | |
./modm/ext/printf/printf.c:485 | |
if (flags & (FLAGS_HASH | FLAGS_POINTER)) { | |
800175e: 04a0 lsls r0, r4, #18 | |
./modm/ext/printf/printf.c:480 | |
flags &= ~FLAGS_HASH; | |
8001760: f024 0310 bic.w r3, r4, #16 | |
./modm/ext/printf/printf.c:485 | |
if (flags & (FLAGS_HASH | FLAGS_POINTER)) { | |
8001764: d434 bmi.n 80017d0 <print_integer+0x144> | |
./modm/ext/printf/printf.c:480 | |
flags &= ~FLAGS_HASH; | |
8001766: 461c mov r4, r3 | |
./modm/ext/printf/printf.c:522 | |
out_rev_(output, buf, len, width, flags); | |
8001768: 463b mov r3, r7 | |
800176a: 9802 ldr r0, [sp, #8] | |
800176c: 9400 str r4, [sp, #0] | |
800176e: f7ff ff5d bl 800162c <out_rev_> | |
print_integer(): | |
./modm/ext/printf/printf.c:554 | |
} | |
print_integer_finalization(output, buf, len, negative, base, precision, width, flags); | |
} | |
8001772: b00d add sp, #52 ; 0x34 | |
8001774: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} | |
print_integer_finalization(): | |
./modm/ext/printf/printf.c:554 | |
8001778: 462a mov r2, r5 | |
800177a: e7e3 b.n 8001744 <print_integer+0xb8> | |
./modm/ext/printf/printf.c:485 | |
if (flags & (FLAGS_HASH | FLAGS_POINTER)) { | |
800177c: f242 0310 movw r3, #8208 ; 0x2010 | |
8001780: 421c tst r4, r3 | |
8001782: d0f1 beq.n 8001768 <print_integer+0xdc> | |
./modm/ext/printf/printf.c:486 | |
if (!(flags & FLAGS_PRECISION) && len && ((len == precision) || (len == width))) { | |
8001784: 0523 lsls r3, r4, #20 | |
8001786: d530 bpl.n 80017ea <print_integer+0x15e> | |
./modm/ext/printf/printf.c:496 | |
if ((base == BASE_HEX) && !(flags & FLAGS_UPPERCASE) && (len < PRINTF_INTEGER_BUFFER_SIZE)) { | |
8001788: 2e10 cmp r6, #16 | |
800178a: f040 8095 bne.w 80018b8 <print_integer+0x22c> | |
800178e: 06a5 lsls r5, r4, #26 | |
8001790: f100 808d bmi.w 80018ae <print_integer+0x222> | |
8001794: 2a1f cmp r2, #31 | |
8001796: d8e7 bhi.n 8001768 <print_integer+0xdc> | |
8001798: 4623 mov r3, r4 | |
./modm/ext/printf/printf.c:497 | |
buf[len++] = 'x'; | |
800179a: 2478 movs r4, #120 ; 0x78 | |
800179c: f102 0030 add.w r0, r2, #48 ; 0x30 | |
80017a0: 4468 add r0, sp | |
./modm/ext/printf/printf.c:503 | |
buf[len++] = 'b'; | |
80017a2: f800 4c20 strb.w r4, [r0, #-32] | |
80017a6: 461c mov r4, r3 | |
80017a8: 3201 adds r2, #1 | |
./modm/ext/printf/printf.c:505 | |
if (len < PRINTF_INTEGER_BUFFER_SIZE) { | |
80017aa: 2a1f cmp r2, #31 | |
80017ac: d8dc bhi.n 8001768 <print_integer+0xdc> | |
./modm/ext/printf/printf.c:506 | |
buf[len++] = '0'; | |
80017ae: 2030 movs r0, #48 ; 0x30 | |
80017b0: f102 0330 add.w r3, r2, #48 ; 0x30 | |
80017b4: 446b add r3, sp | |
80017b6: f803 0c20 strb.w r0, [r3, #-32] | |
80017ba: 3201 adds r2, #1 | |
80017bc: e02f b.n 800181e <print_integer+0x192> | |
./modm/ext/printf/printf.c:478 | |
if (base == BASE_OCTAL && (len > unpadded_len)) { | |
80017be: 2e08 cmp r6, #8 | |
80017c0: d129 bne.n 8001816 <print_integer+0x18a> | |
80017c2: 4295 cmp r5, r2 | |
80017c4: d227 bcs.n 8001816 <print_integer+0x18a> | |
./modm/ext/printf/printf.c:485 | |
if (flags & (FLAGS_HASH | FLAGS_POINTER)) { | |
80017c6: 04a0 lsls r0, r4, #18 | |
./modm/ext/printf/printf.c:480 | |
flags &= ~FLAGS_HASH; | |
80017c8: f024 0310 bic.w r3, r4, #16 | |
./modm/ext/printf/printf.c:485 | |
if (flags & (FLAGS_HASH | FLAGS_POINTER)) { | |
80017cc: f140 8081 bpl.w 80018d2 <print_integer+0x246> | |
./modm/ext/printf/printf.c:486 | |
if (!(flags & FLAGS_PRECISION) && len && ((len == precision) || (len == width))) { | |
80017d0: 0524 lsls r4, r4, #20 | |
80017d2: f140 808f bpl.w 80018f4 <print_integer+0x268> | |
80017d6: 461c mov r4, r3 | |
80017d8: e7e7 b.n 80017aa <print_integer+0x11e> | |
./modm/ext/printf/printf.c:485 | |
if (flags & (FLAGS_HASH | FLAGS_POINTER)) { | |
80017da: f242 0310 movw r3, #8208 ; 0x2010 | |
80017de: 421c tst r4, r3 | |
80017e0: d0c2 beq.n 8001768 <print_integer+0xdc> | |
./modm/ext/printf/printf.c:486 | |
if (!(flags & FLAGS_PRECISION) && len && ((len == precision) || (len == width))) { | |
80017e2: 0520 lsls r0, r4, #20 | |
80017e4: d4d0 bmi.n 8001788 <print_integer+0xfc> | |
80017e6: 2a00 cmp r2, #0 | |
80017e8: d04c beq.n 8001884 <print_integer+0x1f8> | |
80017ea: 9b18 ldr r3, [sp, #96] ; 0x60 | |
80017ec: 4293 cmp r3, r2 | |
80017ee: d001 beq.n 80017f4 <print_integer+0x168> | |
80017f0: 4297 cmp r7, r2 | |
80017f2: d1c9 bne.n 8001788 <print_integer+0xfc> | |
./modm/ext/printf/printf.c:489 | |
if (unpadded_len < len) { | |
80017f4: 4295 cmp r5, r2 | |
80017f6: d2c7 bcs.n 8001788 <print_integer+0xfc> | |
80017f8: 4623 mov r3, r4 | |
./modm/ext/printf/printf.c:492 | |
if (len && (base == BASE_HEX || base == BASE_BINARY) && (unpadded_len < len)) { | |
80017fa: 1e50 subs r0, r2, #1 | |
80017fc: d01f beq.n 800183e <print_integer+0x1b2> | |
80017fe: 2e10 cmp r6, #16 | |
8001800: d010 beq.n 8001824 <print_integer+0x198> | |
8001802: 2e02 cmp r6, #2 | |
8001804: d162 bne.n 80018cc <print_integer+0x240> | |
8001806: 4285 cmp r5, r0 | |
8001808: d25e bcs.n 80018c8 <print_integer+0x23c> | |
./modm/ext/printf/printf.c:493 | |
len--; // ... and an extra one for 0x or 0b | |
800180a: 3a02 subs r2, #2 | |
./modm/ext/printf/printf.c:503 | |
buf[len++] = 'b'; | |
800180c: f102 0030 add.w r0, r2, #48 ; 0x30 | |
8001810: 2462 movs r4, #98 ; 0x62 | |
8001812: 4468 add r0, sp | |
8001814: e7c5 b.n 80017a2 <print_integer+0x116> | |
./modm/ext/printf/printf.c:485 | |
if (flags & (FLAGS_HASH | FLAGS_POINTER)) { | |
8001816: f242 0310 movw r3, #8208 ; 0x2010 | |
800181a: 421c tst r4, r3 | |
800181c: d1e1 bne.n 80017e2 <print_integer+0x156> | |
./modm/ext/printf/printf.c:510 | |
if (len < PRINTF_INTEGER_BUFFER_SIZE) { | |
800181e: 2a1f cmp r2, #31 | |
8001820: d91b bls.n 800185a <print_integer+0x1ce> | |
8001822: e7a1 b.n 8001768 <print_integer+0xdc> | |
./modm/ext/printf/printf.c:492 | |
if (len && (base == BASE_HEX || base == BASE_BINARY) && (unpadded_len < len)) { | |
8001824: 4285 cmp r5, r0 | |
./modm/ext/printf/printf.c:496 | |
if ((base == BASE_HEX) && !(flags & FLAGS_UPPERCASE) && (len < PRINTF_INTEGER_BUFFER_SIZE)) { | |
8001826: f003 0420 and.w r4, r3, #32 | |
800182a: bf2c ite cs | |
800182c: 4602 movcs r2, r0 | |
./modm/ext/printf/printf.c:493 | |
len--; // ... and an extra one for 0x or 0b | |
800182e: 3a02 subcc r2, #2 | |
./modm/ext/printf/printf.c:496 | |
if ((base == BASE_HEX) && !(flags & FLAGS_UPPERCASE) && (len < PRINTF_INTEGER_BUFFER_SIZE)) { | |
8001830: 2c00 cmp r4, #0 | |
8001832: d0b2 beq.n 800179a <print_integer+0x10e> | |
./modm/ext/printf/printf.c:500 | |
buf[len++] = 'X'; | |
8001834: f102 0030 add.w r0, r2, #48 ; 0x30 | |
8001838: 2458 movs r4, #88 ; 0x58 | |
800183a: 4468 add r0, sp | |
800183c: e7b1 b.n 80017a2 <print_integer+0x116> | |
./modm/ext/printf/printf.c:496 | |
if ((base == BASE_HEX) && !(flags & FLAGS_UPPERCASE) && (len < PRINTF_INTEGER_BUFFER_SIZE)) { | |
800183e: 2e10 cmp r6, #16 | |
8001840: d118 bne.n 8001874 <print_integer+0x1e8> | |
8001842: f013 0f20 tst.w r3, #32 | |
8001846: bf14 ite ne | |
8001848: 2258 movne r2, #88 ; 0x58 | |
800184a: 2278 moveq r2, #120 ; 0x78 | |
./modm/ext/printf/printf.c:497 | |
buf[len++] = 'x'; | |
800184c: f88d 2010 strb.w r2, [sp, #16] | |
./modm/ext/printf/printf.c:506 | |
buf[len++] = '0'; | |
8001850: 2230 movs r2, #48 ; 0x30 | |
8001852: 461c mov r4, r3 | |
8001854: f88d 2011 strb.w r2, [sp, #17] | |
8001858: 2202 movs r2, #2 | |
./modm/ext/printf/printf.c:511 | |
if (negative) { | |
800185a: f1ba 0f00 cmp.w sl, #0 | |
800185e: d03a beq.n 80018d6 <print_integer+0x24a> | |
./modm/ext/printf/printf.c:512 | |
buf[len++] = '-'; | |
8001860: 202d movs r0, #45 ; 0x2d | |
8001862: f102 0330 add.w r3, r2, #48 ; 0x30 | |
8001866: 446b add r3, sp | |
./modm/ext/printf/printf.c:518 | |
buf[len++] = ' '; | |
8001868: f803 0c20 strb.w r0, [r3, #-32] | |
800186c: 3201 adds r2, #1 | |
800186e: e77b b.n 8001768 <print_integer+0xdc> | |
./modm/ext/printf/printf.c:502 | |
else if ((base == BASE_BINARY) && (len < PRINTF_INTEGER_BUFFER_SIZE)) { | |
8001870: 2262 movs r2, #98 ; 0x62 | |
8001872: e7eb b.n 800184c <print_integer+0x1c0> | |
8001874: 2e02 cmp r6, #2 | |
8001876: d0fb beq.n 8001870 <print_integer+0x1e4> | |
./modm/ext/printf/printf.c:506 | |
buf[len++] = '0'; | |
8001878: 2230 movs r2, #48 ; 0x30 | |
800187a: 461c mov r4, r3 | |
800187c: f88d 2010 strb.w r2, [sp, #16] | |
8001880: 2201 movs r2, #1 | |
8001882: e7ea b.n 800185a <print_integer+0x1ce> | |
./modm/ext/printf/printf.c:496 | |
if ((base == BASE_HEX) && !(flags & FLAGS_UPPERCASE) && (len < PRINTF_INTEGER_BUFFER_SIZE)) { | |
8001884: 2e10 cmp r6, #16 | |
8001886: d10a bne.n 800189e <print_integer+0x212> | |
8001888: f014 0f20 tst.w r4, #32 | |
800188c: bf14 ite ne | |
800188e: 2358 movne r3, #88 ; 0x58 | |
8001890: 2378 moveq r3, #120 ; 0x78 | |
./modm/ext/printf/printf.c:503 | |
buf[len++] = 'b'; | |
8001892: f88d 3010 strb.w r3, [sp, #16] | |
./modm/ext/printf/printf.c:506 | |
buf[len++] = '0'; | |
8001896: 2330 movs r3, #48 ; 0x30 | |
8001898: f88d 3011 strb.w r3, [sp, #17] | |
800189c: e7dc b.n 8001858 <print_integer+0x1cc> | |
./modm/ext/printf/printf.c:502 | |
else if ((base == BASE_BINARY) && (len < PRINTF_INTEGER_BUFFER_SIZE)) { | |
800189e: 2e02 cmp r6, #2 | |
80018a0: d101 bne.n 80018a6 <print_integer+0x21a> | |
80018a2: 2362 movs r3, #98 ; 0x62 | |
80018a4: e7f5 b.n 8001892 <print_integer+0x206> | |
./modm/ext/printf/printf.c:506 | |
buf[len++] = '0'; | |
80018a6: 2330 movs r3, #48 ; 0x30 | |
80018a8: f88d 3010 strb.w r3, [sp, #16] | |
80018ac: e7e8 b.n 8001880 <print_integer+0x1f4> | |
./modm/ext/printf/printf.c:499 | |
else if ((base == BASE_HEX) && (flags & FLAGS_UPPERCASE) && (len < PRINTF_INTEGER_BUFFER_SIZE)) { | |
80018ae: 2a1f cmp r2, #31 | |
80018b0: f63f af5a bhi.w 8001768 <print_integer+0xdc> | |
80018b4: 4623 mov r3, r4 | |
80018b6: e7bd b.n 8001834 <print_integer+0x1a8> | |
./modm/ext/printf/printf.c:502 | |
else if ((base == BASE_BINARY) && (len < PRINTF_INTEGER_BUFFER_SIZE)) { | |
80018b8: 2e02 cmp r6, #2 | |
80018ba: f47f af76 bne.w 80017aa <print_integer+0x11e> | |
80018be: 2a1f cmp r2, #31 | |
80018c0: f63f af52 bhi.w 8001768 <print_integer+0xdc> | |
80018c4: 4623 mov r3, r4 | |
80018c6: e7a1 b.n 800180c <print_integer+0x180> | |
./modm/ext/printf/printf.c:492 | |
if (len && (base == BASE_HEX || base == BASE_BINARY) && (unpadded_len < len)) { | |
80018c8: 4602 mov r2, r0 | |
80018ca: e79f b.n 800180c <print_integer+0x180> | |
80018cc: 461c mov r4, r3 | |
80018ce: 4602 mov r2, r0 | |
80018d0: e76b b.n 80017aa <print_integer+0x11e> | |
./modm/ext/printf/printf.c:480 | |
flags &= ~FLAGS_HASH; | |
80018d2: 461c mov r4, r3 | |
80018d4: e7a3 b.n 800181e <print_integer+0x192> | |
./modm/ext/printf/printf.c:514 | |
else if (flags & FLAGS_PLUS) { | |
80018d6: 0760 lsls r0, r4, #29 | |
80018d8: d504 bpl.n 80018e4 <print_integer+0x258> | |
./modm/ext/printf/printf.c:515 | |
buf[len++] = '+'; // ignore the space if the '+' exists | |
80018da: f102 0330 add.w r3, r2, #48 ; 0x30 | |
80018de: 202b movs r0, #43 ; 0x2b | |
80018e0: 446b add r3, sp | |
80018e2: e7c1 b.n 8001868 <print_integer+0x1dc> | |
./modm/ext/printf/printf.c:517 | |
else if (flags & FLAGS_SPACE) { | |
80018e4: 0723 lsls r3, r4, #28 | |
80018e6: f57f af3f bpl.w 8001768 <print_integer+0xdc> | |
./modm/ext/printf/printf.c:518 | |
buf[len++] = ' '; | |
80018ea: f102 0330 add.w r3, r2, #48 ; 0x30 | |
80018ee: 2020 movs r0, #32 | |
80018f0: 446b add r3, sp | |
80018f2: e7b9 b.n 8001868 <print_integer+0x1dc> | |
./modm/ext/printf/printf.c:486 | |
if (!(flags & FLAGS_PRECISION) && len && ((len == precision) || (len == width))) { | |
80018f4: 9818 ldr r0, [sp, #96] ; 0x60 | |
80018f6: 4290 cmp r0, r2 | |
80018f8: f43f af7f beq.w 80017fa <print_integer+0x16e> | |
80018fc: 4297 cmp r7, r2 | |
80018fe: f47f af6a bne.w 80017d6 <print_integer+0x14a> | |
8001902: e77a b.n 80017fa <print_integer+0x16e> | |
08001904 <__aeabi_ldivmod>: | |
__aeabi_ldivmod(): | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:186 | |
8001904: b97b cbnz r3, 8001926 <__aeabi_ldivmod+0x22> | |
8001906: b972 cbnz r2, 8001926 <__aeabi_ldivmod+0x22> | |
8001908: 2900 cmp r1, #0 | |
800190a: bfbe ittt lt | |
800190c: 2000 movlt r0, #0 | |
800190e: f04f 4100 movlt.w r1, #2147483648 ; 0x80000000 | |
8001912: e006 blt.n 8001922 <__aeabi_ldivmod+0x1e> | |
8001914: bf08 it eq | |
8001916: 2800 cmpeq r0, #0 | |
8001918: bf1c itt ne | |
800191a: f06f 4100 mvnne.w r1, #2147483648 ; 0x80000000 | |
800191e: f04f 30ff movne.w r0, #4294967295 ; 0xffffffff | |
8001922: f000 b9cd b.w 8001cc0 <__aeabi_idiv0> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:188 | |
8001926: f1ad 0c08 sub.w ip, sp, #8 | |
800192a: e96d ce04 strd ip, lr, [sp, #-16]! | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:189 | |
800192e: 2900 cmp r1, #0 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:190 | |
8001930: db09 blt.n 8001946 <__aeabi_ldivmod+0x42> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:191 | |
8001932: 2b00 cmp r3, #0 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:192 | |
8001934: db1a blt.n 800196c <__aeabi_ldivmod+0x68> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:194 | |
8001936: f000 f84d bl 80019d4 <__udivmoddi4> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:196 | |
800193a: f8dd e004 ldr.w lr, [sp, #4] | |
800193e: e9dd 2302 ldrd r2, r3, [sp, #8] | |
8001942: b004 add sp, #16 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:197 | |
8001944: 4770 bx lr | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:201 | |
8001946: 4240 negs r0, r0 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:202 | |
8001948: eb61 0141 sbc.w r1, r1, r1, lsl #1 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:203 | |
800194c: 2b00 cmp r3, #0 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:204 | |
800194e: db1b blt.n 8001988 <__aeabi_ldivmod+0x84> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:206 | |
8001950: f000 f840 bl 80019d4 <__udivmoddi4> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:208 | |
8001954: f8dd e004 ldr.w lr, [sp, #4] | |
8001958: e9dd 2302 ldrd r2, r3, [sp, #8] | |
800195c: b004 add sp, #16 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:209 | |
800195e: 4240 negs r0, r0 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:210 | |
8001960: eb61 0141 sbc.w r1, r1, r1, lsl #1 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:211 | |
8001964: 4252 negs r2, r2 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:212 | |
8001966: eb63 0343 sbc.w r3, r3, r3, lsl #1 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:213 | |
800196a: 4770 bx lr | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:217 | |
800196c: 4252 negs r2, r2 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:218 | |
800196e: eb63 0343 sbc.w r3, r3, r3, lsl #1 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:220 | |
8001972: f000 f82f bl 80019d4 <__udivmoddi4> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:222 | |
8001976: f8dd e004 ldr.w lr, [sp, #4] | |
800197a: e9dd 2302 ldrd r2, r3, [sp, #8] | |
800197e: b004 add sp, #16 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:223 | |
8001980: 4240 negs r0, r0 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:224 | |
8001982: eb61 0141 sbc.w r1, r1, r1, lsl #1 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:225 | |
8001986: 4770 bx lr | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:229 | |
8001988: 4252 negs r2, r2 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:230 | |
800198a: eb63 0343 sbc.w r3, r3, r3, lsl #1 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:232 | |
800198e: f000 f821 bl 80019d4 <__udivmoddi4> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:233 | |
8001992: f8dd e004 ldr.w lr, [sp, #4] | |
8001996: e9dd 2302 ldrd r2, r3, [sp, #8] | |
800199a: b004 add sp, #16 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:234 | |
800199c: 4252 negs r2, r2 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:235 | |
800199e: eb63 0343 sbc.w r3, r3, r3, lsl #1 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:236 | |
80019a2: 4770 bx lr | |
080019a4 <__aeabi_uldivmod>: | |
__aeabi_uldivmod(): | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:254 | |
80019a4: b953 cbnz r3, 80019bc <__aeabi_uldivmod+0x18> | |
80019a6: b94a cbnz r2, 80019bc <__aeabi_uldivmod+0x18> | |
80019a8: 2900 cmp r1, #0 | |
80019aa: bf08 it eq | |
80019ac: 2800 cmpeq r0, #0 | |
80019ae: bf1c itt ne | |
80019b0: f04f 31ff movne.w r1, #4294967295 ; 0xffffffff | |
80019b4: f04f 30ff movne.w r0, #4294967295 ; 0xffffffff | |
80019b8: f000 b982 b.w 8001cc0 <__aeabi_idiv0> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:256 | |
80019bc: f1ad 0c08 sub.w ip, sp, #8 | |
80019c0: e96d ce04 strd ip, lr, [sp, #-16]! | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:258 | |
80019c4: f000 f806 bl 80019d4 <__udivmoddi4> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:259 | |
80019c8: f8dd e004 ldr.w lr, [sp, #4] | |
80019cc: e9dd 2302 ldrd r2, r3, [sp, #8] | |
80019d0: b004 add sp, #16 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/bpabi.S:260 | |
80019d2: 4770 bx lr | |
080019d4 <__udivmoddi4>: | |
__udivmoddi4(): | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:996 | |
80019d4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} | |
80019d8: 9d09 ldr r5, [sp, #36] ; 0x24 | |
80019da: 460c mov r4, r1 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1044 | |
80019dc: 2b00 cmp r3, #0 | |
80019de: d14d bne.n 8001a7c <__udivmoddi4+0xa8> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1046 | |
80019e0: 428a cmp r2, r1 | |
80019e2: 460f mov r7, r1 | |
80019e4: 4684 mov ip, r0 | |
80019e6: 4696 mov lr, r2 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1050 | |
80019e8: fab2 f382 clz r3, r2 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1046 | |
80019ec: d960 bls.n 8001ab0 <__udivmoddi4+0xdc> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1052 | |
80019ee: b14b cbz r3, 8001a04 <__udivmoddi4+0x30> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1057 | |
80019f0: fa02 fe03 lsl.w lr, r2, r3 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1058 | |
80019f4: f1c3 0220 rsb r2, r3, #32 | |
80019f8: 409f lsls r7, r3 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1059 | |
80019fa: fa00 fc03 lsl.w ip, r0, r3 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1058 | |
80019fe: fa20 f202 lsr.w r2, r0, r2 | |
8001a02: 4317 orrs r7, r2 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1062 | |
8001a04: ea4f 461e mov.w r6, lr, lsr #16 | |
8001a08: fa1f f48e uxth.w r4, lr | |
8001a0c: ea4f 421c mov.w r2, ip, lsr #16 | |
8001a10: fbb7 f1f6 udiv r1, r7, r6 | |
8001a14: fb06 7711 mls r7, r6, r1, r7 | |
8001a18: fb01 f004 mul.w r0, r1, r4 | |
8001a1c: ea42 4207 orr.w r2, r2, r7, lsl #16 | |
8001a20: 4290 cmp r0, r2 | |
8001a22: d908 bls.n 8001a36 <__udivmoddi4+0x62> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1062 (discriminator 1) | |
8001a24: eb1e 0202 adds.w r2, lr, r2 | |
8001a28: f101 37ff add.w r7, r1, #4294967295 ; 0xffffffff | |
8001a2c: d202 bcs.n 8001a34 <__udivmoddi4+0x60> | |
8001a2e: 4290 cmp r0, r2 | |
8001a30: f200 8131 bhi.w 8001c96 <__udivmoddi4+0x2c2> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1062 | |
8001a34: 4639 mov r1, r7 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1062 (discriminator 7) | |
8001a36: 1a12 subs r2, r2, r0 | |
8001a38: fa1f fc8c uxth.w ip, ip | |
8001a3c: fbb2 f0f6 udiv r0, r2, r6 | |
8001a40: fb06 2210 mls r2, r6, r0, r2 | |
8001a44: fb00 f404 mul.w r4, r0, r4 | |
8001a48: ea4c 4c02 orr.w ip, ip, r2, lsl #16 | |
8001a4c: 4564 cmp r4, ip | |
8001a4e: d908 bls.n 8001a62 <__udivmoddi4+0x8e> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1062 (discriminator 8) | |
8001a50: eb1e 0c0c adds.w ip, lr, ip | |
8001a54: f100 32ff add.w r2, r0, #4294967295 ; 0xffffffff | |
8001a58: d202 bcs.n 8001a60 <__udivmoddi4+0x8c> | |
8001a5a: 4564 cmp r4, ip | |
8001a5c: f200 811e bhi.w 8001c9c <__udivmoddi4+0x2c8> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1062 | |
8001a60: 4610 mov r0, r2 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1062 (discriminator 14) | |
8001a62: ea40 4001 orr.w r0, r0, r1, lsl #16 | |
8001a66: ebac 0c04 sub.w ip, ip, r4 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1063 (discriminator 14) | |
8001a6a: 2100 movs r1, #0 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1109 (discriminator 15) | |
8001a6c: b125 cbz r5, 8001a78 <__udivmoddi4+0xa4> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1111 | |
8001a6e: fa2c f303 lsr.w r3, ip, r3 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1112 | |
8001a72: 2200 movs r2, #0 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1113 | |
8001a74: e9c5 3200 strd r3, r2, [r5] | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1205 | |
8001a78: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1120 | |
8001a7c: 428b cmp r3, r1 | |
8001a7e: d905 bls.n 8001a8c <__udivmoddi4+0xb8> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1128 | |
8001a80: b10d cbz r5, 8001a86 <__udivmoddi4+0xb2> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1132 | |
8001a82: e9c5 0100 strd r0, r1, [r5] | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1180 | |
8001a86: 2100 movs r1, #0 | |
8001a88: 4608 mov r0, r1 | |
8001a8a: e7f5 b.n 8001a78 <__udivmoddi4+0xa4> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1139 | |
8001a8c: fab3 f183 clz r1, r3 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1140 | |
8001a90: 2900 cmp r1, #0 | |
8001a92: d14d bne.n 8001b30 <__udivmoddi4+0x15c> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1150 | |
8001a94: 42a3 cmp r3, r4 | |
8001a96: f0c0 80f3 bcc.w 8001c80 <__udivmoddi4+0x2ac> | |
8001a9a: 4290 cmp r0, r2 | |
8001a9c: f080 80f0 bcs.w 8001c80 <__udivmoddi4+0x2ac> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1006 | |
8001aa0: 4606 mov r6, r0 | |
8001aa2: 4623 mov r3, r4 | |
8001aa4: 4608 mov r0, r1 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1160 | |
8001aa6: 2d00 cmp r5, #0 | |
8001aa8: d0e6 beq.n 8001a78 <__udivmoddi4+0xa4> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1164 | |
8001aaa: e9c5 6300 strd r6, r3, [r5] | |
8001aae: e7e3 b.n 8001a78 <__udivmoddi4+0xa4> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1076 | |
8001ab0: 2b00 cmp r3, #0 | |
8001ab2: f040 80a3 bne.w 8001bfc <__udivmoddi4+0x228> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1085 | |
8001ab6: 1a8a subs r2, r1, r2 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1104 | |
8001ab8: ea4f 471e mov.w r7, lr, lsr #16 | |
8001abc: fa1f f68e uxth.w r6, lr | |
8001ac0: 2101 movs r1, #1 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1104 (discriminator 15) | |
8001ac2: fbb2 f4f7 udiv r4, r2, r7 | |
8001ac6: fb07 2014 mls r0, r7, r4, r2 | |
8001aca: ea4f 421c mov.w r2, ip, lsr #16 | |
8001ace: ea42 4200 orr.w r2, r2, r0, lsl #16 | |
8001ad2: fb06 f004 mul.w r0, r6, r4 | |
8001ad6: 4290 cmp r0, r2 | |
8001ad8: d90f bls.n 8001afa <__udivmoddi4+0x126> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1104 (discriminator 1) | |
8001ada: eb1e 0202 adds.w r2, lr, r2 | |
8001ade: f104 38ff add.w r8, r4, #4294967295 ; 0xffffffff | |
8001ae2: bf2c ite cs | |
8001ae4: f04f 0901 movcs.w r9, #1 | |
8001ae8: f04f 0900 movcc.w r9, #0 | |
8001aec: 4290 cmp r0, r2 | |
8001aee: d903 bls.n 8001af8 <__udivmoddi4+0x124> | |
8001af0: f1b9 0f00 cmp.w r9, #0 | |
8001af4: f000 80cc beq.w 8001c90 <__udivmoddi4+0x2bc> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1104 | |
8001af8: 4644 mov r4, r8 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1104 (discriminator 7) | |
8001afa: 1a12 subs r2, r2, r0 | |
8001afc: fa1f fc8c uxth.w ip, ip | |
8001b00: fbb2 f0f7 udiv r0, r2, r7 | |
8001b04: fb07 2210 mls r2, r7, r0, r2 | |
8001b08: fb00 f606 mul.w r6, r0, r6 | |
8001b0c: ea4c 4c02 orr.w ip, ip, r2, lsl #16 | |
8001b10: 4566 cmp r6, ip | |
8001b12: d908 bls.n 8001b26 <__udivmoddi4+0x152> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1104 (discriminator 8) | |
8001b14: eb1e 0c0c adds.w ip, lr, ip | |
8001b18: f100 32ff add.w r2, r0, #4294967295 ; 0xffffffff | |
8001b1c: d202 bcs.n 8001b24 <__udivmoddi4+0x150> | |
8001b1e: 4566 cmp r6, ip | |
8001b20: f200 80b3 bhi.w 8001c8a <__udivmoddi4+0x2b6> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1104 | |
8001b24: 4610 mov r0, r2 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1104 (discriminator 14) | |
8001b26: ebac 0c06 sub.w ip, ip, r6 | |
8001b2a: ea40 4004 orr.w r0, r0, r4, lsl #16 | |
8001b2e: e79d b.n 8001a6c <__udivmoddi4+0x98> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1172 | |
8001b30: f1c1 0620 rsb r6, r1, #32 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1174 | |
8001b34: 408b lsls r3, r1 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1177 | |
8001b36: fa04 fe01 lsl.w lr, r4, r1 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1174 | |
8001b3a: fa22 f706 lsr.w r7, r2, r6 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1177 | |
8001b3e: fa20 fc06 lsr.w ip, r0, r6 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1176 | |
8001b42: 40f4 lsrs r4, r6 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1175 | |
8001b44: 408a lsls r2, r1 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1174 | |
8001b46: 431f orrs r7, r3 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1177 | |
8001b48: ea4e 030c orr.w r3, lr, ip | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1178 | |
8001b4c: fa00 fe01 lsl.w lr, r0, r1 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1180 | |
8001b50: ea4f 4817 mov.w r8, r7, lsr #16 | |
8001b54: ea4f 4913 mov.w r9, r3, lsr #16 | |
8001b58: fa1f fc87 uxth.w ip, r7 | |
8001b5c: fbb4 f0f8 udiv r0, r4, r8 | |
8001b60: fb08 4410 mls r4, r8, r0, r4 | |
8001b64: ea49 4404 orr.w r4, r9, r4, lsl #16 | |
8001b68: fb00 f90c mul.w r9, r0, ip | |
8001b6c: 45a1 cmp r9, r4 | |
8001b6e: d90e bls.n 8001b8e <__udivmoddi4+0x1ba> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1180 (discriminator 1) | |
8001b70: 193c adds r4, r7, r4 | |
8001b72: f100 3aff add.w sl, r0, #4294967295 ; 0xffffffff | |
8001b76: bf2c ite cs | |
8001b78: f04f 0b01 movcs.w fp, #1 | |
8001b7c: f04f 0b00 movcc.w fp, #0 | |
8001b80: 45a1 cmp r9, r4 | |
8001b82: d903 bls.n 8001b8c <__udivmoddi4+0x1b8> | |
8001b84: f1bb 0f00 cmp.w fp, #0 | |
8001b88: f000 808b beq.w 8001ca2 <__udivmoddi4+0x2ce> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1180 | |
8001b8c: 4650 mov r0, sl | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1180 (discriminator 7) | |
8001b8e: eba4 0409 sub.w r4, r4, r9 | |
8001b92: fa1f f983 uxth.w r9, r3 | |
8001b96: fbb4 f3f8 udiv r3, r4, r8 | |
8001b9a: fb08 4413 mls r4, r8, r3, r4 | |
8001b9e: fb03 fc0c mul.w ip, r3, ip | |
8001ba2: ea49 4404 orr.w r4, r9, r4, lsl #16 | |
8001ba6: 45a4 cmp ip, r4 | |
8001ba8: d906 bls.n 8001bb8 <__udivmoddi4+0x1e4> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1180 (discriminator 8) | |
8001baa: 193c adds r4, r7, r4 | |
8001bac: f103 38ff add.w r8, r3, #4294967295 ; 0xffffffff | |
8001bb0: d201 bcs.n 8001bb6 <__udivmoddi4+0x1e2> | |
8001bb2: 45a4 cmp ip, r4 | |
8001bb4: d87b bhi.n 8001cae <__udivmoddi4+0x2da> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1180 | |
8001bb6: 4643 mov r3, r8 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1180 (discriminator 14) | |
8001bb8: ea43 4000 orr.w r0, r3, r0, lsl #16 | |
8001bbc: eba4 040c sub.w r4, r4, ip | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1181 (discriminator 14) | |
8001bc0: fba0 9802 umull r9, r8, r0, r2 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1183 (discriminator 14) | |
8001bc4: 4544 cmp r4, r8 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1181 (discriminator 14) | |
8001bc6: 46cc mov ip, r9 | |
8001bc8: 4643 mov r3, r8 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1183 (discriminator 14) | |
8001bca: d302 bcc.n 8001bd2 <__udivmoddi4+0x1fe> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1183 (discriminator 1) | |
8001bcc: d106 bne.n 8001bdc <__udivmoddi4+0x208> | |
8001bce: 45ce cmp lr, r9 | |
8001bd0: d204 bcs.n 8001bdc <__udivmoddi4+0x208> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1185 | |
8001bd2: 3801 subs r0, #1 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1186 | |
8001bd4: ebb9 0c02 subs.w ip, r9, r2 | |
8001bd8: eb68 0307 sbc.w r3, r8, r7 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1192 | |
8001bdc: 2d00 cmp r5, #0 | |
8001bde: d06c beq.n 8001cba <__udivmoddi4+0x2e6> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1194 | |
8001be0: ebbe 020c subs.w r2, lr, ip | |
8001be4: eb64 0403 sbc.w r4, r4, r3 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1195 | |
8001be8: fa22 f301 lsr.w r3, r2, r1 | |
8001bec: fa04 f606 lsl.w r6, r4, r6 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1196 | |
8001bf0: 40cc lsrs r4, r1 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1203 | |
8001bf2: 2100 movs r1, #0 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1195 | |
8001bf4: 431e orrs r6, r3 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1197 | |
8001bf6: e9c5 6400 strd r6, r4, [r5] | |
8001bfa: e73d b.n 8001a78 <__udivmoddi4+0xa4> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1094 | |
8001bfc: fa02 fe03 lsl.w lr, r2, r3 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1092 | |
8001c00: f1c3 0120 rsb r1, r3, #32 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1096 | |
8001c04: fa04 f203 lsl.w r2, r4, r3 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1097 | |
8001c08: fa00 fc03 lsl.w ip, r0, r3 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1095 | |
8001c0c: 40cc lsrs r4, r1 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1099 | |
8001c0e: ea4f 471e mov.w r7, lr, lsr #16 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1096 | |
8001c12: fa20 f101 lsr.w r1, r0, r1 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1099 | |
8001c16: fa1f f68e uxth.w r6, lr | |
8001c1a: fbb4 f0f7 udiv r0, r4, r7 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1096 | |
8001c1e: 430a orrs r2, r1 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1099 | |
8001c20: fb07 4410 mls r4, r7, r0, r4 | |
8001c24: 0c11 lsrs r1, r2, #16 | |
8001c26: ea41 4104 orr.w r1, r1, r4, lsl #16 | |
8001c2a: fb00 f406 mul.w r4, r0, r6 | |
8001c2e: 428c cmp r4, r1 | |
8001c30: d90e bls.n 8001c50 <__udivmoddi4+0x27c> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1099 (discriminator 1) | |
8001c32: eb1e 0101 adds.w r1, lr, r1 | |
8001c36: f100 38ff add.w r8, r0, #4294967295 ; 0xffffffff | |
8001c3a: bf2c ite cs | |
8001c3c: f04f 0901 movcs.w r9, #1 | |
8001c40: f04f 0900 movcc.w r9, #0 | |
8001c44: 428c cmp r4, r1 | |
8001c46: d902 bls.n 8001c4e <__udivmoddi4+0x27a> | |
8001c48: f1b9 0f00 cmp.w r9, #0 | |
8001c4c: d02c beq.n 8001ca8 <__udivmoddi4+0x2d4> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1099 | |
8001c4e: 4640 mov r0, r8 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1099 (discriminator 7) | |
8001c50: 1b09 subs r1, r1, r4 | |
8001c52: b292 uxth r2, r2 | |
8001c54: fbb1 f4f7 udiv r4, r1, r7 | |
8001c58: fb07 1114 mls r1, r7, r4, r1 | |
8001c5c: ea42 4201 orr.w r2, r2, r1, lsl #16 | |
8001c60: fb04 f106 mul.w r1, r4, r6 | |
8001c64: 4291 cmp r1, r2 | |
8001c66: d907 bls.n 8001c78 <__udivmoddi4+0x2a4> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1099 (discriminator 8) | |
8001c68: eb1e 0202 adds.w r2, lr, r2 | |
8001c6c: f104 38ff add.w r8, r4, #4294967295 ; 0xffffffff | |
8001c70: d201 bcs.n 8001c76 <__udivmoddi4+0x2a2> | |
8001c72: 4291 cmp r1, r2 | |
8001c74: d81e bhi.n 8001cb4 <__udivmoddi4+0x2e0> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1099 | |
8001c76: 4644 mov r4, r8 | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1099 (discriminator 14) | |
8001c78: 1a52 subs r2, r2, r1 | |
8001c7a: ea44 4100 orr.w r1, r4, r0, lsl #16 | |
8001c7e: e720 b.n 8001ac2 <__udivmoddi4+0xee> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1153 | |
8001c80: 1a86 subs r6, r0, r2 | |
8001c82: eb64 0303 sbc.w r3, r4, r3 | |
8001c86: 2001 movs r0, #1 | |
8001c88: e70d b.n 8001aa6 <__udivmoddi4+0xd2> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1104 (discriminator 12) | |
8001c8a: 44f4 add ip, lr | |
8001c8c: 3802 subs r0, #2 | |
8001c8e: e74a b.n 8001b26 <__udivmoddi4+0x152> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1104 (discriminator 5) | |
8001c90: 3c02 subs r4, #2 | |
8001c92: 4472 add r2, lr | |
8001c94: e731 b.n 8001afa <__udivmoddi4+0x126> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1062 (discriminator 5) | |
8001c96: 3902 subs r1, #2 | |
8001c98: 4472 add r2, lr | |
8001c9a: e6cc b.n 8001a36 <__udivmoddi4+0x62> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1062 (discriminator 12) | |
8001c9c: 44f4 add ip, lr | |
8001c9e: 3802 subs r0, #2 | |
8001ca0: e6df b.n 8001a62 <__udivmoddi4+0x8e> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1180 (discriminator 5) | |
8001ca2: 3802 subs r0, #2 | |
8001ca4: 443c add r4, r7 | |
8001ca6: e772 b.n 8001b8e <__udivmoddi4+0x1ba> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1099 (discriminator 5) | |
8001ca8: 3802 subs r0, #2 | |
8001caa: 4471 add r1, lr | |
8001cac: e7d0 b.n 8001c50 <__udivmoddi4+0x27c> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1180 (discriminator 12) | |
8001cae: 3b02 subs r3, #2 | |
8001cb0: 443c add r4, r7 | |
8001cb2: e781 b.n 8001bb8 <__udivmoddi4+0x1e4> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1099 (discriminator 12) | |
8001cb4: 3c02 subs r4, #2 | |
8001cb6: 4472 add r2, lr | |
8001cb8: e7de b.n 8001c78 <__udivmoddi4+0x2a4> | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/libgcc2.c:1203 | |
8001cba: 4629 mov r1, r5 | |
8001cbc: e6dc b.n 8001a78 <__udivmoddi4+0xa4> | |
8001cbe: bf00 nop | |
08001cc0 <__aeabi_idiv0>: | |
__aeabi_ldiv0(): | |
/build/gcc-arm-none-eabi-w8dugU/gcc-arm-none-eabi-12.2.rel1/build/arm-none-eabi/thumb/v8-m.main+fp/hard/libgcc/../../../../../../libgcc/config/arm/lib1funcs.S:1466 | |
8001cc0: 4770 bx lr | |
8001cc2: bf00 nop | |
08001cc4 <memset>: | |
memset(): | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:41 | |
8001cc4: b570 push {r4, r5, r6, lr} | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:51 | |
8001cc6: 0786 lsls r6, r0, #30 | |
8001cc8: d048 beq.n 8001d5c <memset+0x98> | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:53 | |
8001cca: 1e54 subs r4, r2, #1 | |
8001ccc: 2a00 cmp r2, #0 | |
8001cce: d03f beq.n 8001d50 <memset+0x8c> | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:54 | |
8001cd0: b2ca uxtb r2, r1 | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:42 | |
8001cd2: 4603 mov r3, r0 | |
8001cd4: e001 b.n 8001cda <memset+0x16> | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:53 | |
8001cd6: 3c01 subs r4, #1 | |
8001cd8: d33a bcc.n 8001d50 <memset+0x8c> | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:54 | |
8001cda: f803 2b01 strb.w r2, [r3], #1 | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:51 | |
8001cde: 079d lsls r5, r3, #30 | |
8001ce0: d1f9 bne.n 8001cd6 <memset+0x12> | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:59 | |
8001ce2: 2c03 cmp r4, #3 | |
8001ce4: d92d bls.n 8001d42 <memset+0x7e> | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:48 | |
8001ce6: b2cd uxtb r5, r1 | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:72 | |
8001ce8: 2c0f cmp r4, #15 | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:66 | |
8001cea: ea45 2505 orr.w r5, r5, r5, lsl #8 | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:67 | |
8001cee: ea45 4505 orr.w r5, r5, r5, lsl #16 | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:72 | |
8001cf2: d936 bls.n 8001d62 <memset+0x9e> | |
8001cf4: f1a4 0c10 sub.w ip, r4, #16 | |
8001cf8: f103 0e20 add.w lr, r3, #32 | |
8001cfc: f103 0210 add.w r2, r3, #16 | |
8001d00: f02c 060f bic.w r6, ip, #15 | |
8001d04: ea4f 1c1c mov.w ip, ip, lsr #4 | |
8001d08: 44b6 add lr, r6 | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:75 | |
8001d0a: e942 5504 strd r5, r5, [r2, #-16] | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:77 | |
8001d0e: e942 5502 strd r5, r5, [r2, #-8] | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:72 | |
8001d12: 3210 adds r2, #16 | |
8001d14: 4572 cmp r2, lr | |
8001d16: d1f8 bne.n 8001d0a <memset+0x46> | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:77 | |
8001d18: f10c 0201 add.w r2, ip, #1 | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:81 | |
8001d1c: f014 0f0c tst.w r4, #12 | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:78 | |
8001d20: f004 0c0f and.w ip, r4, #15 | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:77 | |
8001d24: eb03 1202 add.w r2, r3, r2, lsl #4 | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:81 | |
8001d28: d013 beq.n 8001d52 <memset+0x8e> | |
8001d2a: f1ac 0304 sub.w r3, ip, #4 | |
8001d2e: f023 0303 bic.w r3, r3, #3 | |
8001d32: 3304 adds r3, #4 | |
8001d34: 4413 add r3, r2 | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:83 | |
8001d36: f842 5b04 str.w r5, [r2], #4 | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:81 | |
8001d3a: 4293 cmp r3, r2 | |
8001d3c: d1fb bne.n 8001d36 <memset+0x72> | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:84 | |
8001d3e: f00c 0403 and.w r4, ip, #3 | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:92 | |
8001d42: b12c cbz r4, 8001d50 <memset+0x8c> | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:54 | |
8001d44: b2ca uxtb r2, r1 | |
8001d46: 441c add r4, r3 | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:93 | |
8001d48: f803 2b01 strb.w r2, [r3], #1 | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:92 | |
8001d4c: 429c cmp r4, r3 | |
8001d4e: d1fb bne.n 8001d48 <memset+0x84> | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:96 | |
8001d50: bd70 pop {r4, r5, r6, pc} | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:81 | |
8001d52: 4664 mov r4, ip | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:77 | |
8001d54: 4613 mov r3, r2 | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:92 | |
8001d56: 2c00 cmp r4, #0 | |
8001d58: d1f4 bne.n 8001d44 <memset+0x80> | |
8001d5a: e7f9 b.n 8001d50 <memset+0x8c> | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:42 | |
8001d5c: 4603 mov r3, r0 | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:51 | |
8001d5e: 4614 mov r4, r2 | |
8001d60: e7bf b.n 8001ce2 <memset+0x1e> | |
/build/newlib-pB30de/newlib-3.3.0/build_nano/arm-none-eabi/thumb/v8-m.main+fp/hard/newlib/libc/string/../../../../../../../../newlib/libc/string/memset.c:72 | |
8001d62: 461a mov r2, r3 | |
8001d64: 46a4 mov ip, r4 | |
8001d66: e7e0 b.n 8001d2a <memset+0x66> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment