From: Aurelien Jarno <aurelien@aurel32.net>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH][SPARC] mem_address_not_aligned trap for unaligned PC
Date: Sun, 1 Apr 2007 19:02:49 +0200 [thread overview]
Message-ID: <20070401170248.GA3005@amd64.aurel32.net> (raw)
Hi all,
According to the SPARCv8 and SPARCv9 manuals, the jmpl, rett and return
instructions should generate a mem_address_not_aligned trap if either
of the low-order two bits of the target address is nonzero.
The patch below implements that.
Bye,
Aurelien
Index: target-sparc/cpu.h
===================================================================
RCS file: /sources/qemu/qemu/target-sparc/cpu.h,v
retrieving revision 1.32
diff -u -d -p -r1.32 cpu.h
--- target-sparc/cpu.h 1 Apr 2007 15:15:36 -0000 1.32
+++ target-sparc/cpu.h 1 Apr 2007 16:51:22 -0000
@@ -35,6 +35,7 @@
#define TT_NFPU_INSN 0x04
#define TT_WIN_OVF 0x05
#define TT_WIN_UNF 0x06
+#define TT_UNALIGNED 0x07
#define TT_FP_EXCP 0x08
#define TT_DFAULT 0x09
#define TT_TOVF 0x0a
@@ -55,6 +56,7 @@
#define TT_DFAULT 0x30
#define TT_DMISS 0x31
#define TT_DPROT 0x32
+#define TT_UNALIGNED 0x34
#define TT_PRIV_ACT 0x37
#define TT_EXTINT 0x40
#define TT_SPILL 0x80
Index: target-sparc/op.c
===================================================================
RCS file: /sources/qemu/qemu/target-sparc/op.c,v
retrieving revision 1.27
diff -u -d -p -r1.27 op.c
--- target-sparc/op.c 1 Apr 2007 15:38:17 -0000 1.27
+++ target-sparc/op.c 1 Apr 2007 17:01:15 -0000
@@ -1486,7 +1486,10 @@ void OPPROTO op_movl_npc_im(void)
void OPPROTO op_movl_npc_T0(void)
{
- env->npc = T0;
+ if (T0 & 0x3)
+ raise_exception(TT_UNALIGNED);
+ else
+ env->npc = T0;
}
void OPPROTO op_mov_pc_npc(void)
--
.''`. Aurelien Jarno | GPG: 1024D/F1BCDB73
: :' : Debian developer | Electrical Engineer
`. `' aurel32@debian.org | aurelien@aurel32.net
`- people.debian.org/~aurel32 | www.aurel32.net
next reply other threads:[~2007-04-01 17:05 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-04-01 17:02 Aurelien Jarno [this message]
2007-04-01 17:15 ` [Qemu-devel] [PATCH][SPARC] mem_address_not_aligned trap forunaligned PC Blue Swirl
2007-04-01 17:30 ` [Qemu-devel] [PATCH][SPARC] mem_address_not_aligned trap for unaligned PC Aurelien Jarno
2007-04-01 20:26 ` [Qemu-devel] [PATCH][SPARC] mem_address_not_aligned trap for unaligned PC and load/store Aurelien Jarno
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=20070401170248.GA3005@amd64.aurel32.net \
--to=aurelien@aurel32.net \
--cc=qemu-devel@nongnu.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;
as well as URLs for NNTP newsgroup(s).