# Size of extra stack frame needed by exception context switch.
exception_frame_size: 64
# Add some missing calls.
add:
  # usb_ep_event: grep ep_._evt -A 1 build/hammer/RW/ec.RW.smap
  usb_reset[chip/stm32/usb.c:370]:
    - hid_touchpad_event
    - hid_keyboard_event
    - usb_update_ep_event
    - i2c_usb__ep_event
  usb_interrupt_handle_wake[chip/stm32/usb.c:608]:
    - hid_touchpad_event
    - hid_keyboard_event
    - usb_update_ep_event
    - i2c_usb__ep_event
  # usb_ep_tx/rx: grep ep_._[rt]x -B 1 -A 1 build/hammer/RW/ec.RW.smap
  usb_interrupt[chip/stm32/usb.c:640]:
    - ep0_rx
    - hid_keyboard_rx
    - usb_update_ep_rx
    - i2c_usb__ep_rx
    - ep0_tx
    - hid_touchpad_tx
    - hid_keyboard_tx
    - usb_update_ep_tx
    - i2c_usb__ep_tx
  # usb_interface_request
  ep0_tx[chip/stm32/usb.c:337]:
    - hid_touchpad_iface_request
    - hid_keyboard_iface_request
  ep0_rx[chip/stm32/usb.c:193]:
    - hid_touchpad_iface_request
    - hid_keyboard_iface_request
  # Queue functions
  queue_advance_tail[common/queue.c:116]:
    - queue_add_direct
  queue_add_memcpy[common/queue.c:152]:
    - memcpy
  queue_add_memcpy[common/queue.c:157]:
    - memcpy
  queue_read_safe.lto_priv.98[common/queue.c:174]:
    - memcpy
  queue_read_safe.lto_priv.98[common/queue.c:179]:
    - memcpy
  queue_advance_head[common/queue.c:105]:
    - queue_remove_direct
  queue_add_direct[common/queue_policies.c:18]:
    - usb_i2c_written
    - usb_written
    - update_out_handler
  queue_remove_direct[common/queue_policies.c:27]:
    - usb_read
  vfnprintf:
    # This covers all the addchar in vfnprintf, but stackanalyzer does not
    # realize that...
    - __tx_char
#  gpio_interrupt[chip/stm32/gpio.c:146]:
#  TODO: All GPIO interrupt handlers should follow here
  handle_command[common/console.c:248]:
    - { name: __cmds, stride: 16, offset: 4 }
  hook_task[common/hooks.c:197]:
    - { name: __deferred_funcs, stride: 4, offset: 0 }
    - { name: __hooks_second, stride: 8, offset: 0 }
    - { name: __hooks_tick, stride: 8, offset: 0 }
  # Note: This assumes worse case, where all hook functions can be called from
  # any hook_notify call
  hook_notify[common/hooks.c:127]:
    - { name: __hooks_pre_freq_change, stride: 8, offset: 0 }
    - { name: __hooks_freq_change, stride: 8, offset: 0 }
    - { name: __hooks_chipset_pre_init, stride: 8, offset: 0 }
    - { name: __hooks_chipset_resume, stride: 8, offset: 0 }
    - { name: __hooks_chipset_startup, stride: 8, offset: 0 }
    - { name: __hooks_chipset_suspend, stride: 8, offset: 0 }
    - { name: __hooks_sysjump, stride: 8, offset: 0 }
    - { name: __hooks_chipset_shutdown, stride: 8, offset: 0 }
    - { name: __hooks_ac_change, stride: 8, offset: 0 }
    - { name: __hooks_battery_soc_change, stride: 8, offset: 0 }
    - { name: __hooks_chipset_reset, stride: 8, offset: 0 }
    - { name: __hooks_lid_change, stride: 8, offset: 0 }
    - { name: __hooks_pwrbtn_change, stride: 8, offset: 0 }
    - { name: __hooks_tablet_mode_change, stride: 8, offset: 0 }
    - { name: __hooks_usb_change, stride: 8, offset: 0 }
  jump_to_image.lto_priv.135[common/system.c:568]:
    - None
  irq_4_handler[core/cortex-m0/init.S:165]:
    - exception_panic
remove:
  - panic_assert_fail
  - [queue_add_direct, update_out_handler, [queue_add_unit, queue_add_memcpy], queue_add_direct, update_out_handler]
  # set_touchpad_report/keyboard_state_changed add elements to a queue, but
  # _not_ the queue that would call update_out handler
  - [ touchpad_task, queue_add_unit, queue_add_direct, update_out_handler]
  - [ keyboard_scan_task, queue_add_unit, queue_add_direct, update_out_handler]
  # keyboard_raw_drive_column can't recurse more than once
  - [keyboard_raw_drive_column, keyboard_raw_drive_column, keyboard_raw_drive_column]
  - [system_common_shutdown, system_run_image_copy, jump_to_image.lto_priv.135, hook_notify, system_common_shutdown]
