aboutsummaryrefslogtreecommitdiff
path: root/sim/v850/v850.igen
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>1997-09-17 08:14:23 +0000
committerAndrew Cagney <cagney@redhat.com>1997-09-17 08:14:23 +0000
commita72f8fb439a16152c6c03d1e07c4fbec9c6a85dc (patch)
tree0668a8fbabd7aabcbb86f31be8f8e5a9638880ed /sim/v850/v850.igen
parent175c6fd37579ff6cd9dd44055cfa60087c1b515f (diff)
downloadfsf-binutils-gdb-a72f8fb439a16152c6c03d1e07c4fbec9c6a85dc.zip
fsf-binutils-gdb-a72f8fb439a16152c6c03d1e07c4fbec9c6a85dc.tar.gz
fsf-binutils-gdb-a72f8fb439a16152c6c03d1e07c4fbec9c6a85dc.tar.bz2
Clean up more tracing.
FIX interrupt delivery - was zapping PSW before it had been saved. FIX interrupt return, was one instruction out.
Diffstat (limited to 'sim/v850/v850.igen')
-rw-r--r--sim/v850/v850.igen24
1 files changed, 21 insertions, 3 deletions
diff --git a/sim/v850/v850.igen b/sim/v850/v850.igen
index eb7451a..fd45a30 100644
--- a/sim/v850/v850.igen
+++ b/sim/v850/v850.igen
@@ -631,9 +631,12 @@ regID,111111,RRRRR + 0000000000100000:IX:::ldsr
rrrrr!0,000000,RRRRR:I:::mov
"mov r<reg1>, r<reg2>"
{
- COMPAT_1 (OP_0 ());
+ TRACE_ALU_INPUT0 ();
+ GR[reg2] = GR[reg1];
+ TRACE_ALU_RESULT (GR[reg2]);
}
+
rrrrr!0,010000,iiiii:II:::mov
"mov <imm5>, r<reg2>"
{
@@ -757,7 +760,7 @@ rrrrr,111111,iiiii + wwwww,01001,IIII,10:XII:::mulu
0000000000000000:I:::nop
"nop"
{
- COMPAT_1 (OP_0 ());
+ /* do nothing, trace nothing */
}
@@ -886,7 +889,22 @@ rrrrr,110100,RRRRR + iiiiiiiiiiiiiiii:VI:::ori
0000011111100000 + 0000000101000000:X:::reti
"reti"
{
- COMPAT_2 (OP_14007E0 ());
+ if ((PSW & PSW_EP))
+ {
+ nia = (EIPC & ~1);
+ PSW = EIPSW;
+ }
+ else if ((PSW & PSW_NP))
+ {
+ nia = (FEPC & ~1);
+ PSW = FEPSW;
+ }
+ else
+ {
+ nia = (EIPC & ~1);
+ PSW = EIPSW;
+ }
+ TRACE_BRANCH1 (PSW);
}