/* dwarf_lookup_fde - locate the FDE that covers pc @pc: the program counter  */
struct dwarf_fde* dwarf_lookup_fde(unsigned long pc)
/* dwarf_lookup_fde - locate the FDE that covers pc @pc: the program counter  */
struct dwarf_fde* dwarf_lookup_fde(unsigned long pc)
{
	struct dwarf_fde *fde;
	unsigned long flags;
	spin_lock_irqsave(&dwarf_fde_lock, flags);
	list_for_each_entry(fde, &dwarf_fde_list, link) {
		unsigned long start, end;
		start = fde->initial_location;
		end = fde->initial_location + fde->address_range;
		if (pc >= start && pc < end)
			break;
	}
	if (&fde->link == &dwarf_fde_list)
		fde = NULL;
	spin_unlock_irqrestore(&dwarf_fde_lock, flags);
	return fde;
}