From: James Bowman <james.bowman@ftdichip.com>
To: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: [PATCH, FT32] Replace hard-coded instruction patterns with macros
Date: Mon, 28 Sep 2015 18:29:00 -0000 [thread overview]
Message-ID: <CA9BBF0458F83C4F9051448B941B57D11961DBC8@glaexch3> (raw)
The stack unwinder can now use FT32_*() macros to interpet binary
instructions instead of local definitions.
OK to apply?
2015-09-28 James Bowman <james.bowman@ftdichip.com>
* ft32-tdep.c: #include "opcode/ft32.h"
Delete local macro definitions
(ft32_analyze_prologue): Use FT32_* macros
diff --git a/gdb/ft32-tdep.c b/gdb/ft32-tdep.c
index e834279..00cf847 100644
--- a/gdb/ft32-tdep.c
+++ b/gdb/ft32-tdep.c
@@ -37,6 +37,8 @@
#include "dis-asm.h"
#include "record.h"
+#include "opcode/ft32.h"
+
#include "ft32-tdep.h"
#include "gdb/sim-ft32.h"
@@ -153,11 +155,6 @@ ft32_store_return_value (struct type *type, struct regcache *regcache,
Returns the address of the first instruction after the prologue. */
-#define IS_PUSH(inst) (((inst) & 0xfff00000) == 0x84000000)
-#define PUSH_REG(inst) (FT32_R0_REGNUM + (((inst) >> 15) & 0x1f))
-#define IS_LINK(inst) (((inst) & 0xffff0000) == 0x95d00000)
-#define LINK_SIZE(inst) ((inst) & 0xffff)
-
static CORE_ADDR
ft32_analyze_prologue (CORE_ADDR start_addr, CORE_ADDR end_addr,
struct ft32_frame_cache *cache,
@@ -180,9 +177,9 @@ ft32_analyze_prologue (CORE_ADDR start_addr, CORE_ADDR end_addr,
{
inst = read_memory_unsigned_integer (next_addr, 4, byte_order);
- if (IS_PUSH (inst))
+ if (FT32_IS_PUSH (inst))
{
- regnum = PUSH_REG (inst);
+ regnum = FT32_R0_REGNUM + FT32_PUSH_REG (inst);
cache->framesize += 4;
cache->saved_regs[regnum] = cache->framesize;
next_addr += 4;
@@ -201,7 +198,7 @@ ft32_analyze_prologue (CORE_ADDR start_addr, CORE_ADDR end_addr,
if (next_addr < end_addr)
{
inst = read_memory_unsigned_integer (next_addr, 4, byte_order);
- if (IS_LINK (inst))
+ if (FT32_IS_LINK (inst))
{
cache->established = 1;
for (regnum = FT32_R0_REGNUM; regnum < FT32_PC_REGNUM; regnum++)
@@ -211,7 +208,7 @@ ft32_analyze_prologue (CORE_ADDR start_addr, CORE_ADDR end_addr,
}
cache->saved_regs[FT32_PC_REGNUM] = cache->framesize + 4;
cache->saved_regs[FT32_FP_REGNUM] = 0;
- cache->framesize += LINK_SIZE (inst);
+ cache->framesize += FT32_LINK_SIZE (inst);
next_addr += 4;
}
}
next reply other threads:[~2015-09-28 18:29 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-28 18:29 James Bowman [this message]
2015-09-29 12:54 ` Yao Qi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CA9BBF0458F83C4F9051448B941B57D11961DBC8@glaexch3 \
--to=james.bowman@ftdichip.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox