mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 08:33:17 +02:00
ASoC: SOF: Xtensa: dump ar registers to restore call stack
On Xtensa platform ar0 is for caller address and ar1 is for stack address. The ar register dump can be used to rebuild call stack with FW elf file by debug tools. Signed-off-by: Rander Wang <rander.wang@intel.com> Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Link: https://lore.kernel.org/r/20230919092416.4137-2-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
88e20c1f8c
commit
58bb5081cb
|
|
@ -132,6 +132,17 @@ static void xtensa_stack(struct snd_sof_dev *sdev, const char *level, void *oops
|
|||
buf, sizeof(buf), false);
|
||||
dev_printk(level, sdev->dev, "0x%08x: %s\n", stack_ptr + i * 4, buf);
|
||||
}
|
||||
|
||||
if (!xoops->plat_hdr.numaregs)
|
||||
return;
|
||||
|
||||
dev_printk(level, sdev->dev, "AR registers:\n");
|
||||
/* the number of ar registers is a multiple of 4 */
|
||||
for (i = 0; i < xoops->plat_hdr.numaregs; i += 4) {
|
||||
hex_dump_to_buffer(xoops->ar + i, 16, 16, 4,
|
||||
buf, sizeof(buf), false);
|
||||
dev_printk(level, sdev->dev, "%#x: %s\n", i * 4, buf);
|
||||
}
|
||||
}
|
||||
|
||||
const struct dsp_arch_ops sof_xtensa_arch_ops = {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user