Lines Matching refs:table
158 struct unwind_table *table; in find_table() local
160 for (table = &root_table; table; table = table->link) in find_table()
161 if ((pc >= table->core.pc in find_table()
162 && pc < table->core.pc + table->core.range) in find_table()
163 || (pc >= table->init.pc in find_table()
164 && pc < table->init.pc + table->init.range)) in find_table()
167 return table; in find_table()
172 static void init_unwind_hdr(struct unwind_table *table,
184 static void init_unwind_table(struct unwind_table *table, const char *name, in init_unwind_table() argument
190 table->core.pc = (unsigned long)core_start; in init_unwind_table()
191 table->core.range = core_size; in init_unwind_table()
192 table->init.pc = (unsigned long)init_start; in init_unwind_table()
193 table->init.range = init_size; in init_unwind_table()
194 table->address = table_start; in init_unwind_table()
195 table->size = table_size; in init_unwind_table()
210 table->hdrsz = header_size; in init_unwind_table()
212 table->header = header_start; in init_unwind_table()
213 table->link = NULL; in init_unwind_table()
214 table->name = name; in init_unwind_table()
244 static void init_unwind_hdr(struct unwind_table *table, in init_unwind_hdr() argument
248 unsigned long tableSize = table->size, hdrSize; in init_unwind_hdr()
258 struct eh_frame_hdr_table_entry table[]; in init_unwind_hdr() member
261 if (table->header) in init_unwind_hdr()
264 if (table->hdrsz) in init_unwind_hdr()
266 table->name); in init_unwind_hdr()
271 for (fde = table->address, n = 0; in init_unwind_hdr()
274 const u32 *cie = cie_for_fde(fde, table); in init_unwind_hdr()
312 put_unaligned((unsigned long)table->address, &header->eh_frame_ptr); in init_unwind_hdr()
317 BUILD_BUG_ON(offsetof(typeof(*header), table) in init_unwind_hdr()
318 % __alignof(typeof(*header->table))); in init_unwind_hdr()
319 for (fde = table->address, tableSize = table->size, n = 0; in init_unwind_hdr()
327 header->table[n].start = read_pointer(&ptr, in init_unwind_hdr()
331 header->table[n].fde = (unsigned long)fde; in init_unwind_hdr()
336 sort(header->table, in init_unwind_hdr()
338 sizeof(*header->table), in init_unwind_hdr()
341 table->hdrsz = hdrSize; in init_unwind_hdr()
343 table->header = (const void *)header; in init_unwind_hdr()
362 struct unwind_table *table; in unwind_add_table() local
369 table = kmalloc(sizeof(*table), GFP_KERNEL); in unwind_add_table()
370 if (!table) in unwind_add_table()
376 init_unwind_table(table, module->name, core_text->base, core_text->size, in unwind_add_table()
379 init_unwind_hdr(table, unw_hdr_alloc); in unwind_add_table()
383 module->name, table->core.pc, table->core.range); in unwind_add_table()
386 last_table->link = table; in unwind_add_table()
388 root_table.link = table; in unwind_add_table()
389 last_table = table; in unwind_add_table()
391 return table; in unwind_add_table()
395 struct unwind_table *table; member
402 struct unwind_table *table = info->table, *prev; in unlink_table() local
404 for (prev = &root_table; prev->link && prev->link != table; in unlink_table()
410 table->init.pc = 0; in unlink_table()
411 table->init.range = 0; in unlink_table()
412 info->table = NULL; in unlink_table()
414 prev->link = table->link; in unlink_table()
419 info->table = NULL; in unlink_table()
427 struct unwind_table *table = handle; in unwind_remove_table() local
430 if (!table || table == &root_table) in unwind_remove_table()
433 if (init_only && table == last_table) { in unwind_remove_table()
434 table->init.pc = 0; in unwind_remove_table()
435 table->init.range = 0; in unwind_remove_table()
439 info.table = table; in unwind_remove_table()
443 kfree(table->header); in unwind_remove_table()
444 kfree(table); in unwind_remove_table()
502 static const u32 *cie_for_fde(const u32 *fde, const struct unwind_table *table) in cie_for_fde() argument
898 const struct unwind_table *table; in arc_unwind() local
921 table = find_table(pc); in arc_unwind()
922 if (table != NULL in arc_unwind()
923 && !(table->size & (sizeof(*fde) - 1))) { in arc_unwind()
924 const u8 *hdr = table->header; in arc_unwind()
947 end = hdr + table->hdrsz; in arc_unwind()
949 == (unsigned long)table->address in arc_unwind()
980 cie = cie_for_fde(fde, table); in arc_unwind()