sorting out bigendian/littleendian including in qemu
[soc.git] / src / soc / decoder / power_decoder.py
index b7d1bc1531ea435f67c4c7decd654d6643f68b4c..09cdd41241295d70c41aaab3bc0e8c664d4a950d 100644 (file)
@@ -343,13 +343,13 @@ class TopPowerDecoder(PowerDecoder):
     def elaborate(self, platform):
         m = PowerDecoder.elaborate(self, platform)
         comb = m.d.comb
-        # raw opcode in, byte-reverse it
-        raw_be = self.raw_opcode_in
+        # raw opcode in assumed to be in LE order: byte-reverse it to get BE
+        raw_le = self.raw_opcode_in
         l = []
         for i in range(0, self.width, 8):
-            l.append(raw_be[i:i+8])
+            l.append(raw_le[i:i+8])
         l.reverse()
-        raw_le = Cat(*l)
+        raw_be = Cat(*l)
         comb += self.opcode_in.eq(Mux(self.bigendian, raw_be, raw_le))
 
         # add all signal from commonly-used fields