- union tui_which_element *item;
-
- win_info = (tui_source_windows ())->list[i];
-
- item = &locator->content[0]->which_element;
- if (win_info == TUI_SRC_WIN)
- {
- start_line = (item->locator.line_no -
- (win_info->generic.viewport_height / 2)) + 1;
- if (start_line <= 0)
- start_line = 1;
- }
- else
- {
- if (find_pc_partial_function (get_frame_pc (fi),
- (const char **) NULL,
- &low, NULL) == 0)
- {
- /* There is no symbol available for current PC. There is no
- safe way how to "disassemble backwards". */
- low = get_frame_pc (fi);
- }
- else
- low = tui_get_low_disassembly_address (get_frame_arch (fi),
- low, get_frame_pc (fi));
- }
-
- if (win_info == TUI_SRC_WIN)
- {
- struct tui_line_or_address l;
-
- l.loa = LOA_LINE;
- l.u.line_no = start_line;
- if (!(source_already_displayed
- && tui_line_is_displayed (item->locator.line_no,
- win_info, TRUE)))
- tui_update_source_window (win_info, get_frame_arch (fi),
- sal.symtab, l, TRUE);
- else
- {
- l.u.line_no = item->locator.line_no;
- tui_set_is_exec_point_at (l, win_info);
- }
- }
- else
- {
- if (win_info == TUI_DISASM_WIN)
- {
- struct tui_line_or_address a;
-
- a.loa = LOA_ADDRESS;
- a.u.addr = low;
- if (!tui_addr_is_displayed (item->locator.addr,
- win_info, TRUE))
- tui_update_source_window (win_info, get_frame_arch (fi),
- sal.symtab, a, TRUE);
- else
- {
- a.u.addr = item->locator.addr;
- tui_set_is_exec_point_at (a, win_info);
- }
- }
- }
- tui_update_exec_info (win_info);