Ejemplo n.º 1
0
int mt_reg_dump(char *buf)
{
    if(reg_dump_platform(buf) == 0)
        return 0;
    else
        return -1;
}
Ejemplo n.º 2
0
int mt_reg_dump(char *buf)
{
    /* Get core numbers */
	int ret = -1, cnt = num_possible_cpus();
	char *ptr = buf;
	unsigned int pc_value;
	unsigned int fp_value;
	unsigned int sp_value;
	unsigned long size = 0;
	unsigned long offset = 0;
	char str[KSYM_SYMBOL_LEN];
	int i;

    if(cnt < 0)
        return ret;

    if(is_reg_dump_device_registered)
    {
#if !defined(CONFIG_ARCH_MT6572) && !defined(CONFIG_ARCH_MT6572)

        /* Get PC, FP, SP and save to buf */
        for (i = 0; i < cnt; i++) {
            pc_value = readl(IOMEM(mcu_reg_base + (i << 4)));
            fp_value = readl(IOMEM((mcu_reg_base+0x4) + (i << 4)));
            sp_value = readl(IOMEM((mcu_reg_base+0x8) + (i << 4)));
            kallsyms_lookup((unsigned long)pc_value, &size, &offset, NULL, str);
            ptr += sprintf(ptr, "CORE_%d PC = 0x%x(%s + 0x%lx), FP = 0x%x, SP = 0x%x\n", i, pc_value, str, offset, fp_value, sp_value);
            //printk("CORE_%d PC = 0x%x(%s), FP = 0x%x, SP = 0x%x\n", i, pc_value, str, fp_value, sp_value);
        }
#endif
        reg_dump_platform(ptr);
        return 0;
    }

	return 1;
}