#include <elfutils/libdwfl.h> #include "../../util/unwind-libdw.h" #include "../../util/perf_regs.h" bool libdw__arch_set_initial_registers(Dwfl_Thread *thread, void *arg) { struct unwind_info *ui = arg; struct regs_dump *user_regs = &ui->sample->user_regs; Dwarf_Word dwarf_regs[17]; unsigned nregs; #define REG(r) ({ \ Dwarf_Word val = 0; \ perf_reg_value(&val, user_regs, PERF_REG_X86_##r); \ val; \ }) if (user_regs->abi == PERF_SAMPLE_REGS_ABI_32) { dwarf_regs[0] = REG(AX); dwarf_regs[1] = REG(CX); dwarf_regs[2] = REG(DX); dwarf_regs[3] = REG(BX); dwarf_regs[4] = REG(SP); dwarf_regs[5] = REG(BP); dwarf_regs[6] = REG(SI); dwarf_regs[7] = REG(DI); dwarf_regs[8] = REG(IP); nregs = 9; } else { dwarf_regs[0] = REG(AX); dwarf_regs[1] = REG(DX); dwarf_regs[2] = REG(CX); dwarf_regs[3] = REG(BX); dwarf_regs[4] = REG(SI); dwarf_regs[5] = REG(DI); dwarf_regs[6] = REG(BP); dwarf_regs[7] = REG(SP); dwarf_regs[8] = REG(R8); dwarf_regs[9] = REG(R9); dwarf_regs[10] = REG(R10); dwarf_regs[11] = REG(R11); dwarf_regs[12] = REG(R12); dwarf_regs[13] = REG(R13); dwarf_regs[14] = REG(R14); dwarf_regs[15] = REG(R15); dwarf_regs[16] = REG(IP); nregs = 17; } return dwfl_thread_state_registers(thread, 0, nregs, dwarf_regs); } n> </select> <input type='submit' value='switch'/></form></td></tr> <tr><td class='sub'>net-next plumbings</td><td class='sub right'>Tobias Klauser</td></tr></table> <table class='tabs'><tr><td> <a href='/cgit.cgi/linux/net-next.git/?h=nds-private-remove'>summary</a><a href='/cgit.cgi/linux/net-next.git/refs/?h=nds-private-remove&id=f5f7bebc91ab378dea5aad5277c4d283e46472d9'>refs</a><a class='active' href='/cgit.cgi/linux/net-next.git/log/sound/soc/codecs/adau1373.h?h=nds-private-remove'>log</a><a href='/cgit.cgi/linux/net-next.git/tree/sound/soc/codecs/adau1373.h?h=nds-private-remove&id=f5f7bebc91ab378dea5aad5277c4d283e46472d9'>tree</a><a href='/cgit.cgi/linux/net-next.git/commit/sound/soc/codecs/adau1373.h?h=nds-private-remove&id=f5f7bebc91ab378dea5aad5277c4d283e46472d9'>commit</a><a href='/cgit.cgi/linux/net-next.git/diff/sound/soc/codecs/adau1373.h?h=nds-private-remove&id=f5f7bebc91ab378dea5aad5277c4d283e46472d9'>diff</a></td><td class='form'><form class='right' method='get' action='/cgit.cgi/linux/net-next.git/log/sound/soc/codecs/adau1373.h'> <input type='hidden' name='h' value='nds-private-remove'/><input type='hidden' name='id' value='f5f7bebc91ab378dea5aad5277c4d283e46472d9'/><select name='qt'> <option value='grep'>log msg</option> <option value='author'>author</option> <option value='committer'>committer</option> <option value='range'>range</option> </select> <input class='txt' type='search' size='10' name='q' value=''/> <input type='submit' value='search'/> </form> </td></tr></table> <div class='path'>path: <a href='/cgit.cgi/linux/net-next.git/log/?h=nds-private-remove&id=f5f7bebc91ab378dea5aad5277c4d283e46472d9'>root</a>/<a href='/cgit.cgi/linux/net-next.git/log/sound?h=nds-private-remove&id=f5f7bebc91ab378dea5aad5277c4d283e46472d9'>sound</a>/<a href='/cgit.cgi/linux/net-next.git/log/sound/soc?h=nds-private-remove&id=f5f7bebc91ab378dea5aad5277c4d283e46472d9'>soc</a>/<a href='/cgit.cgi/linux/net-next.git/log/sound/soc/codecs?h=nds-private-remove&id=f5f7bebc91ab378dea5aad5277c4d283e46472d9'>codecs</a>/<a href='/cgit.cgi/linux/net-next.git/log/sound/soc/codecs/adau1373.h?h=nds-private-remove&id=f5f7bebc91ab378dea5aad5277c4d283e46472d9'>adau1373.h</a></div><div class='content'><table class='list nowrap'><tr class='nohover'><th class='left'>Age</th><th class='left'>Commit message (<a href='/cgit.cgi/linux/net-next.git/log/sound/soc/codecs/adau1373.h?h=nds-private-remove&id=f5f7bebc91ab378dea5aad5277c4d283e46472d9&showmsg=1'>Expand</a>)</th><th class='left'>Author</th><th class='left'>Files</th><th class='left'>Lines</th></tr>