commit 4a64a77bd3c08809a1cfb4c5a76c2efbd33b1d7b from: rsc date: Wed Apr 21 20:04:18 2004 UTC add registers commit - a3785ca2cc1c8693d89ebe44216acf781a634718 commit + 4a64a77bd3c08809a1cfb4c5a76c2efbd33b1d7b blob - 76214b2de2bf47a5a81db62b966835556e732503 blob + ad86966bbad420f496dbec912570aaa06e92bd5f --- src/cmd/acid/list.c +++ src/cmd/acid/list.c @@ -189,6 +189,32 @@ listvar(char *s, long v) l->store.u.ival = v; return tl; +} + +static List* +listregisters(Map *map, Regs *regs) +{ + List **tail, *l2, *l; + Regdesc *rp; + ulong v; + + l2 = 0; + tail = &l2; + for(rp=mach->reglist; rp->name; rp++){ + if(rget(regs, rp->name, &v) < 0) + continue; + l = al(TSTRING); + l->store.fmt = 's'; + l->store.u.string = strnode(rp->name); + *tail = l; + tail = &l->next; + l = al(TINT); + l->store.fmt = 'X'; + l->store.u.ival = v; + *tail = l; + tail = &l->next; + } + return l2; } static List* @@ -266,5 +292,9 @@ trlist(Map *map, Regs *regs, ulong pc, ulong callerpc, if(sym) l->store.u.l = listautos(map, regs, sym); + l->next = al(TLIST); /* make list of registers */ + l = l->next; + l->store.u.l = listregisters(map, regs); + return depth<40; }