This commit was manufactured by cvs2svn to create branch
[external/binutils.git] / sim / sh / gencode.c
index 02605fc..8e2445a 100644 (file)
@@ -41,9 +41,7 @@ typedef struct
   char *code;
   char *stuff[MAX_NR_STUFF];
   int index;
-}
-
-op;
+} op;
 
 
 op tab[] =
@@ -579,7 +577,7 @@ op tab[] =
   },
 
   { "", "nm", "mac.l @<REG_M>+,@<REG_N>+", "0000nnnnmmmm1111",
-    "trap (255,R0,memory,maskl,maskw, endianw);",
+    "trap (255, R0, PC, memory, maskl, maskw, endianw);",
     "/* FIXME: mac.l support */",
   },
 
@@ -953,8 +951,7 @@ op tab[] =
   },
 
   { "", "", "sleep", "0000000000011011",
-    "nip = PC;",
-    "trap (0xc3, R0, memory, maskl, maskw, endianw);",
+    "nip += trap (0xc3, R0, PC, memory, maskl, maskw, endianw);",
   },
 
   { "n", "", "stc <CREG_M>,<REG_N>", "0000nnnnmmmm0010",
@@ -1031,37 +1028,25 @@ op tab[] =
   },
 
   { "0", "", "trapa #<imm>", "11000011i8*1....", 
-#if 0
-    /* SH-[12] */
     "long imm = 0xff & i;",
-    "if (i==0xc3)",
-    "  PC-=2;",
-    "if (i<20||i==34||i==0xc3)",
-    "  trap(i,R,memory,maskl,maskw,endianw);",
+    "if (i < 20 || i == 33 || i == 34 || i == 0xc3)",
+    "  nip += trap (i, R, PC, memory, maskl, maskw,endianw);",
+#if 0
     "else {",
+    /* SH-[12] */
     "  R[15]-=4;",
-    "  WLAT(R[15],GET_SR());",
+    "  WLAT (R[15], GET_SR());",
     "  R[15]-=4;",
-    "  WLAT(R[15],PC+2);",
-    "  PC=RLAT(VBR+(imm<<2))-2;",
-    "}",
+    "  WLAT (R[15], PH2T (PC + 2));",
 #else
-    "if (i == 0xc3)",
-    "  {",
-    "    nip = PC;",
-    "    trap (i, R, memory, maskl, maskw,endianw);",
-    "  }",
-    "else if (i < 20 || i==34 || i==0xc3)",
-    "  trap (i, R, memory, maskl, maskw,endianw);",
     "else if (!SR_BL) {",
-    "  /* FIXME: TRA = (imm << 2); */",
     "  SSR = GET_SR();",
     "  SPC = PH2T (PC + 2);",
     "  SET_SR (GET_SR() | SR_MASK_MD | SR_MASK_BL | SR_MASK_RB);",
     "  /* FIXME: EXPEVT = 0x00000160; */",
-    "  SET_NIP (PT2H (VBR + 0x00000100));",
-    "}",
 #endif
+    "  SET_NIP (PT2H (RLAT (VBR + (imm<<2))));",
+    "}",
   },
 
   { "", "mn", "tst <REG_M>,<REG_N>", "0010nnnnmmmm1000",
@@ -1321,7 +1306,7 @@ op ppi_tab[] =
     "  res = Sz << i;",
     "else if (i >= 128 - 16)",
     "  res = Sz >> 128 - i;",
-    "else"
+    "else",
     "  {",
     "    RAISE_EXCEPTION (SIGILL);",
     "    return;",
@@ -1336,7 +1321,7 @@ op ppi_tab[] =
     "",
     "if (i < 32)",
     "  {",
-    "    if (i == 32)"
+    "    if (i == 32)",
     "      {",
     "        res = 0;",
     "        res_grd = Sz;",
@@ -1352,7 +1337,7 @@ op ppi_tab[] =
     "else if (i >= 96)",
     "  {",
     "    i = 128 - i;",
-    "    if (i == 32)"
+    "    if (i == 32)",
     "      {",
     "        res_grd = SIGN32 (Sz_grd);",
     "        res = Sz_grd;",
@@ -1364,7 +1349,7 @@ op ppi_tab[] =
     "      }",
     "    carry = Sz >> (i - 1) & 1;",
     "  }",
-    "else"
+    "else",
     "  {",
     "    RAISE_EXCEPTION (SIGILL);",
     "    return;",
@@ -1540,7 +1525,7 @@ op ppi_tab[] =
     "  res = Sx << Sy;",
     "else if (Sy >= 128 - 16)",
     "  res = Sx >> 128 - Sy;",
-    "else"
+    "else",
     "  {",
     "    RAISE_EXCEPTION (SIGILL);",
     "    return;",
@@ -1554,7 +1539,7 @@ op ppi_tab[] =
     "",
     "if (Sy < 32)",
     "  {",
-    "    if (Sy == 32)"
+    "    if (Sy == 32)",
     "      {",
     "        res = 0;",
     "        res_grd = Sx;",
@@ -1570,7 +1555,7 @@ op ppi_tab[] =
     "else if (Sy >= 96)",
     "  {",
     "    Sy = 128 - Sy;",
-    "    if (Sy == 32)"
+    "    if (Sy == 32)",
     "      {",
     "        res_grd = SIGN32 (Sx_grd);",
     "        res = Sx_grd;",
@@ -1582,7 +1567,7 @@ op ppi_tab[] =
     "      }",
     "    carry = Sx >> (Sy - 1) & 1;",
     "  }",
-    "else"
+    "else",
     "  {",
     "    RAISE_EXCEPTION (SIGILL);",
     "    return;",
@@ -1694,7 +1679,7 @@ op ppi_tab[] =
   { "","", "(if cc) pdmsb Sx,Dz",      "100111ccxx..zzzz",
     "unsigned Sx = DSP_R (x);",
     "int Sx_grd = GET_DSP_GRD (x);",
-    "int i = 16;"
+    "int i = 16;",
     "",
     "if (Sx_grd < 0)",
     "  {",
@@ -1710,7 +1695,7 @@ op ppi_tab[] =
     "  res = 30;",
     "else",
     "  res = 31;",
-    "do"
+    "do",
     "  {",
     "    if (Sx & ~0 << i)",
     "      {",
@@ -1727,13 +1712,13 @@ op ppi_tab[] =
   },
   { "","", "(if cc) pdmsb Sy,Dz",      "101111cc..yyzzzz",
     "unsigned Sy = DSP_R (y);",
-    "int i;"
+    "int i;",
     "",
     "if (Sy < 0)",
     "  Sy = ~Sy;",
     "Sy <<= 1;",
     "res = 31;",
-    "do"
+    "do",
     "  {",
     "    if (Sy & ~0 << i)",
     "      {",