Lines Matching refs:cie
309 struct dwarf_cie *cie = NULL; in dwarf_lookup_cie() local
319 cie = cached_cie; in dwarf_lookup_cie()
330 cie = cie_tmp; in dwarf_lookup_cie()
343 return cie; in dwarf_lookup_cie()
401 struct dwarf_cie *cie, in dwarf_cfa_execute_insns() argument
423 delta *= cie->code_alignment_factor; in dwarf_cfa_execute_insns()
431 offset *= cie->data_alignment_factor; in dwarf_cfa_execute_insns()
452 frame->pc += delta * cie->code_alignment_factor; in dwarf_cfa_execute_insns()
457 frame->pc += delta * cie->code_alignment_factor; in dwarf_cfa_execute_insns()
462 frame->pc += delta * cie->code_alignment_factor; in dwarf_cfa_execute_insns()
469 offset *= cie->data_alignment_factor; in dwarf_cfa_execute_insns()
517 offset *= cie->data_alignment_factor; in dwarf_cfa_execute_insns()
526 offset *= cie->data_alignment_factor; in dwarf_cfa_execute_insns()
539 offset *= cie->data_alignment_factor; in dwarf_cfa_execute_insns()
581 struct dwarf_cie *cie; in dwarf_unwind_stack() local
656 cie = dwarf_lookup_cie(fde->cie_pointer); in dwarf_unwind_stack()
661 dwarf_cfa_execute_insns(cie->initial_instructions, in dwarf_unwind_stack()
662 cie->instructions_end, cie, fde, in dwarf_unwind_stack()
666 dwarf_cfa_execute_insns(fde->instructions, fde->end, cie, in dwarf_unwind_stack()
742 struct dwarf_cie *cie; in dwarf_parse_cie() local
746 cie = kzalloc(sizeof(*cie), GFP_KERNEL); in dwarf_parse_cie()
747 if (!cie) in dwarf_parse_cie()
750 cie->length = len; in dwarf_parse_cie()
758 cie->cie_pointer = (unsigned long)entry; in dwarf_parse_cie()
760 cie->version = *(char *)p++; in dwarf_parse_cie()
761 UNWINDER_BUG_ON(cie->version != 1); in dwarf_parse_cie()
763 cie->augmentation = p; in dwarf_parse_cie()
764 p += strlen(cie->augmentation) + 1; in dwarf_parse_cie()
766 count = dwarf_read_uleb128(p, &cie->code_alignment_factor); in dwarf_parse_cie()
769 count = dwarf_read_leb128(p, &cie->data_alignment_factor); in dwarf_parse_cie()
776 if (cie->version == 1) { in dwarf_parse_cie()
777 cie->return_address_reg = __raw_readb(p); in dwarf_parse_cie()
780 count = dwarf_read_uleb128(p, &cie->return_address_reg); in dwarf_parse_cie()
784 if (cie->augmentation[0] == 'z') { in dwarf_parse_cie()
786 cie->flags |= DWARF_CIE_Z_AUGMENTATION; in dwarf_parse_cie()
793 cie->initial_instructions = p + length; in dwarf_parse_cie()
794 cie->augmentation++; in dwarf_parse_cie()
797 while (*cie->augmentation) { in dwarf_parse_cie()
802 if (*cie->augmentation == 'L') { in dwarf_parse_cie()
804 cie->augmentation++; in dwarf_parse_cie()
805 } else if (*cie->augmentation == 'R') { in dwarf_parse_cie()
811 cie->encoding = *(char *)p++; in dwarf_parse_cie()
812 cie->augmentation++; in dwarf_parse_cie()
813 } else if (*cie->augmentation == 'P') { in dwarf_parse_cie()
820 } else if (*cie->augmentation == 'S') { in dwarf_parse_cie()
827 p = cie->initial_instructions; in dwarf_parse_cie()
833 cie->initial_instructions = p; in dwarf_parse_cie()
834 cie->instructions_end = end; in dwarf_parse_cie()
846 if (cie->cie_pointer < cie_tmp->cie_pointer) in dwarf_parse_cie()
848 else if (cie->cie_pointer >= cie_tmp->cie_pointer) in dwarf_parse_cie()
854 rb_link_node(&cie->node, parent, rb_node); in dwarf_parse_cie()
855 rb_insert_color(&cie->node, &cie_root); in dwarf_parse_cie()
859 list_add_tail(&cie->link, &mod->arch.cie_list); in dwarf_parse_cie()
874 struct dwarf_cie *cie; in dwarf_parse_fde() local
891 cie = dwarf_lookup_cie(fde->cie_pointer); in dwarf_parse_fde()
892 fde->cie = cie; in dwarf_parse_fde()
894 if (cie->encoding) in dwarf_parse_fde()
896 cie->encoding); in dwarf_parse_fde()
902 if (cie->encoding) in dwarf_parse_fde()
904 cie->encoding & 0x0f); in dwarf_parse_fde()
910 if (fde->cie->flags & DWARF_CIE_Z_AUGMENTATION) { in dwarf_parse_fde()
999 struct dwarf_cie *cie, *next_cie; in dwarf_unwinder_cleanup() local
1009 rbtree_postorder_for_each_entry_safe(cie, next_cie, &cie_root, node) in dwarf_unwinder_cleanup()
1010 kfree(cie); in dwarf_unwinder_cleanup()
1137 struct dwarf_cie *cie, *ctmp; in module_dwarf_cleanup() local
1142 list_for_each_entry_safe(cie, ctmp, &mod->arch.cie_list, link) { in module_dwarf_cleanup()
1143 list_del(&cie->link); in module_dwarf_cleanup()
1144 rb_erase(&cie->node, &cie_root); in module_dwarf_cleanup()
1145 kfree(cie); in module_dwarf_cleanup()