From: Tom de Vries Date: Fri, 7 Mar 2025 08:25:33 +0000 (+0100) Subject: [gdb/tdep] Factor out amd64_get_used_input_int_regs X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0c1eecdfc6348ec9213ebbb42ddce78fc197a428;p=thirdparty%2Fbinutils-gdb.git [gdb/tdep] Factor out amd64_get_used_input_int_regs The function amd64_get_unused_input_int_reg consists of two parts: - finding the used int registers in an insn, and - picking an unused int register. Factor out the first part as new function amd64_get_used_input_int_regs. No functional changes. Tested on x86_64-linux. --- diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c index 0c3eae14371..dd0fa06f354 100644 --- a/gdb/amd64-tdep.c +++ b/gdb/amd64-tdep.c @@ -1206,13 +1206,11 @@ amd64_skip_prefixes (gdb_byte *insn) return insn; } -/* Return an integer register in ALLOWED_REGS_MASK that is unused as an input - operand in INSN. The register numbering of the result follows architecture - ordering, e.g. RDI = 7. Return -1 if no register can be found. */ +/* Return a register mask for the integer registers that are used as an input + operand in INSN. */ -static int -amd64_get_unused_input_int_reg (const struct amd64_insn *details, - uint32_t allowed_regs_mask) +static uint32_t +amd64_get_used_input_int_regs (const struct amd64_insn *details) { /* 1 bit for each reg */ uint32_t used_regs_mask = 0; @@ -1255,6 +1253,19 @@ amd64_get_unused_input_int_reg (const struct amd64_insn *details, } gdb_assert (used_regs_mask < 256); + return used_regs_mask; +} + +/* Return an integer register in ALLOWED_REGS_MASK that is unused as an input + operand in INSN. The register numbering of the result follows architecture + ordering, e.g. RDI = 7. Return -1 if no register can be found. */ + +static int +amd64_get_unused_input_int_reg (const struct amd64_insn *details, + uint32_t allowed_regs_mask) +{ + /* 1 bit for each reg */ + uint32_t used_regs_mask = amd64_get_used_input_int_regs (details); /* Finally, find a free reg. */ {