Lines Matching refs:cie
306 struct dwarf_cie *cie = NULL; in dwarf_lookup_cie() local
316 cie = cached_cie; in dwarf_lookup_cie()
327 cie = cie_tmp; in dwarf_lookup_cie()
340 return cie; in dwarf_lookup_cie()
398 struct dwarf_cie *cie, in dwarf_cfa_execute_insns() argument
420 delta *= cie->code_alignment_factor; in dwarf_cfa_execute_insns()
428 offset *= cie->data_alignment_factor; in dwarf_cfa_execute_insns()
449 frame->pc += delta * cie->code_alignment_factor; in dwarf_cfa_execute_insns()
454 frame->pc += delta * cie->code_alignment_factor; in dwarf_cfa_execute_insns()
459 frame->pc += delta * cie->code_alignment_factor; in dwarf_cfa_execute_insns()
466 offset *= cie->data_alignment_factor; in dwarf_cfa_execute_insns()
514 offset *= cie->data_alignment_factor; in dwarf_cfa_execute_insns()
523 offset *= cie->data_alignment_factor; in dwarf_cfa_execute_insns()
536 offset *= cie->data_alignment_factor; in dwarf_cfa_execute_insns()
578 struct dwarf_cie *cie; in dwarf_unwind_stack() local
654 cie = dwarf_lookup_cie(fde->cie_pointer); in dwarf_unwind_stack()
659 dwarf_cfa_execute_insns(cie->initial_instructions, in dwarf_unwind_stack()
660 cie->instructions_end, cie, fde, in dwarf_unwind_stack()
664 dwarf_cfa_execute_insns(fde->instructions, fde->end, cie, in dwarf_unwind_stack()
740 struct dwarf_cie *cie; in dwarf_parse_cie() local
744 cie = kzalloc(sizeof(*cie), GFP_KERNEL); in dwarf_parse_cie()
745 if (!cie) in dwarf_parse_cie()
748 cie->length = len; in dwarf_parse_cie()
756 cie->cie_pointer = (unsigned long)entry; in dwarf_parse_cie()
758 cie->version = *(char *)p++; in dwarf_parse_cie()
759 UNWINDER_BUG_ON(cie->version != 1); in dwarf_parse_cie()
761 cie->augmentation = p; in dwarf_parse_cie()
762 p += strlen(cie->augmentation) + 1; in dwarf_parse_cie()
764 count = dwarf_read_uleb128(p, &cie->code_alignment_factor); in dwarf_parse_cie()
767 count = dwarf_read_leb128(p, &cie->data_alignment_factor); in dwarf_parse_cie()
774 if (cie->version == 1) { in dwarf_parse_cie()
775 cie->return_address_reg = __raw_readb(p); in dwarf_parse_cie()
778 count = dwarf_read_uleb128(p, &cie->return_address_reg); in dwarf_parse_cie()
782 if (cie->augmentation[0] == 'z') { in dwarf_parse_cie()
784 cie->flags |= DWARF_CIE_Z_AUGMENTATION; in dwarf_parse_cie()
791 cie->initial_instructions = p + length; in dwarf_parse_cie()
792 cie->augmentation++; in dwarf_parse_cie()
795 while (*cie->augmentation) { in dwarf_parse_cie()
800 if (*cie->augmentation == 'L') { in dwarf_parse_cie()
802 cie->augmentation++; in dwarf_parse_cie()
803 } else if (*cie->augmentation == 'R') { in dwarf_parse_cie()
809 cie->encoding = *(char *)p++; in dwarf_parse_cie()
810 cie->augmentation++; in dwarf_parse_cie()
811 } else if (*cie->augmentation == 'P') { in dwarf_parse_cie()
818 } else if (*cie->augmentation == 'S') { in dwarf_parse_cie()
825 p = cie->initial_instructions; in dwarf_parse_cie()
831 cie->initial_instructions = p; in dwarf_parse_cie()
832 cie->instructions_end = end; in dwarf_parse_cie()
844 if (cie->cie_pointer < cie_tmp->cie_pointer) in dwarf_parse_cie()
846 else if (cie->cie_pointer >= cie_tmp->cie_pointer) in dwarf_parse_cie()
852 rb_link_node(&cie->node, parent, rb_node); in dwarf_parse_cie()
853 rb_insert_color(&cie->node, &cie_root); in dwarf_parse_cie()
857 list_add_tail(&cie->link, &mod->arch.cie_list); in dwarf_parse_cie()
872 struct dwarf_cie *cie; in dwarf_parse_fde() local
889 cie = dwarf_lookup_cie(fde->cie_pointer); in dwarf_parse_fde()
890 fde->cie = cie; in dwarf_parse_fde()
892 if (cie->encoding) in dwarf_parse_fde()
894 cie->encoding); in dwarf_parse_fde()
900 if (cie->encoding) in dwarf_parse_fde()
902 cie->encoding & 0x0f); in dwarf_parse_fde()
908 if (fde->cie->flags & DWARF_CIE_Z_AUGMENTATION) { in dwarf_parse_fde()
997 struct dwarf_cie *cie, *next_cie; in dwarf_unwinder_cleanup() local
1007 rbtree_postorder_for_each_entry_safe(cie, next_cie, &cie_root, node) in dwarf_unwinder_cleanup()
1008 kfree(cie); in dwarf_unwinder_cleanup()
1133 struct dwarf_cie *cie, *ctmp; in module_dwarf_cleanup() local
1138 list_for_each_entry_safe(cie, ctmp, &mod->arch.cie_list, link) { in module_dwarf_cleanup()
1139 list_del(&cie->link); in module_dwarf_cleanup()
1140 rb_erase(&cie->node, &cie_root); in module_dwarf_cleanup()
1141 kfree(cie); in module_dwarf_cleanup()