diff options
author | Chris Demetriou <cgd@google.com> | 2003-01-14 19:01:41 +0000 |
---|---|---|
committer | Chris Demetriou <cgd@google.com> | 2003-01-14 19:01:41 +0000 |
commit | 646d56a41302c3ddb2782cc807b22199c4aa39b7 (patch) | |
tree | a7593b6b4515e269e10e91dc1774d9470bbf6de6 /sim/mips | |
parent | 324f507d6e1d5a222358ea8ecde3fa5bc12d4908 (diff) | |
download | gdb-646d56a41302c3ddb2782cc807b22199c4aa39b7.tar.gz |
2003-01-14 Chris Demetriou <cgd@broadcom.com>
* mips.igen (LUXC1, SUXC1): New, for mipsV and mips64.
Diffstat (limited to 'sim/mips')
-rw-r--r-- | sim/mips/ChangeLog | 4 | ||||
-rw-r--r-- | sim/mips/mips.igen | 34 |
2 files changed, 38 insertions, 0 deletions
diff --git a/sim/mips/ChangeLog b/sim/mips/ChangeLog index b9653ef7c78..0482ab2b0a2 100644 --- a/sim/mips/ChangeLog +++ b/sim/mips/ChangeLog @@ -1,5 +1,9 @@ 2003-01-14 Chris Demetriou <cgd@broadcom.com> + * mips.igen (LUXC1, SUXC1): New, for mipsV and mips64. + +2003-01-14 Chris Demetriou <cgd@broadcom.com> + * mips.igen (EI, DI): Remove. 2003-01-05 Richard Sandiford <rsandifo@redhat.com> diff --git a/sim/mips/mips.igen b/sim/mips/mips.igen index a4308761acf..81fb2001b27 100644 --- a/sim/mips/mips.igen +++ b/sim/mips/mips.igen @@ -4271,6 +4271,22 @@ } +010011,5.BASE,5.INDEX,5.0,5.FD,000101:COP1X:64,f::LUXC1 +"luxc1 f<FD>, r<INDEX>(r<BASE>)" +*mipsV: +*mips64: +{ + address_word base = GPR[BASE]; + address_word index = GPR[INDEX]; + address_word vaddr = base + index; + check_fpu (SD_); + check_u64 (SD_, instruction_0); + /* Arrange for the bottom 3 bits of (base + index) to be 0. */ + if ((vaddr & 0x7) != 0) + index -= (vaddr & 0x7); + COP_LD (1, FD, do_load (SD_, AccessLength_DOUBLEWORD, base, index)); +} + 110001,5.BASE,5.FT,16.OFFSET:COP1:32,f::LWC1 "lwc1 f<FT>, <OFFSET>(r<BASE>)" @@ -4743,6 +4759,24 @@ } +010011,5.BASE,5.INDEX,5.FS,00000,001101:COP1X:64,f::SUXC1 +"suxc1 f<FS>, r<INDEX>(r<BASE>)" +*mipsV: +*mips64: +{ + unsigned64 v; + address_word base = GPR[BASE]; + address_word index = GPR[INDEX]; + address_word vaddr = base + index; + check_fpu (SD_); + check_u64 (SD_, instruction_0); + /* Arrange for the bottom 3 bits of (base + index) to be 0. */ + if ((vaddr & 0x7) != 0) + index -= (vaddr & 0x7); + do_store (SD_, AccessLength_DOUBLEWORD, base, index, COP_SD (1, FS)); +} + + 010001,10,3.FMT,00000,5.FS,5.FD,000100:COP1:32,f::SQRT.fmt "sqrt.%s<FMT> f<FD>, f<FS>" *mipsII: |