1 // SPDX-License-Identifier: GPL-2.0-only !! 1 // SPDX-License-Identifier: GPL-2.0 2 /* 2 /* 3 * Mapping of DWARF debug register numbers int !! 3 * dwarf-regs.c : Mapping of DWARF debug register numbers into register names. >> 4 * >> 5 * Copyright (C) 2013 Cavium, Inc. >> 6 * >> 7 * This program is free software; you can redistribute it and/or modify >> 8 * it under the terms of the GNU General Public License as published by >> 9 * the Free Software Foundation; either version 2 of the License, or >> 10 * (at your option) any later version. >> 11 * >> 12 * This program is distributed in the hope that it will be useful, >> 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of >> 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> 15 * GNU General Public License for more details. 4 * 16 * 5 * Copyright (C) 2010 Will Deacon, ARM Ltd. << 6 */ 17 */ 7 18 8 #include <stddef.h> !! 19 #include <stdio.h> 9 #include <linux/stringify.h> << 10 #include <dwarf-regs.h> 20 #include <dwarf-regs.h> 11 21 12 struct pt_regs_dwarfnum { !! 22 static const char *mips_gpr_names[32] = { 13 const char *name; !! 23 "$0", "$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8", "$9", 14 unsigned int dwarfnum; !! 24 "$10", "$11", "$12", "$13", "$14", "$15", "$16", "$17", "$18", "$19", 15 }; !! 25 "$20", "$21", "$22", "$23", "$24", "$25", "$26", "$27", "$28", "$29", 16 !! 26 "$30", "$31" 17 #define REG_DWARFNUM_NAME(r, num) {.name = r, << 18 #define GPR_DWARFNUM_NAME(num) \ << 19 {.name = __stringify(%r##num), .dwarfn << 20 #define REG_DWARFNUM_END {.name = NULL, .dwarf << 21 << 22 /* << 23 * Reference: << 24 * http://infocenter.arm.com/help/topic/com.ar << 25 */ << 26 static const struct pt_regs_dwarfnum regdwarfn << 27 GPR_DWARFNUM_NAME(0), << 28 GPR_DWARFNUM_NAME(1), << 29 GPR_DWARFNUM_NAME(2), << 30 GPR_DWARFNUM_NAME(3), << 31 GPR_DWARFNUM_NAME(4), << 32 GPR_DWARFNUM_NAME(5), << 33 GPR_DWARFNUM_NAME(6), << 34 GPR_DWARFNUM_NAME(7), << 35 GPR_DWARFNUM_NAME(8), << 36 GPR_DWARFNUM_NAME(9), << 37 GPR_DWARFNUM_NAME(10), << 38 REG_DWARFNUM_NAME("%fp", 11), << 39 REG_DWARFNUM_NAME("%ip", 12), << 40 REG_DWARFNUM_NAME("%sp", 13), << 41 REG_DWARFNUM_NAME("%lr", 14), << 42 REG_DWARFNUM_NAME("%pc", 15), << 43 REG_DWARFNUM_END, << 44 }; 27 }; 45 28 46 /** << 47 * get_arch_regstr() - lookup register name fr << 48 * @n: the DWARF register number << 49 * << 50 * get_arch_regstr() returns the name of the r << 51 * regdwarfnum_table from it's DWARF register << 52 * found in the table, this returns NULL; << 53 */ << 54 const char *get_arch_regstr(unsigned int n) 29 const char *get_arch_regstr(unsigned int n) 55 { 30 { 56 const struct pt_regs_dwarfnum *roff; !! 31 if (n < 32) 57 for (roff = regdwarfnum_table; roff->n !! 32 return mips_gpr_names[n]; 58 if (roff->dwarfnum == n) !! 33 if (n == 64) 59 return roff->name; !! 34 return "hi"; >> 35 if (n == 65) >> 36 return "lo"; 60 return NULL; 37 return NULL; 61 } 38 } 62 39
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.