History

kallsyms: support kernel symbols in Blackfin on-chip memory

The Blackfin arch has a discontiguous .text layout due to having on-chip instruction memory and no virtual memory support. As such, we need to add explicit checks for these additional .text regions.

Robin Getz committed 20 years ago

Commit 028f0421 parent 2185a5e1 file · +12 −1Browse files

Showing the changes to scripts (1 of 1 file). Show all

Unified · Split

scripts/kallsyms.c+12−1
@@ -35,6 +35,7 @@ struct sym_entry { · 34 unmodified lines
3535 static struct sym_entry *table;
3636 static unsigned int table_size, table_cnt;
3737 static unsigned long long _text, _stext, _etext, _sinittext, _einittext;
38+static unsigned long long _stext_l1, _etext_l1, _stext_l2, _etext_l2;
3839 static int all_symbols = 0;
3940 static char symbol_prefix_char = '\0';
4041
@@ -92,6 +93,14 @@ static int read_symbol(FILE *in, struct sym_entry *s) · 51 unmodified lines
9293 _sinittext = s->addr;
9394 else if (strcmp(sym, "_einittext") == 0)
9495 _einittext = s->addr;
96+ else if (strcmp(sym, "_stext_l1") == 0)
97+ _stext_l1 = s->addr;
98+ else if (strcmp(sym, "_etext_l1") == 0)
99+ _etext_l1 = s->addr;
100+ else if (strcmp(sym, "_stext_l2") == 0)
101+ _stext_l2 = s->addr;
102+ else if (strcmp(sym, "_etext_l2") == 0)
103+ _etext_l2 = s->addr;
95104 else if (toupper(stype) == 'A')
96105 {
97106 /* Keep these useful absolute symbols */
@@ -157,7 +166,9 @@ static int symbol_valid(struct sym_entry *s) · 59 unmodified lines
157166 * and inittext sections are discarded */
158167 if (!all_symbols) {
159168 if ((s->addr < _stext || s->addr > _etext)
160− && (s->addr < _sinittext || s->addr > _einittext))
169+ && (s->addr < _sinittext || s->addr > _einittext)
170+ && (s->addr < _stext_l1 || s->addr > _etext_l1)
171+ && (s->addr < _stext_l2 || s->addr > _etext_l2))
161172 return 0;
162173 /* Corner case. Discard any symbols with the same value as
163174 * _etext _einittext; they can move between pass 1 and 2 when