From: Corinna Vinschen <vinschen@redhat.com>
To: gdb-patches@sources.redhat.com
Subject: [PATCH]: SH 2a - Part 3: Bank register handling
Date: Thu, 09 Sep 2004 12:44:00 -0000 [thread overview]
Message-ID: <20040909124516.GA7886@cygbert.vinschen.de> (raw)
Hi,
this is SH 2a patch 2. It handles the "bank" pseudo register so
that reading and writing is performed on the correct register set
inside of the register banks.
Corinna
* sh-tdep.c (sh_pseudo_register_read): Add PSEUDO_BANK_REGNUM handling.
(sh_pseudo_register_write): Ditto.
--- sh-tdep.c.2 2004-09-08 18:35:04.000000000 +0200
+++ sh-tdep.c 2004-09-08 18:35:31.000000000 +0200
@@ -1866,6 +1866,9 @@ sh_pseudo_register_read (struct gdbarch
int base_regnum, portion;
char temp_buffer[MAX_REGISTER_SIZE];
+ if (reg_nr == PSEUDO_BANK_REGNUM)
+ regcache_raw_read (regcache, BANK_REGNUM, buffer);
+ else
if (reg_nr >= DR0_REGNUM && reg_nr <= DR_LAST_REGNUM)
{
base_regnum = dr_reg_base_num (reg_nr);
@@ -1902,7 +1905,19 @@ sh_pseudo_register_write (struct gdbarch
int base_regnum, portion;
char temp_buffer[MAX_REGISTER_SIZE];
- if (reg_nr >= DR0_REGNUM && reg_nr <= DR_LAST_REGNUM)
+ if (reg_nr == PSEUDO_BANK_REGNUM)
+ {
+ /* When the bank register is written to, the whole register bank
+ is switched and all values in the bank registers must be read
+ from the target/sim again. We're just invalidating the regcache
+ so that a re-read happens next time it's necessary. */
+ int bregnum;
+
+ regcache_raw_write (regcache, BANK_REGNUM, buffer);
+ for (bregnum = R0_BANK0_REGNUM; bregnum < MACLB_REGNUM; ++bregnum)
+ set_register_cached (bregnum, 0);
+ }
+ else if (reg_nr >= DR0_REGNUM && reg_nr <= DR_LAST_REGNUM)
{
base_regnum = dr_reg_base_num (reg_nr);
--
Corinna Vinschen
Cygwin Project Co-Leader
Red Hat, Inc.
next reply other threads:[~2004-09-09 12:44 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-09-09 12:44 Corinna Vinschen [this message]
2004-10-05 20:09 ` Elena Zannoni
2004-10-06 8:58 ` Corinna Vinschen
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=20040909124516.GA7886@cygbert.vinschen.de \
--to=vinschen@redhat.com \
--cc=gdb-patches@sources.redhat.com \
/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