69 uint32_t size = tran->size();
70 uint32_t type = tran->type();
71 uint64_t addr = tran->address();
72 uint8_t* ptr = tran->begin();
78 std::lock_guard<std::mutex> lock(mtx_);
81 addr4k = (addr / 0x1000) * 0x1000;
82 off4k = addr % 0x1000;
83 size4k = (addr4k + 0x1000) - (addr4k + off4k);
85 if (size4k > size) size4k = size;
89 if (memMap_.find(addr4k) == memMap_.end()) {
90 memMap_.insert(std::make_pair(addr4k,
reinterpret_cast<uint8_t*
>(malloc(0x1000))));
93 log_->debug(
"Allocating block at 0x%x. Total Blocks %i, Total Size = %i", addr4k, totAlloc_, totSize_);
100 memcpy(memMap_[addr4k] + off4k, ptr, size4k);
106 memcpy(ptr, memMap_[addr4k] + off4k, size4k);
115void rim::Emulate::setup_python() {
117 bp::class_<rim::Emulate, rim::EmulatePtr, bp::bases<rim::Slave>, boost::noncopyable>(
119 bp::init<uint32_t, uint32_t>());
120 bp::implicitly_convertible<rim::EmulatePtr, rim::SlavePtr>();