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()
174 static void init_unwind_table(struct unwind_table *table, const char *name, in init_unwind_table() argument
183 table->core.pc = (unsigned long)core_start; in init_unwind_table()
184 table->core.range = core_size; in init_unwind_table()
185 table->init.pc = (unsigned long)init_start; in init_unwind_table()
186 table->init.range = init_size; in init_unwind_table()
187 table->address = table_start; in init_unwind_table()
188 table->size = table_size; in init_unwind_table()
199 table->hdrsz = header_size; in init_unwind_table()
201 table->header = header_start; in init_unwind_table()
202 table->link = NULL; in init_unwind_table()
203 table->name = name; in init_unwind_table()
244 static void __init setup_unwind_table(struct unwind_table *table, in setup_unwind_table() argument
248 unsigned long tableSize = table->size, hdrSize; in setup_unwind_table()
258 struct eh_frame_hdr_table_entry table[]; in setup_unwind_table() member
261 if (table->header) in setup_unwind_table()
264 if (table->hdrsz) in setup_unwind_table()
266 table->name); in setup_unwind_table()
271 for (fde = table->address, n = 0; in setup_unwind_table()
274 const u32 *cie = cie_for_fde(fde, table); in setup_unwind_table()
310 put_unaligned((unsigned long)table->address, &header->eh_frame_ptr); in setup_unwind_table()
315 BUILD_BUG_ON(offsetof(typeof(*header), table) in setup_unwind_table()
316 % __alignof(typeof(*header->table))); in setup_unwind_table()
317 for (fde = table->address, tableSize = table->size, n = 0; in setup_unwind_table()
326 header->table[n].start = read_pointer(&ptr, in setup_unwind_table()
330 header->table[n].fde = (unsigned long)fde; in setup_unwind_table()
335 sort(header->table, in setup_unwind_table()
337 sizeof(*header->table), in setup_unwind_table()
340 table->hdrsz = hdrSize; in setup_unwind_table()
342 table->header = (const void *)header; in setup_unwind_table()
365 struct unwind_table *table; in unwind_add_table() local
370 table = kmalloc(sizeof(*table), GFP_KERNEL); in unwind_add_table()
371 if (!table) in unwind_add_table()
374 init_unwind_table(table, module->name, in unwind_add_table()
382 module->name, table->core.pc, table->core.range); in unwind_add_table()
385 last_table->link = table; in unwind_add_table()
387 root_table.link = table; in unwind_add_table()
388 last_table = table; in unwind_add_table()
390 return table; in unwind_add_table()
394 struct unwind_table *table; member
401 struct unwind_table *table = info->table, *prev; in unlink_table() local
403 for (prev = &root_table; prev->link && prev->link != table; in unlink_table()
409 table->init.pc = 0; in unlink_table()
410 table->init.range = 0; in unlink_table()
411 info->table = NULL; in unlink_table()
413 prev->link = table->link; in unlink_table()
418 info->table = NULL; in unlink_table()
426 struct unwind_table *table = handle; in unwind_remove_table() local
429 if (!table || table == &root_table) in unwind_remove_table()
432 if (init_only && table == last_table) { in unwind_remove_table()
433 table->init.pc = 0; in unwind_remove_table()
434 table->init.range = 0; in unwind_remove_table()
438 info.table = table; in unwind_remove_table()
442 kfree(table); in unwind_remove_table()
491 static const u32 *cie_for_fde(const u32 *fde, const struct unwind_table *table) in cie_for_fde() argument
890 const struct unwind_table *table; in arc_unwind() local
913 table = find_table(pc); in arc_unwind()
914 if (table != NULL in arc_unwind()
915 && !(table->size & (sizeof(*fde) - 1))) { in arc_unwind()
916 const u8 *hdr = table->header; in arc_unwind()
939 end = hdr + table->hdrsz; in arc_unwind()
941 == (unsigned long)table->address in arc_unwind()
972 cie = cie_for_fde(fde, table); in arc_unwind()
995 for (fde = table->address, tableSize = table->size; in arc_unwind()
1000 cie = cie_for_fde(fde, table); in arc_unwind()