diff --git a/mpact/sim/util/gdbserver/gdbserver.cc b/mpact/sim/util/gdbserver/gdbserver.cc
index b4d9ee9..7cf1dbf 100644
--- a/mpact/sim/util/gdbserver/gdbserver.cc
+++ b/mpact/sim/util/gdbserver/gdbserver.cc
@@ -95,6 +95,29 @@
   for (int i = 0; i < core_debug_interfaces_.size(); ++i) {
     halt_reasons_.push_back(*generic::CoreDebugInterface::HaltReason::kNone);
   }
+  // Get register widths for each register number.
+  auto xml_data = absl::StrSplit(debug_info_.GetGdbTargetXml(), '\n');
+  RE2 bitsize_re{R"re2(<reg\s.*bitsize\s*=\s*"(\d+)")re2"};
+  RE2 regnum_re{R"re2(<reg\s.*regnum\s*=\s*"(\d+)")re2"};
+  for (const auto& line : xml_data) {
+    std::string regnum_str;
+    int reg_num;
+    if (RE2::PartialMatch(line, regnum_re, &regnum_str)) {
+      if (!absl::SimpleAtoi(regnum_str, &reg_num)) {
+        continue;  // Skip line if no valid register number is found in the
+                   // line.
+      }
+    } else {
+      continue;  // Skip line if no register number is found in the line.
+    }
+    std::string bitsize_str;
+    int reg_bitsize;
+    if (RE2::PartialMatch(line, bitsize_re, &bitsize_str)) {
+      if (absl::SimpleAtoi(bitsize_str, &reg_bitsize)) {
+        reg_bitsize_map_[reg_num] = reg_bitsize;
+      }
+    }
+  }
 }
 
 GdbServer::~GdbServer() {
@@ -944,9 +967,16 @@
     return SendError(result.status().message());
   }
   std::string response;
+  int bitsize = result.value()->size<uint8_t>() * 8;
   for (const auto& byte : result.value()->Get<uint8_t>()) {
     absl::StrAppend(&response, absl::Hex(byte, absl::kZeroPad2));
   }
+  if (reg_bitsize_map_.contains(register_number) &&
+      reg_bitsize_map_[register_number] > bitsize) {
+    for (int i = 0; i < (reg_bitsize_map_[register_number] - bitsize); i += 8) {
+      absl::StrAppend(&response, "00");
+    }
+  }
   Respond(response);
 }
 
diff --git a/mpact/sim/util/gdbserver/gdbserver.h b/mpact/sim/util/gdbserver/gdbserver.h
index d2f90ad..c1e3b4d 100644
--- a/mpact/sim/util/gdbserver/gdbserver.h
+++ b/mpact/sim/util/gdbserver/gdbserver.h
@@ -181,6 +181,7 @@
   absl::flat_hash_map<char, int> thread_select_;
   absl::Span<generic::CoreDebugInterface*> core_debug_interfaces_;
   std::vector<int> halt_reasons_;
+  absl::flat_hash_map<int, int> reg_bitsize_map_;
   const DebugInfo& debug_info_;
   // Regular expressions used to parse GDB commands.
   // These are static since they are immutable once initialized.
