diff options
author | Frank Ch. Eigler <fche@redhat.com> | 2000-05-08 23:07:39 +0000 |
---|---|---|
committer | Frank Ch. Eigler <fche@redhat.com> | 2000-05-08 23:07:39 +0000 |
commit | 7d350a58e4d85e44001c6b89b46851676ec2149a (patch) | |
tree | 2324fddf3fe61323124253426a27215bf861d5d5 /sim/v850 | |
parent | 06e88976646d3153cbc10da33189ac804ba48c1b (diff) | |
download | gdb-7d350a58e4d85e44001c6b89b46851676ec2149a.tar.gz |
* merge from internal tree
2000-04-14 Gary Thomas <gthomas@redhat.com>
* v850.igen: Define 'br *' as illegal since this is the only
way to provide a breakpoint on some v850 family processors.
Diffstat (limited to 'sim/v850')
-rw-r--r-- | sim/v850/ChangeLog | 5 | ||||
-rw-r--r-- | sim/v850/v850.igen | 19 |
2 files changed, 20 insertions, 4 deletions
diff --git a/sim/v850/ChangeLog b/sim/v850/ChangeLog index 8a826f5d027..cc69829f56a 100644 --- a/sim/v850/ChangeLog +++ b/sim/v850/ChangeLog @@ -1,3 +1,8 @@ +2000-04-14 Gary Thomas <gthomas@redhat.com> + + * v850.igen: Define 'br *' as illegal since this is the only + way to provide a breakpoint on some v850 family processors. + 2000-03-24 Frank Ch. Eigler <fche@redhat.com> * v850.igen (ilgop): New insn pattern for four-byte breakpoints. diff --git a/sim/v850/v850.igen b/sim/v850/v850.igen index eace5a1b132..7fe5370684d 100644 --- a/sim/v850/v850.igen +++ b/sim/v850/v850.igen @@ -144,10 +144,16 @@ rrrrr,110110,RRRRR + iiiiiiiiiiiiiiii:VI:::andi ddddd,1011,ddd,cccc:III:::Bcond "b%s<cccc> <disp9>" { - int cond = condition_met (cccc); - if (cond) - nia = cia + disp9; - TRACE_BRANCH1 (cond); + int cond; + if ((ddddd == 0x00) && (ddd == 0x00) && (cccc == 0x05)) { + // Special case - treat "br *" like illegal instruction + sim_engine_halt (SD, CPU, NULL, cia, sim_stopped, SIM_SIGTRAP); + } else { + cond = condition_met (cccc); + if (cond) + nia = cia + disp9; + TRACE_BRANCH1 (cond); + } } @@ -1158,6 +1164,11 @@ rrrrr,110101,RRRRR + iiiiiiiiiiiiiiii:VI:::xori sim_engine_halt (SD, CPU, NULL, cia, sim_stopped, SIM_SIGTRAP); } +// True illegal instruction +00000,111111,00000 + 00000,11111,100000:X:::ilgop +{ + sim_engine_halt (SD, CPU, NULL, cia, sim_stopped, SIM_SIGTRAP); +} // DIVHN |