aboutsummaryrefslogtreecommitdiff
path: root/disas
diff options
context:
space:
mode:
authorAleksandar Markovic <amarkovic@wavecomp.com>2018-12-25 15:18:18 +0100
committerAleksandar Markovic <amarkovic@wavecomp.com>2019-01-03 17:52:52 +0100
commit6ab8abfcde46dba211732ab860be9afba2b54399 (patch)
treea7dcc4b934b3a7030eb2f47980ef428f34e93677 /disas
parent8191856b5779686c61403e6a9a2c029cc4900876 (diff)
downloadqemu-6ab8abfcde46dba211732ab860be9afba2b54399.zip
qemu-6ab8abfcde46dba211732ab860be9afba2b54399.tar.gz
qemu-6ab8abfcde46dba211732ab860be9afba2b54399.tar.bz2
disas: nanoMIPS: Comment the decoder of 'gpr3.src.store' gpr encoding type
Comment the decoder of 'gpr3.src.store' gpr encoding type in nanoMIPS disassembler. Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com> Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
Diffstat (limited to 'disas')
-rw-r--r--disas/nanomips.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/disas/nanomips.cpp b/disas/nanomips.cpp
index 7c56162..1c313f3 100644
--- a/disas/nanomips.cpp
+++ b/disas/nanomips.cpp
@@ -349,6 +349,38 @@ uint64 NMD::decode_gpr_gpr3(uint64 d)
}
+/*
+ * NMD::decode_gpr_gpr3_src_store() - decoder for 'gpr3.src.store' gpr encoding
+ * type
+ *
+ * Map a 3-bit code to the 5-bit register space according to this pattern:
+ *
+ * 7 6 5 4 3 2 1 0
+ * | | | | | | | |
+ * | | | | | | | └-----------------------┐
+ * | | | └-----------------------┐ |
+ * | | └-----------------------┐ | |
+ * | └-----------------------┐ | | |
+ * └-----------------------┐ | | | |
+ * | | | | | | | |
+ * ┌-------┘ | | | | | | |
+ * | ┌-------┘ | | | | | |
+ * | | ┌-------┘ | | | | |
+ * | | | | | | | |
+ * | | | | | | | |
+ * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+ * 3 2 1 0
+ *
+ * This pattern is the same one used for 'gpr3' gpr encoding type, except for
+ * the input value 0, that is mapped to the output value 0 instead of 16.
+ *
+ * Used in handling following instructions:
+ *
+ * - SB[16]
+ * - SH[16]
+ * - SW[16]
+ * - SW[GP16]
+ */
uint64 NMD::decode_gpr_gpr3_src_store(uint64 d)
{
static uint64 register_list[] = { 0, 17, 18, 19, 4, 5, 6, 7 };