No public description
PiperOrigin-RevId: 640182036
Change-Id: I4b1305a515ec68749eb64b0b4b5578191653b38d
diff --git a/cheriot/cheriot_top.cc b/cheriot/cheriot_top.cc
index 5beda12..90a2adb 100644
--- a/cheriot/cheriot_top.cc
+++ b/cheriot/cheriot_top.cc
@@ -393,6 +393,7 @@
halted_ = false;
halt_reason_ = *HaltReason::kNone;
need_to_step_over_ = false;
+ pc = next_pc;
continue;
}
break;
@@ -500,6 +501,7 @@
// Reset the halt reason and continue;
halted_ = false;
halt_reason_ = *HaltReason::kNone;
+ pc = next_pc;
continue;
}
break;
@@ -745,7 +747,8 @@
if (address > state_->max_physical_address()) {
return absl::InvalidArgumentError("Invalid memory address");
}
- length = std::min(length, state_->max_physical_address() - address + 1);
+ uint64_t length64 = static_cast<uint64_t>(length);
+ length = std::min(length64, state_->max_physical_address() - address + 1);
auto *tag_db = db_factory_.Allocate<uint8_t>(length);
state_->tagged_memory()->Load(address, nullptr, tag_db, nullptr, nullptr);
std::memcpy(buf, tag_db->raw_ptr(), length);
@@ -762,7 +765,8 @@
if (address > state_->max_physical_address()) {
return absl::InvalidArgumentError("Invalid memory address");
}
- length = std::min(length, state_->max_physical_address() - address + 1);
+ uint64_t length64 = static_cast<uint64_t>(length);
+ length = std::min(length64, state_->max_physical_address() - address + 1);
auto *db = db_factory_.Allocate(length);
std::memcpy(db->raw_ptr(), buffer, length);
// Store bypassing any watch points/semihosting.