opcodes: microblaze: Add hibernate and suspend instructions
authorNeal frager <neal.frager@amd.com>
Wed, 4 Oct 2023 15:35:44 +0000 (16:35 +0100)
committerNick Clifton <nickc@redhat.com>
Wed, 4 Oct 2023 15:35:44 +0000 (16:35 +0100)
opcodes/ChangeLog
opcodes/microblaze-opc.h
opcodes/microblaze-opcm.h

index 47c23e05c4fe9bb7462d99eedad15541697e19c5..028091538593d9aa54239b137b551d5161dc4a44 100644 (file)
@@ -1,3 +1,10 @@
+2023-10-04  Neal frager  <neal.frager@amd.com>
+
+       * opcodes/microblaze-opc.h (struct op_code_struct): Add hiberante
+       and suspend entries.
+       * microblaze-opcm.h (enum microblaze_instr): Add microblaze_sleep,
+       hibernate, suspend entries.
+
 2023-08-24  Tom Tromey  <tom@tromey.com>
 
        * cgen.sh: Don't pass "-s" to cgen.
index 7c70c80a27b47d5d728436808cdc36b6d66f636d..6b9701bb67c34f02f29c6021ed53e40cb1abad52 100644 (file)
@@ -405,6 +405,8 @@ const struct op_code_struct
   {"clz",       INST_TYPE_RD_R1, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x900000E0, OPCODE_MASK_H34,  clz,       special_inst },
   {"mbar",      INST_TYPE_IMM5,  INST_PC_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xB8020004, OPCODE_MASK_HN,   mbar,      special_inst },
   {"sleep",     INST_TYPE_NONE,  INST_PC_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xBA020004, OPCODE_MASK_HN,   invalid_inst, special_inst }, /* translates to mbar 16.  */
+  {"hibernate", INST_TYPE_NONE,  INST_PC_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xB9020004, OPCODE_MASK_HN,   invalid_inst, special_inst }, /* translates to mbar 8.   */
+  {"suspend",   INST_TYPE_NONE,  INST_PC_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xBB020004, OPCODE_MASK_HN,   invalid_inst, special_inst }, /* translates to mbar 24.  */
   {"swapb",     INST_TYPE_RD_R1, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x900001E0, OPCODE_MASK_H4,   swapb,     arithmetic_inst },
   {"swaph",     INST_TYPE_RD_R1, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x900001E2, OPCODE_MASK_H4,   swaph,     arithmetic_inst },
   {"", 0, 0, 0, 0, 0, 0, 0, 0},
index 92c245dc0fd8ab97a559043d933aa70cd20befba..9d1df0814d9542050897d3520dab6f7739f4753c 100644 (file)
@@ -27,7 +27,7 @@ enum microblaze_instr
 {
   add, rsub, addc, rsubc, addk, rsubk, addkc, rsubkc, clz, cmp, cmpu,
   addi, rsubi, addic, rsubic, addik, rsubik, addikc, rsubikc, mul,
-  mulh, mulhu, mulhsu,swapb,swaph,
+  mulh, mulhu, mulhsu, swapb, swaph,
   idiv, idivu, bsll, bsra, bsrl, get, put, nget, nput, cget, cput,
   ncget, ncput, muli, bslli, bsrai, bsrli, mului,
   /* 'or/and/xor' are C++ keywords.  */
@@ -59,6 +59,9 @@ enum microblaze_instr
   aputd, taputd, caputd, tcaputd, naputd, tnaputd, ncaputd, tncaputd,
   eagetd, teagetd, ecagetd, tecagetd, neagetd, tneagetd, necagetd, tnecagetd,
   eaputd, teaputd, ecaputd, tecaputd, neaputd, tneaputd, necaputd, tnecaputd,
+  /* 'sleep' is a Posix symbol.  */
+  microblaze_sleep,
+  hibernate, suspend,
   invalid_inst
 };