aboutsummaryrefslogtreecommitdiff
path: root/sim/mips/mips3264r2.igen
diff options
context:
space:
mode:
Diffstat (limited to 'sim/mips/mips3264r2.igen')
-rw-r--r--sim/mips/mips3264r2.igen260
1 files changed, 0 insertions, 260 deletions
diff --git a/sim/mips/mips3264r2.igen b/sim/mips/mips3264r2.igen
deleted file mode 100644
index e0d1326..0000000
--- a/sim/mips/mips3264r2.igen
+++ /dev/null
@@ -1,260 +0,0 @@
-// -*- C -*-
-
-// Simulator definition for the MIPS 32/64 revision 2 instructions.
-// Copyright (C) 2004 Free Software Foundation, Inc.
-// Contributed by David Ung, of MIPS Technologies.
-//
-// This file is part of GDB, the GNU debugger.
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2, or (at your option)
-// any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with this program; if not, write to the Free Software Foundation, Inc.,
-// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-
-011111,5.RS,5.RT,5.SIZE,5.LSB,000011::64::DEXT
-"dext r<RT>, r<RS>, <LSB>, <SIZE+1>"
-*mips64r2:
-{
- check_u64 (SD_, instruction_0);
- TRACE_ALU_INPUT3 (GPR[RS], LSB, SIZE);
- GPR[RT] = EXTRACTED64 (GPR[RS], LSB + SIZE, LSB);
- TRACE_ALU_RESULT1 (GPR[RT]);
-}
-
-011111,5.RS,5.RT,5.SIZE,5.LSB,000001::64::DEXTM
-"dextm r<RT>, r<RS>, <LSB>, <SIZE+33>"
-*mips64r2:
-{
- check_u64 (SD_, instruction_0);
- TRACE_ALU_INPUT3 (GPR[RS], LSB, SIZE);
- GPR[RT] = EXTRACTED64 (GPR[RS], LSB + SIZE + 32, LSB);
- TRACE_ALU_RESULT1 (GPR[RT]);
-}
-
-011111,5.RS,5.RT,5.SIZE,5.LSB,000010::64::DEXTU
-"dextu r<RT>, r<RS>, <LSB+32>, <SIZE+1>"
-*mips64r2:
-{
- check_u64 (SD_, instruction_0);
- TRACE_ALU_INPUT3 (GPR[RS], LSB, SIZE);
- GPR[RT] = EXTRACTED64 (GPR[RS], LSB + 32 + SIZE, LSB + 32);
- TRACE_ALU_RESULT1 (GPR[RT]);
-}
-
-
-010000,01011,5.RT,01100,00000,0,00,000::32::DI
-"di":RT == 0
-"di r<RT>"
-*mips32r2:
-*mips64r2:
-{
- TRACE_ALU_INPUT0 ();
- GPR[RT] = EXTEND32 (SR);
- SR &= ~status_IE;
- TRACE_ALU_RESULT1 (GPR[RT]);
-}
-
-
-011111,5.RS,5.RT,5.MSB,5.LSB,000111::64::DINS
-"dins r<RT>, r<RS>, <LSB>, <MSB-LSB+1>"
-*mips64r2:
-{
- check_u64 (SD_, instruction_0);
- TRACE_ALU_INPUT4 (GPR[RT], GPR[RS], LSB, MSB);
- if (LSB <= MSB)
- GPR[RT] ^= (GPR[RT] ^ (GPR[RS] << LSB)) & MASK64 (MSB, LSB);
- TRACE_ALU_RESULT1 (GPR[RT]);
-}
-
-011111,5.RS,5.RT,5.MSB,5.LSB,000101::64::DINSM
-"dinsm r<RT>, r<RS>, <LSB>, <MSB+32-LSB+1>"
-*mips64r2:
-{
- check_u64 (SD_, instruction_0);
- TRACE_ALU_INPUT4 (GPR[RT], GPR[RS], LSB, MSB);
- if (LSB <= MSB + 32)
- GPR[RT] ^= (GPR[RT] ^ (GPR[RS] << LSB)) & MASK64 (MSB + 32, LSB);
- TRACE_ALU_RESULT1 (GPR[RT]);
-}
-
-011111,5.RS,5.RT,5.MSB,5.LSB,000110::64::DINSU
-"dinsu r<RT>, r<RS>, <LSB+32>, <MSB-LSB+1>"
-*mips64r2:
-{
- check_u64 (SD_, instruction_0);
- TRACE_ALU_INPUT4 (GPR[RT], GPR[RS], LSB, MSB);
- if (LSB <= MSB)
- GPR[RT] ^= (GPR[RT] ^ (GPR[RS] << (LSB + 32)))
- & MASK64 (MSB + 32, LSB + 32);
- TRACE_ALU_RESULT1 (GPR[RT]);
-}
-
-
-011111,00000,5.RT,5.RD,00010,100100::64::DSBH
-"dsbh r<RD>, r<RT>"
-*mips64r2:
-{
- union { unsigned64 d; unsigned16 h[4]; } u;
- check_u64 (SD_, instruction_0);
- TRACE_ALU_INPUT1 (GPR[RT]);
- u.d = GPR[RT];
- u.h[0] = SWAP_2 (u.h[0]);
- u.h[1] = SWAP_2 (u.h[1]);
- u.h[2] = SWAP_2 (u.h[2]);
- u.h[3] = SWAP_2 (u.h[3]);
- GPR[RD] = u.d;
- TRACE_ALU_RESULT1 (GPR[RD]);
-}
-
-011111,00000,5.RT,5.RD,00101,100100::64::DSHD
-"dshd r<RD>, r<RT>"
-*mips64r2:
-{
- unsigned64 d;
- check_u64 (SD_, instruction_0);
- TRACE_ALU_INPUT1 (GPR[RT]);
- d = GPR[RT];
- GPR[RD] = ((d >> 48)
- | (d << 48)
- | ((d & 0x0000ffff00000000) >> 16)
- | ((d & 0x00000000ffff0000) << 16));
- TRACE_ALU_RESULT1 (GPR[RD]);
-}
-
-
-010000,01011,5.RT,01100,00000,1,00,000::32::EI
-"ei":RT == 0
-"ei r<RT>"
-*mips32r2:
-*mips64r2:
-{
- TRACE_ALU_INPUT0 ();
- GPR[RT] = EXTEND32 (SR);
- SR |= status_IE;
- TRACE_ALU_RESULT1 (GPR[RT]);
-}
-
-
-011111,5.RS,5.RT,5.SIZE,5.LSB,000000::32::EXT
-"ext r<RT>, r<RS>, <LSB>, <SIZE+1>"
-*mips32r2:
-*mips64r2:
-{
- TRACE_ALU_INPUT3 (GPR[RS], LSB, SIZE);
- GPR[RT] = EXTEND32 (EXTRACTED32 (GPR[RS], LSB + SIZE, LSB));
- TRACE_ALU_RESULT1 (GPR[RT]);
-}
-
-
-010001,00011,5.RT,5.FS,00000000000:COP1Sa:32,f::MFHC1
-"mfhc1 r<RT>, f<FS>"
-*mips32r2:
-*mips64r2:
-{
- check_fpu (SD_);
- if (SizeFGR() == 64)
- GPR[RT] = EXTEND32 (WORD64HI (FGR[FS]));
- else if ((FS & 0x1) == 0)
- GPR[RT] = EXTEND32 (FGR[FS + 1]);
- else
- {
- if (STATE_VERBOSE_P(SD))
- sim_io_eprintf (SD,
- "Warning: PC 0x%lx: MFHC1 32-bit use of odd FPR number\n",
- (long) CIA);
- GPR[RT] = EXTEND32 (0xBADF00D);
- }
- TRACE_ALU_RESULT (GPR[RT]);
-}
-
-010001,00111,5.RT,5.FS,00000000000:COP1Sa:32,f::MTHC1
-"mthc1 r<RT>, f<FS>"
-*mips32r2:
-*mips64r2:
-{
- check_fpu (SD_);
- if (SizeFGR() == 64)
- StoreFPR (FS, fmt_uninterpreted_64, SET64HI (GPR[RT]) | VL4_8 (FGR[FS]));
- else if ((FS & 0x1) == 0)
- StoreFPR (FS + 1, fmt_uninterpreted_32, VL4_8 (GPR[RT]));
- else
- {
- if (STATE_VERBOSE_P(SD))
- sim_io_eprintf (SD,
- "Warning: PC 0x%lx: MTHC1 32-bit use of odd FPR number\n",
- (long) CIA);
- StoreFPR (FS, fmt_uninterpreted_32, 0xDEADC0DE);
- }
- TRACE_FP_RESULT (GPR[RT]);
-}
-
-
-011111,5.RS,5.RT,5.MSB,5.LSB,000100::32::INS
-"ins r<RT>, r<RS>, <LSB>, <MSB-LSB+1>"
-*mips32r2:
-*mips64r2:
-{
- TRACE_ALU_INPUT4 (GPR[RT], GPR[RS], LSB, MSB);
- if (LSB <= MSB)
- GPR[RT] = EXTEND32 (GPR[RT] ^
- ((GPR[RT] ^ (GPR[RS] << LSB)) & MASK32 (MSB, LSB)));
- TRACE_ALU_RESULT1 (GPR[RT]);
-}
-
-
-011111,00000,5.RT,5.RD,10000,100000::32::SEB
-"seb r<RD>, r<RT>"
-*mips32r2:
-*mips64r2:
-{
- TRACE_ALU_INPUT1 (GPR[RT]);
- GPR[RD] = EXTEND8 (GPR[RT]);
- TRACE_ALU_RESULT1 (GPR[RD]);
-}
-
-011111,00000,5.RT,5.RD,11000,100000::32::SEH
-"seh r<RD>, r<RT>"
-*mips32r2:
-*mips64r2:
-{
- TRACE_ALU_INPUT1 (GPR[RT]);
- GPR[RD] = EXTEND16 (GPR[RT]);
- TRACE_ALU_RESULT1 (GPR[RD]);
-}
-
-
-000001,5.BASE,11111,16.OFFSET::32::SYNCI
-"synci <OFFSET>(r<BASE>)"
-*mips32r2:
-*mips64r2:
-{
- // sync i-cache - nothing to do currently
-}
-
-
-011111,00000,5.RT,5.RD,00010,100000::32::WSBH
-"wsbh r<RD>, r<RT>"
-*mips32r2:
-*mips64r2:
-{
- union { unsigned32 w; unsigned16 h[2]; } u;
- TRACE_ALU_INPUT1 (GPR[RT]);
- u.w = GPR[RT];
- u.h[0] = SWAP_2 (u.h[0]);
- u.h[1] = SWAP_2 (u.h[1]);
- GPR[RD] = EXTEND32 (u.w);
- TRACE_ALU_RESULT1 (GPR[RD]);
-}
-
-
-