1/* 2 * Copyright (c) 2013 Andreas Sandberg 3 * All rights reserved 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 540 unchanged lines hidden (view full) --- 549 550void 551X86KvmCPU::startup() 552{ 553 BaseKvmCPU::startup(); 554 555 updateCPUID(); 556 |
557 // TODO: Do we need to create an identity mapped TSS area? We 558 // should call kvm.vm.setTSSAddress() here in that case. It should 559 // only be needed for old versions of the virtualization 560 // extensions. We should make sure that the identity range is 561 // reserved in the e820 memory map in that case. 562} 563 564void --- 774 unchanged lines hidden (view full) --- 1339 (port & 0x3)); 1340 } else { 1341 pAddr = X86ISA::x86IOAddress(port); 1342 } 1343 } else { 1344 pAddr = X86ISA::x86IOAddress(port); 1345 } 1346 |
1347 Request io_req(pAddr, kvm_run.io.size, Request::UNCACHEABLE, |
1348 dataMasterId()); |
1349 io_req.setThreadContext(tc->contextId(), 0); |
1350 1351 const MemCmd cmd(isWrite ? MemCmd::WriteReq : MemCmd::ReadReq); 1352 // Temporarily lock and migrate to the event queue of the 1353 // VM. This queue is assumed to "own" all devices we need to 1354 // access if running in multi-core mode. 1355 EventQueue::ScopedMigration migrate(vm.eventQueue()); 1356 for (int i = 0; i < count; ++i) { 1357 Packet pkt(&io_req, cmd); --- 271 unchanged lines hidden --- |