mirror of
https://github.com/torvalds/linux.git
synced 2024-11-19 18:41:48 +00:00
861e10be08
Including libio.h causes build failures on uClibc systems (which lack libio.h). It appears that libio.h was only included to pull in a definition for NULL, so it has been replaced by stddef.h. On powerpc, libio.h was conditionally included, but could be removed completely as it is unneeded. Also, the included of stdlib.h was changed to stddef.h (as again, only NULL is needed). Signed-off-by: Cody P Schafer <cody@linux.vnet.ibm.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/1363300074-26288-1-git-send-email-cody@linux.vnet.ibm.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
65 lines
1.7 KiB
C
65 lines
1.7 KiB
C
/*
|
|
* Mapping of DWARF debug register numbers into register names.
|
|
*
|
|
* Copyright (C) 2010 Will Deacon, ARM Ltd.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*/
|
|
|
|
#include <stddef.h>
|
|
#include <dwarf-regs.h>
|
|
|
|
struct pt_regs_dwarfnum {
|
|
const char *name;
|
|
unsigned int dwarfnum;
|
|
};
|
|
|
|
#define STR(s) #s
|
|
#define REG_DWARFNUM_NAME(r, num) {.name = r, .dwarfnum = num}
|
|
#define GPR_DWARFNUM_NAME(num) \
|
|
{.name = STR(%r##num), .dwarfnum = num}
|
|
#define REG_DWARFNUM_END {.name = NULL, .dwarfnum = 0}
|
|
|
|
/*
|
|
* Reference:
|
|
* http://infocenter.arm.com/help/topic/com.arm.doc.ihi0040a/IHI0040A_aadwarf.pdf
|
|
*/
|
|
static const struct pt_regs_dwarfnum regdwarfnum_table[] = {
|
|
GPR_DWARFNUM_NAME(0),
|
|
GPR_DWARFNUM_NAME(1),
|
|
GPR_DWARFNUM_NAME(2),
|
|
GPR_DWARFNUM_NAME(3),
|
|
GPR_DWARFNUM_NAME(4),
|
|
GPR_DWARFNUM_NAME(5),
|
|
GPR_DWARFNUM_NAME(6),
|
|
GPR_DWARFNUM_NAME(7),
|
|
GPR_DWARFNUM_NAME(8),
|
|
GPR_DWARFNUM_NAME(9),
|
|
GPR_DWARFNUM_NAME(10),
|
|
REG_DWARFNUM_NAME("%fp", 11),
|
|
REG_DWARFNUM_NAME("%ip", 12),
|
|
REG_DWARFNUM_NAME("%sp", 13),
|
|
REG_DWARFNUM_NAME("%lr", 14),
|
|
REG_DWARFNUM_NAME("%pc", 15),
|
|
REG_DWARFNUM_END,
|
|
};
|
|
|
|
/**
|
|
* get_arch_regstr() - lookup register name from it's DWARF register number
|
|
* @n: the DWARF register number
|
|
*
|
|
* get_arch_regstr() returns the name of the register in struct
|
|
* regdwarfnum_table from it's DWARF register number. If the register is not
|
|
* found in the table, this returns NULL;
|
|
*/
|
|
const char *get_arch_regstr(unsigned int n)
|
|
{
|
|
const struct pt_regs_dwarfnum *roff;
|
|
for (roff = regdwarfnum_table; roff->name != NULL; roff++)
|
|
if (roff->dwarfnum == n)
|
|
return roff->name;
|
|
return NULL;
|
|
}
|