Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 212285
b: refs/heads/master
c: 04a3440
h: refs/heads/master
i:
  212283: 2fa3f98
v: v3
  • Loading branch information
Phil Carmody authored and Tony Luck committed Sep 14, 2010
1 parent aa158fb commit 135ec94
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 2 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 747584be04bb98a856bab5cd1bfe56d341881b83
refs/heads/master: 04a344069052d94b4ea1f95d930cbfa39b4ca292
17 changes: 16 additions & 1 deletion trunk/arch/ia64/kernel/unwind.c
Original file line number Diff line number Diff line change
Expand Up @@ -1531,7 +1531,7 @@ build_script (struct unw_frame_info *info)
struct unw_labeled_state *ls, *next;
unsigned long ip = info->ip;
struct unw_state_record sr;
struct unw_table *table;
struct unw_table *table, *prev;
struct unw_reg_info *r;
struct unw_insn insn;
u8 *dp, *desc_end;
Expand Down Expand Up @@ -1560,11 +1560,26 @@ build_script (struct unw_frame_info *info)

STAT(parse_start = ia64_get_itc());

prev = NULL;
for (table = unw.tables; table; table = table->next) {
if (ip >= table->start && ip < table->end) {
/*
* Leave the kernel unwind table at the very front,
* lest moving it breaks some assumption elsewhere.
* Otherwise, move the matching table to the second
* position in the list so that traversals can benefit
* from commonality in backtrace paths.
*/
if (prev && prev != unw.tables) {
/* unw is safe - we're already spinlocked */
prev->next = table->next;
table->next = unw.tables->next;
unw.tables->next = table;
}
e = lookup(table, ip - table->segment_base);
break;
}
prev = table;
}
if (!e) {
/* no info, return default unwinder (leaf proc, no mem stack, no saved regs) */
Expand Down

0 comments on commit 135ec94

Please sign in to comment.