1*b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0 2eaaaeef3SPaul Mundt #include <linux/ptrace.h> 3eaaaeef3SPaul Mundt 4eaaaeef3SPaul Mundt /** 5eaaaeef3SPaul Mundt * regs_query_register_offset() - query register offset from its name 6eaaaeef3SPaul Mundt * @name: the name of a register 7eaaaeef3SPaul Mundt * 8eaaaeef3SPaul Mundt * regs_query_register_offset() returns the offset of a register in struct 9eaaaeef3SPaul Mundt * pt_regs from its name. If the name is invalid, this returns -EINVAL; 10eaaaeef3SPaul Mundt */ regs_query_register_offset(const char * name)11eaaaeef3SPaul Mundtint regs_query_register_offset(const char *name) 12eaaaeef3SPaul Mundt { 13eaaaeef3SPaul Mundt const struct pt_regs_offset *roff; 14eaaaeef3SPaul Mundt for (roff = regoffset_table; roff->name != NULL; roff++) 15eaaaeef3SPaul Mundt if (!strcmp(roff->name, name)) 16eaaaeef3SPaul Mundt return roff->offset; 17eaaaeef3SPaul Mundt return -EINVAL; 18eaaaeef3SPaul Mundt } 19eaaaeef3SPaul Mundt 20eaaaeef3SPaul Mundt /** 21eaaaeef3SPaul Mundt * regs_query_register_name() - query register name from its offset 22eaaaeef3SPaul Mundt * @offset: the offset of a register in struct pt_regs. 23eaaaeef3SPaul Mundt * 24eaaaeef3SPaul Mundt * regs_query_register_name() returns the name of a register from its 25eaaaeef3SPaul Mundt * offset in struct pt_regs. If the @offset is invalid, this returns NULL; 26eaaaeef3SPaul Mundt */ regs_query_register_name(unsigned int offset)27eaaaeef3SPaul Mundtconst char *regs_query_register_name(unsigned int offset) 28eaaaeef3SPaul Mundt { 29eaaaeef3SPaul Mundt const struct pt_regs_offset *roff; 30eaaaeef3SPaul Mundt for (roff = regoffset_table; roff->name != NULL; roff++) 31eaaaeef3SPaul Mundt if (roff->offset == offset) 32eaaaeef3SPaul Mundt return roff->name; 33eaaaeef3SPaul Mundt return NULL; 34eaaaeef3SPaul Mundt } 35