Lines Matching refs:table
159 struct unwind_table *table; in find_table() local
161 for (table = &root_table; table; table = table->link) in find_table()
162 if ((pc >= table->core.pc in find_table()
163 && pc < table->core.pc + table->core.range) in find_table()
164 || (pc >= table->init.pc in find_table()
165 && pc < table->init.pc + table->init.range)) in find_table()
168 return table; in find_table()
173 static void init_unwind_hdr(struct unwind_table *table,
191 static void init_unwind_table(struct unwind_table *table, const char *name, in init_unwind_table() argument
200 table->core.pc = (unsigned long)core_start; in init_unwind_table()
201 table->core.range = core_size; in init_unwind_table()
202 table->init.pc = (unsigned long)init_start; in init_unwind_table()
203 table->init.range = init_size; in init_unwind_table()
204 table->address = table_start; in init_unwind_table()
205 table->size = table_size; in init_unwind_table()
216 table->hdrsz = header_size; in init_unwind_table()
218 table->header = header_start; in init_unwind_table()
219 table->link = NULL; in init_unwind_table()
220 table->name = name; in init_unwind_table()
263 static void init_unwind_hdr(struct unwind_table *table, in init_unwind_hdr() argument
267 unsigned long tableSize = table->size, hdrSize; in init_unwind_hdr()
277 struct eh_frame_hdr_table_entry table[]; in init_unwind_hdr() member
280 if (table->header) in init_unwind_hdr()
283 if (table->hdrsz) in init_unwind_hdr()
285 table->name); in init_unwind_hdr()
290 for (fde = table->address, n = 0; in init_unwind_hdr()
293 const u32 *cie = cie_for_fde(fde, table); in init_unwind_hdr()
331 put_unaligned((unsigned long)table->address, &header->eh_frame_ptr); in init_unwind_hdr()
336 BUILD_BUG_ON(offsetof(typeof(*header), table) in init_unwind_hdr()
337 % __alignof(typeof(*header->table))); in init_unwind_hdr()
338 for (fde = table->address, tableSize = table->size, n = 0; in init_unwind_hdr()
347 header->table[n].start = read_pointer(&ptr, in init_unwind_hdr()
351 header->table[n].fde = (unsigned long)fde; in init_unwind_hdr()
356 sort(header->table, in init_unwind_hdr()
358 sizeof(*header->table), in init_unwind_hdr()
361 table->hdrsz = hdrSize; in init_unwind_hdr()
363 table->header = (const void *)header; in init_unwind_hdr()
378 struct unwind_table *table; in unwind_add_table() local
383 table = kmalloc(sizeof(*table), GFP_KERNEL); in unwind_add_table()
384 if (!table) in unwind_add_table()
387 init_unwind_table(table, module->name, in unwind_add_table()
393 init_unwind_hdr(table, unw_hdr_alloc); in unwind_add_table()
397 module->name, table->core.pc, table->core.range); in unwind_add_table()
400 last_table->link = table; in unwind_add_table()
402 root_table.link = table; in unwind_add_table()
403 last_table = table; in unwind_add_table()
405 return table; in unwind_add_table()
409 struct unwind_table *table; member
416 struct unwind_table *table = info->table, *prev; in unlink_table() local
418 for (prev = &root_table; prev->link && prev->link != table; in unlink_table()
424 table->init.pc = 0; in unlink_table()
425 table->init.range = 0; in unlink_table()
426 info->table = NULL; in unlink_table()
428 prev->link = table->link; in unlink_table()
433 info->table = NULL; in unlink_table()
441 struct unwind_table *table = handle; in unwind_remove_table() local
444 if (!table || table == &root_table) in unwind_remove_table()
447 if (init_only && table == last_table) { in unwind_remove_table()
448 table->init.pc = 0; in unwind_remove_table()
449 table->init.range = 0; in unwind_remove_table()
453 info.table = table; in unwind_remove_table()
457 kfree(table->header); in unwind_remove_table()
458 kfree(table); in unwind_remove_table()
507 static const u32 *cie_for_fde(const u32 *fde, const struct unwind_table *table) in cie_for_fde() argument
903 const struct unwind_table *table; in arc_unwind() local
926 table = find_table(pc); in arc_unwind()
927 if (table != NULL in arc_unwind()
928 && !(table->size & (sizeof(*fde) - 1))) { in arc_unwind()
929 const u8 *hdr = table->header; in arc_unwind()
952 end = hdr + table->hdrsz; in arc_unwind()
954 == (unsigned long)table->address in arc_unwind()
985 cie = cie_for_fde(fde, table); in arc_unwind()