diff --git a/tool/CommandRegWrite.cpp b/tool/CommandRegWrite.cpp
index 4c8710b6bcd2d7cabd3d626e4352701b4fd30257..31484ca3f8118f647d01022cd6f94a5fdf2ba35e 100644
--- a/tool/CommandRegWrite.cpp
+++ b/tool/CommandRegWrite.cpp
@@ -146,6 +146,10 @@ void CommandRegWrite::execute(MasterDevice &m, const StringVector &args)
 				int32_t val;
 				strValue >> val;
 				*(int32_t *) data.data = cpu_to_le32(val);
+			} else if (dataType->name == "int64") {
+				int64_t val;
+				strValue >> val;
+				*(int64_t *) data.data = cpu_to_le64(val);
 			} else if (dataType->name == "uint8") {
 				uint16_t val; // uint8_t is interpreted as char
 				strValue >> val;
@@ -160,6 +164,10 @@ void CommandRegWrite::execute(MasterDevice &m, const StringVector &args)
 				uint32_t val;
 				strValue >> val;
 				*(uint32_t *) data.data = cpu_to_le32(val);
+			} else if (dataType->name == "uint64") {
+				uint64_t val;
+				strValue >> val;
+				*(uint64_t *) data.data = cpu_to_le64(val);
 			} else if (dataType->name == "string" ||
 					dataType->name == "octet_string") {
 				data.length = strValue.str().size();